Check out what’s new from Firebase at Google I/O 2022. Learn more

Instanz-ID-Daten verwalten

Instanz-IDs identifizieren einzelne Installationen Ihrer App. Da jede Instanz-ID für eine bestimmte App und ein bestimmtes Gerät eindeutig ist, bieten sie Firebase-Diensten die Möglichkeit, auf bestimmte App-Instanzen zu verweisen. Beispielsweise verwendet Cloud Messaging Instanz-IDs, um zu bestimmen, an welche Geräte Nachrichten gesendet werden sollen.

Mehrere Firebase-Dienste verwenden Instanz-IDs, um ihre Funktionen zu betreiben:

  • Analytik
  • Crashlytics
  • Cloud-Messaging
  • Remote-Konfig

App-Daten verwalten, die Instanz-IDs zugeordnet sind

Dienste, die Instanz-IDs verwenden, um Installationen zu identifizieren, verwenden sie auch als Schlüssel, um relevante Daten mit diesem Gerät zu verknüpfen. Beispielsweise verwendet Crashlytics Instanz-IDs, um Abstürze aufzuzeichnen, die auf dem Gerät auftreten, Remote Config verwendet sie, um Konfigurationen abzurufen, und Analytics verwendet Instanz-IDs, um bestimmte Zielgruppen zu verfolgen.

Daten, die mit Instanz-IDs verknüpft sind, sind im Allgemeinen nicht persönlich identifizierend, aber es kann dennoch hilfreich sein, Benutzern eine Option zu geben, sie zu verwalten. Zu diesem Zweck bietet Firebase zwei Möglichkeiten zur Verwaltung der Instanz-ID-bezogenen Datenerfassung:

  • Instanz-IDs löschen. Sie können eine Instanz-ID mit einem server- oder clientseitigen API-Aufruf löschen. Durch das Löschen einer Instanz-ID werden die ID selbst und alle damit verbundenen Daten gelöscht.
  • Deaktivieren Sie Dienste, die IDs generieren. Die meisten Firebase-Dienste, die Instanz-IDs verwenden, generieren beim Start automatisch eine neue ID, wenn auf dem Gerät keine vorhanden ist. Um sicherzustellen, dass Ihre App keine unerwünschten Instanz-IDs erstellt, deaktivieren Sie die automatische Initialisierung für diese Dienste.

Löschen Sie eine Instanz-ID

Durch das Löschen einer Instanz-ID werden auch Daten gelöscht, die dieser ID in einem der oben aufgeführten Firebase-Dienste zugeordnet sind. Das macht das Löschen von IDs zu einem hilfreichen Tool beim Löschen von Benutzerdaten, bringt aber auch einen Vorbehalt mit sich: Wenn Sie mehrere Dienste verwenden, die auf Instanz-IDs angewiesen sind, werden durch das Löschen einer ID Daten von allen gelöscht.

Der Instanz-ID-Dienst erstellt innerhalb weniger Tage eine neue ID, es sei denn, Sie deaktivieren alle Instanz-ID-generierenden Dienste in Ihrer App. Firebase betrachtet die neu erstellte ID als brandneue App-Instanz und ordnet sie in keiner Weise der vorherigen ID zu.

Löschen Sie eine ID mit einem Client-API-Aufruf

Um von Firebase-Diensten generierte IDs zu löschen, rufen Sie die entsprechende Methode aus der Firebase-Instanz-ID-API auf:

Schnell

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

Ziel c

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

Android

FirebaseInstanceId.deleteInstanceId();

Löschen Sie eine ID mit einem Server-API-Aufruf

Um eine Instanz-ID mit Server-API-Aufrufen zu löschen, fügen Sie das Firebase Admin SDK zu Ihrem Server hinzu , falls noch nicht geschehen.

Sobald sie hinzugefügt wurde, löschen Sie IDs durch einen Aufruf der Instanz-ID-Löschfunktion in der Sprache Ihrer Wahl:

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)

gehen

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)
}

Wenn Sie eine Instanz-ID mit einem Server-API-Aufruf löschen, löschen die Firebase-Dienste die zugehörigen Daten, akzeptieren keine neuen Daten für diese ID und benachrichtigen die Client-App innerhalb weniger Tage, dass die ID gelöscht wurde. Bis Firebase die Client-App benachrichtigt, kann es bei einigen Diensten der App zu eingeschränkter Funktionalität kommen.

Wenn Sie die aktuelle Instanz-ID löschen und Firebase-Dienste sofort mit einer neuen, unabhängigen ID verwenden möchten, verwenden Sie eine der oben genannten Client-APIs, um die Löschung vorzunehmen.

Deaktivieren Sie die Instanz-ID-Generierung

Dienste, die Instanz-IDs verwenden, generieren automatisch eine neue ID, wenn sie in einer App initialisiert werden, die derzeit keine hat. Normalerweise werden diese Dienste auch automatisch initialisiert, wenn Ihre App gestartet wird. Um die Instanz-ID-Generierung zu deaktivieren, müssen Sie die automatische Initialisierung für Dienste deaktivieren, die sie verwenden.

Ein gängiger Ansatz besteht darin, Benutzern die Möglichkeit zu geben, sich für die Datenerfassung zu entscheiden: Deaktivieren Sie die automatische Initialisierung für die Dienste, die Instanz-IDs verwenden, implementieren Sie einen Dialog, der Benutzer zur Zustimmung zur Datenerfassung auffordert, und aktivieren Sie die Dienste einmal manuell erneut Sie haben Zustimmung.

Lesen Sie die folgenden Anleitungen, um herauszufinden, wie Sie die automatische Initialisierung für Instanz-ID-verwendende Dienste deaktivieren und sie stattdessen manuell initialisieren können: