Zarządzanie danymi identyfikatora instancji

Identyfikatory instancji identyfikują poszczególne instalacje Twojej aplikacji. Każdy identyfikator instancji jest unikalny dla konkretnej aplikacji i urządzenia, dlatego usługi Firebase umożliwiają odwoływanie się do konkretnych instancji aplikacji. Na przykład Cloud Messaging używa identyfikatorów instancji do określania, na które urządzenia mają być wysyłane wiadomości.

Niektóre usługi Firebase wykorzystują identyfikatory instancji do obsługi swoich funkcji:

  • Analityka
  • Crashlytics
  • Komunikacja w chmurze
  • Zdalna konfiguracja

Zarządzanie danymi aplikacji powiązanymi z identyfikatorami instancji

Usługi, które używają identyfikatorów instancji do identyfikowania instalacji, używają ich też jako klucza do powiązania odpowiednich danych z tym urządzeniem. Na przykład Crashlytics używa identyfikatorów instancji do rejestrowania awarii, które mają miejsce na urządzeniu, Zdalna konfiguracja używa ich do pobierania konfiguracji, a Analytics używa identyfikatorów instancji do śledzenia poszczególnych grup odbiorców.

Dane powiązane z identyfikatorami instancji zasadniczo nie umożliwiają identyfikacji konkretnej osoby, ale i tak warto dać użytkownikom możliwość zarządzania nimi. Dlatego Firebase udostępnia 2 sposoby zarządzania zbieraniem danych powiązanym z identyfikatorem instancji:

  • Usuń identyfikatory instancji. Identyfikator instancji możesz usunąć za pomocą wywołania interfejsu API po stronie serwera lub klienta. Usunięcie identyfikatora instancji powoduje skasowanie tego identyfikatora i wszystkich powiązanych z nim danych.
  • Wyłącz usługi generujące identyfikatory. Większość usług Firebase, które podczas uruchamiania korzystają z identyfikatorów instancji, automatycznie generuje nowy identyfikator, jeśli nie ma go na urządzeniu. Aby mieć pewność, że aplikacja nie będzie tworzyć niechcianych identyfikatorów instancji, wyłącz automatyczne inicjowanie tych usług.

Usuwanie identyfikatora instancji

Usunięcie identyfikatora instancji spowoduje też usunięcie danych powiązanych z tym identyfikatorem we wszystkich usługach Firebase wymienionych powyżej. Dzięki temu usuwanie identyfikatorów jest przydatnym narzędziem do czyszczenia danych użytkownika, ale ma też pewne ograniczenie: jeśli korzystasz z kilku usług, które bazują na identyfikatorach instancji, usunięcie identyfikatora spowoduje usunięcie wszystkich danych.

Usługa identyfikatora instancji tworzy nowy identyfikator w ciągu kilku dni, chyba że wyłączysz wszystkie usługi generujące identyfikatory instancji w swojej aplikacji. Firebase uznaje nowo utworzony identyfikator za nową instancję aplikacji i w żaden sposób nie wiąże go z poprzednim identyfikatorem.

Usuń identyfikator z wywołaniem interfejsu API klienta

Aby usunąć identyfikatory wygenerowane przez usługi Firebase, wywołaj odpowiednią metodę w interfejsie Firebase Instance ID API:

Swift

InstanceID.instanceID().deleteID { error in
  if let error = error {
    print("Error deleting instance ID: \(error)")
  }
}

Objective-C

[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
  if error != nil {
    NSLog(@"Error deleting instance ID: %@", error);
  }
}];

Android

FirebaseInstanceId.deleteInstanceId();

Usuń identyfikator z wywołaniem interfejsu API serwera

Aby usunąć identyfikator instancji z wywołaniami interfejsu API serwera, dodaj pakiet Firebase Admin SDK do swojego serwera.

Po jego dodaniu usuń identyfikatory, wywołując funkcję usuwania identyfikatora instancji w wybranym języku:

Node.js

// An Instance ID sent from a client service SDK
const idToDelete = 'INSTANCE_ID';

admin.instanceId().deleteInstanceId(idToDelete);

Java

// An Instance ID sent from a client service SDK
String idToDelete = "INSTANCE_ID";

FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();

Python

  from firebase_admin import instance_id

  # An Instance ID sent from a client service SDK
  id_to_delete = 'INSTANCE_ID'

  instance_id.delete_instance_id(id_to_delete)

Go

client, err := app.InstanceId(ctx)
if err != nil {
  log.Fatalln("error initializing client", err)
}

iidToDelete := "INSTANCE_ID"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
  log.Fatalln("error deleting iid", err)
}

Gdy usuniesz identyfikator instancji z wywołaniem interfejsu API serwera, usługi Firebase usuną powiązane dane, przestaną akceptować nowe dane dla tego identyfikatora, a w ciągu kilku dni powiadomią aplikację kliencką, że identyfikator został usunięty. Dopóki Firebase nie powiadomi aplikacji klienta, działanie niektórych jej usług może być ograniczone.

Jeśli chcesz usunąć bieżący identyfikator instancji i od razu używać usług Firebase z nowym, niezależnym identyfikatorem, skorzystaj z jednego z powyższych interfejsów API klienta, aby wykonać usunięcie.

Wyłącz generowanie identyfikatora instancji

Usługi korzystające z identyfikatorów instancji automatycznie generują nowy identyfikator po zainicjowaniu w aplikacji, która go obecnie nie ma. Zwykle te usługi są też inicjowane automatycznie po uruchomieniu aplikacji. Aby wyłączyć generowanie identyfikatorów instancji, musisz wyłączyć automatyczne inicjowanie dla usług, które z nich korzystają.

Typowym podejściem jest umożliwienie użytkownikom wyrażenia zgody na zbieranie danych: wyłączenie automatycznego inicjowania usług, które używają identyfikatorów instancji, wdrożenie okna z prośbą o zgodę na zbieranie danych oraz ponowne włączenie usług po uzyskaniu zgody użytkownika.

Przeczytaj poniższe przewodniki, aby dowiedzieć się, jak wyłączyć automatyczne inicjowanie usług korzystających z identyfikatora instancji i jak je zainicjować ręcznie: