Der Firebase-Installationsdienst (FIS) stellt eine Firebase-Installations-ID (FID) für jede installierte Instanz einer Firebase-App bereit. Die Firebase-Installations-ID wird intern von diesen Firebase-Diensten verwendet:
Firebase-Dienst | Funktionalität von Firebase-Installationen |
---|---|
Firebase Cloud-Messaging | Firebase Cloud Messaging verwendet Firebase-Installations-IDs, um Geräte für die Nachrichtenübermittlung anzusprechen. |
Firebase Crashlytics | Firebase Crashlytics rotiert die Crashlytics-Installations-UUID basierend auf Änderungen an der Firebase-Installations-ID der App-Instanz. In Zukunft kann die Installations-ID verwendet werden, um Funktionen zu aktivieren, die die Absturzberichts- und Absturzverwaltungsdienste verbessern. |
Firebase In-App-Messaging | Firebase In-App Messaging verwendet Firebase-Installations-IDs, um Geräte für die Nachrichtenübermittlung anzusprechen. |
Firebase-Leistungsüberwachung | Performance Monitoring verwendet Firebase-Installations-IDs, um die Anzahl eindeutiger Firebase-Installationen zu berechnen, die auf Netzwerkressourcen zugreifen, um sicherzustellen, dass die Zugriffsmuster ausreichend anonym sind. Außerdem werden Firebase-Installations-IDs mit Firebase Remote Config verwendet, um die Rate der Leistungsereignisberichte zu verwalten. |
Firebase-Remote-Konfiguration | Remote Config verwendet Firebase-Installations-IDs, um Konfigurationswerte auszuwählen, die an Endbenutzergeräte zurückgegeben werden sollen. |
Firebase ML | Anmeldeinformationen, sogenannte Installationsauthentifizierungstoken, werden von Firebase ML zur Geräteauthentifizierung bei der Interaktion mit App-Instanzen verwendet, beispielsweise um Entwicklermodelle an App-Instanzen zu verteilen. |
Firebase-Benutzersegmentierungsspeicher | Firebase User Segmentation Storage speichert Firebase-Installations-IDs und zugehörige Attribute und Segmente, um Targeting-Informationen für andere Firebase-Dienste bereitzustellen, die sie verwenden. |
In der Regel nutzen Firebase-Dienste den Firebase-Installationsdienst, ohne dass Entwickler direkt mit der FIS-API interagieren müssen. Es gibt jedoch Fälle, in denen App-Entwickler die FIS-API möglicherweise direkt aufrufen möchten, wie zum Beispiel:
- Zum Löschen einer Firebase-Installation und der mit der Installation verknüpften Daten.
- Um Identifikatoren (Firebase-Installations-IDs) abzurufen, um gezielt auf bestimmte App-Installationen abzuzielen.
- Zum Abrufen von Installationsauthentifizierungstoken zur Authentifizierung von Firebase-Installationen.
Um mit dem direkten Aufruf der FIS-API zu beginnen, fügen Sie das SDK zu Ihrer App hinzu.
Fügen Sie das Firebase-Installations-SDK zu Ihrer App hinzu
iOS+
- Fügen Sie die Abhängigkeit für Firebase-Installationen zu Ihrer Poddatei hinzu:
pod 'FirebaseInstallations'
- Führen Sie
pod install
und öffnen Sie die erstellte.xcworkspace
Datei. - Importieren Sie das
FirebaseCore
Modul in IhrUIApplicationDelegate
sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. Um beispielsweise Cloud Firestore und Authentifizierung zu verwenden:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Schnell
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Ziel c
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurieren Sie eine gemeinsam genutzte
FirebaseApp
Instanz in derapplication(_:didFinishLaunchingWithOptions:)
Methode Ihres App-Delegierten:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Schnell
// Use Firebase library to configure APIs FirebaseApp.configure()
Ziel c
// Use Firebase library to configure APIs [FIRApp configure];
- Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über
UIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
an IhreApp
Struktur anhängen. Sie müssen auch das Swizzling von App-Delegierten deaktivieren. Weitere Informationen finden Sie in den SwiftUI-Anweisungen .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Android
Fügen Sie die Abhängigkeit für das Firebase-Installations-Android-SDK zu Ihrer Modul-Gradle-Datei (auf App-Ebene) hinzu (normalerweise app/build.gradle
):
implementation 'com.google.firebase:firebase-installations:17.1.4'
JavaScript
Abhängig davon, wie Ihre Webanwendung gehostet wird, wird Ihre Konfiguration möglicherweise automatisch verarbeitet oder Sie müssen möglicherweise Ihr Firebase-Konfigurationsobjekt aktualisieren.
Wenn Ihre Abhängigkeiten beispielsweise in index.html hinzugefügt werden, fügen Sie die Abhängigkeit im <head>-Element hinzu:
<script src="/__/firebase/10.4.0/firebase-installations.js"></script>
Flattern
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Firebase-Installations-Plugin zu installieren:
flutter pub add firebase_app_installations
Erstellen Sie Ihr Projekt neu:
flutter run
Importieren Sie das Firebase-Installations-Plugin:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Löschen Sie eine Firebase-Installation
Mit einer Firebase-Installation verknüpfte Daten sind im Allgemeinen nicht persönlich identifizierbar. Dennoch kann es hilfreich sein, Benutzern die Möglichkeit zu geben, diese Daten zu verwalten und zu löschen.
Die Firebase-Installations-IDs sind für jede Installation jeder Anwendung unterschiedlich. Verschiedene Anwendungen auf demselben Gerät haben unterschiedliche Firebase-Installations-IDs. Firebase-Installations-IDs identifizieren App-Installationen und Daten, die mit diesen App-Installationen verknüpft sind.
Wenn Sie eine Installations-ID löschen, werden die mit dieser Installations-ID verknüpften Daten innerhalb von 180 Tagen aus den Live- und Backup-Systemen aller Firebase-Dienste entfernt, die Firebase-Installations-IDs zur Identifizierung von Installationen verwenden. Dieser Vorgang wird in der Stellungnahme von Google zur Löschung und Aufbewahrung ausführlich beschrieben.
Sofern Sie nicht alle FID-generierenden Dienste in Ihrer App deaktivieren, erstellt FIS innerhalb weniger Tage eine neue ID. Firebase betrachtet die neu erstellte ID als neue Firebase-Installation und verknüpft sie in keiner Weise mit der vorherigen ID oder den vorherigen Daten.
Löschen Sie eine FID mit einem Client-API-Aufruf
Um von Firebase-Diensten generierte FIDs zu löschen, rufen Sie die entsprechende Methode aus dem Firebase-Installations-SDK auf:
Schnell
Installations.installations().delete { error in if let error = error { print("Error deleting installation: \(error)") return } print("Installation deleted"); }
Ziel c
[[FIRInstallations installations] deleteWithCompletion:^(NSError *error) { if (error != nil) { NSLog(@"Error deleting Installation %@", error); return; } NSLog(@"Installation deleted"); }];
Java
FirebaseInstallations.getInstance().delete() .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation deleted"); } else { Log.e("Installations", "Unable to delete Installation"); } } });
Kotlin+KTX
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
JavaScript
await firebase.installations().delete();
Dart
await FirebaseInstallations.instance.delete();
Löschen Sie eine FID mit einem Server-API-Aufruf
Um eine FID mit einem Server-API-Aufruf zu löschen, fügen Sie das Firebase Admin SDK zu Ihrem Server hinzu , falls Sie dies noch nicht getan haben.
Sobald das SDK hinzugefügt wurde, löschen Sie FIDs durch einen Aufruf der Löschfunktion in der Sprache Ihrer Wahl (Hinweis: Mit Ausnahme von Node.js spiegeln diese Methoden die Benennung der Instanz-ID wider. Allerdings löschen sie alle tatsächlich die FID, wenn sie mit einer aktuellen Firebase aufgerufen werden SDK).
Node.js
// An FIDsent from a client service SDK
const idToDelete = 'eyJhbGciOiJFUzI1N_iIs5';
admin.installations().deleteInstallation(idToDelete);
Java
// An FID sent from a client service SDK
String idToDelete = "eyJhbGciOiJFUzI1N_iIs5";
FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();
Python
from firebase_admin import instance_id
# An FID sent from a client service SDK
id_to_delete = 'eyJhbGciOiJFUzI1N_iIs5'
instance_id.delete_instance_id(id_to_delete)
Gehen
client, err := app.InstanceId(ctx)
if err != nil {
log.Fatalln("error initializing client", err)
}
iidToDelete := "eyJhbGciOiJFUzI1N_iIs5"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
log.Fatalln("error deleting FID", err)
}
Wenn Sie eine Firebase-Installations-ID mit einem Server-API-Aufruf löschen, starten die Firebase-Dienste den Prozess zum Löschen der mit dieser Installations-ID verknüpften Daten, akzeptieren im Laufe von ein bis zwei Tagen keine neuen Daten für diese ID mehr und benachrichtigen dann die Client-App dass die ID gelöscht wurde. Bis Firebase die Client-App benachrichtigt, zielen einige Dienste der App möglicherweise immer noch auf die ID ab. Beispielsweise erhält eine Firebase-Installation möglicherweise noch einige Stunden lang FCM-Benachrichtigungen.
Wenn Sie die aktuelle Firebase-Installations-ID löschen und Firebase-Dienste sofort mit einer neuen, nicht verwandten ID verwenden möchten, verwenden Sie die Client-API, um den Löschvorgang durchzuführen.
Client-IDs abrufen
Wenn Sie bestimmte Installationen Ihrer App identifizieren müssen, können Sie dies durch Abrufen der Firebase-Installations-ID tun. Um beispielsweise Segmente von App-Installationen für den BiqQuery-Import zu erstellen oder Tests während der Firebase-In-App-Messaging-Entwicklung durchzuführen, können Sie mithilfe der entsprechenden Firebase-Installations-IDs die richtigen Geräte identifizieren und gezielt ansprechen.
So rufen Sie eine Firebase-Installations-ID ab:
Schnell
Installations.installations().installationID { (id, error) in if let error = error { print("Error fetching id: \(error)") return } guard let id = id else { return } print("Installation ID: \(id)") }
Ziel c
[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) { if (error != nil) { NSLog(@"Error fetching Installation ID %@", error); return; } NSLog(@"Installation ID: %@", identifier); }];
Java
FirebaseInstallations.getInstance().getId() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation ID: " + task.getResult()); } else { Log.e("Installations", "Unable to get Installation ID"); } } });
Kotlin+KTX
FirebaseInstallations.getInstance().id.addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation ID: " + task.result) } else { Log.e("Installations", "Unable to get Installation ID") } }
JavaScript
const installationId = await firebase.installations().getId(); console.log(installationId);
Dart
String id = await FirebaseInstallations.instance.getId();
Rufen Sie Installationsauthentifizierungstoken ab
Firebase-Dienste können Firebase-Installationen mit Authentifizierungstoken authentifizieren, die von FIS abgerufen werden. Wenn Sie beispielsweise A/B-Tests für Remote Config entwerfen, können Sie ein Zieltestgerät mithilfe eines Installationsauthentifizierungstokens authentifizieren.
Ein Installationsauthentifizierungstoken ist ein kurzlebiges Trägertoken im JSON-Web-Token-Format (JWT), das die folgenden Informationen für eine Installation enthält:
- Die Firebase-Installations-ID
- Das zugehörige Projekt (
projectNumber
) - Die zugehörige Firebase-Anwendungs-ID (
appId
) - Das Ablaufdatum des Tokens
Ein Installationsauthentifizierungstoken kann nicht widerrufen werden und bleibt bis zu seinem Ablaufdatum gültig. Die Standard-Token-Lebensdauer beträgt eine Woche.
So rufen Sie ein Installations-Authentifizierungstoken ab:
Schnell
Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in if let error = error { print("Error fetching token: \(error)") return } guard let result = result else { return } print("Installation auth token: \(result.authToken)") })
Ziel c
[[FIRInstallations installations] authTokenForcingRefresh:true completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) { if (error != nil) { NSLog(@"Error fetching Installation token %@", error); return; } NSLog(@"Installation auth token: %@", [result authToken]); }];
Java
FirebaseInstallations.getInstance().getToken(/* forceRefresh */true) .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() { @Override public void onComplete(@NonNull Task<InstallationTokenResult> task) { if (task.isSuccessful() && task.getResult() != null) { Log.d("Installations", "Installation auth token: " + task.getResult().getToken()); } else { Log.e("Installations", "Unable to get Installation auth token"); } } });
Kotlin+KTX
val forceRefresh = true FirebaseInstallations.getInstance().getToken(forceRefresh) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation auth token: " + task.result?.token) } else { Log.e("Installations", "Unable to get Installation auth token") } }
JavaScript
const installationToken = await firebase.installations() .getToken(/* forceRefresh */ true); console.log(installationToken);
Dart
String token = await FirebaseInstallations.instance.getToken();
Überwachen Sie den Lebenszyklus der Firebase-Installations-ID
Während des normalen Betriebs einer App erfordern Firebase-Installations-IDs (FIDs) keine besondere Überwachung. Apps, die FIDs explizit abrufen und verwenden, sollten jedoch eine Logik hinzufügen, um die mögliche Löschung oder Rotation der FID zu überwachen. Hier sind einige Fälle, in denen FIDs gelöscht oder rotiert werden könnten:
- Deinstallation oder Neuinstallation der App, beispielsweise wenn ein Endbenutzer die App auf einem neuen Gerät installiert.
- Der Endbenutzer löscht den Cache der App oder des Geräts.
- Die FID-Löschung wird im Backend aufgrund der Inaktivität der App ausgelöst (derzeit liegt der Schwellenwert hierfür bei 270 Tagen Inaktivität).
Wenn Apps in solchen Fällen eine FID-Rotation oder -Löschung erfahren, wird ihnen eine neue FID zugewiesen. Außerdem wird das mit einer gelöschten FID verknüpfte Installationsauthentifizierungstoken unabhängig von seiner eigenen Reife gelöscht und durch ein neues Installationsauthentifizierungstoken ersetzt.
Apps können diese Änderungen überwachen und entsprechend reagieren.
So überwachen Sie die FID-Rotation:
Schnell
installationIDObserver = NotificationCenter.default.addObserver( forName: .InstallationIDDidChange, object: nil, queue: nil ) { (notification) in // Fetch new Installation ID self.fetchInstallationToken() }
Ziel c
__weak __auto_type weakSelf = self; self.installationIDObserver = [[NSNotificationCenter defaultCenter] addObserverForName: FIRInstallationIDDidChangeNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull notification) { // Fetch new Installation ID [weakSelf fetchInstallationsID]; }];
Eine NSNotification mit dem Namen NSNotificationName.InstallationIDDidChange
wird im Standard-NSNotificationCenter gepostet, wenn eine neue FID zugewiesen wird.
Android
Kotlin- und Java-Clients sollten eine Wiederholungslogik hinzufügen, um auf fehlgeschlagene Aufrufe zum Abrufen der neuen FID zu reagieren.
JavaScript
Web-Apps können den onIdChange
Hook abonnieren.
Immer wenn eine neue FID erstellt wird, wird der abonnierte Rückruf ausgelöst:
await firebase.installations().onIdChange((newId) => { console.log(newId); // TODO: Handle new installation ID. });
Dart
FirebaseInstallations.instance.onIdChange.listen((token) {
print('FID token: $token');
});
Von Instanz-ID zu Firebase-Installationen migrieren
Vor der Einführung von Firebase-Installationen verließ sich Firebase zur Identifizierung von App-Installationen auf das Instance ID SDK. Firebase-Installationen bieten gegenüber Instance ID erhebliche Vorteile in Bezug auf Zuverlässigkeit, Leistung und Sicherheit. Firebase-Apps, die vom Instance ID SDK abhängen, sollten zu Firebase-Installationen migriert werden.
Der Migrationsprozess unterscheidet sich je nach App:
Apps, die Instanz-ID-APIs nicht direkt aufrufen, können migrieren, indem sie ihre SDK-Versionen aktualisieren . Die meisten Firebase-Apps fallen in diese Kategorie.
Apps, die explizit API-Aufrufe an die Instanz-ID durchführen, müssen SDK-Versionen aktualisieren und Codeänderungen vornehmen , um Instanz-ID-Methoden durch ihre Firebase-Installationen oder FCM-Äquivalente zu ersetzen. Wenn Ihre App die Instanz-ID zum Abrufen von FCM-Registrierungstokens verwendet oder die Instanz-ID explizit zum Zielen auf App-Instanzen oder für andere Zwecke verwendet, müssen Sie Ihren Anwendungscode aktualisieren.
Derzeit ist FIS abwärtskompatibel mit der alten Kennung Firebase Instance ID. Das Löschen einer IID ist eine alternative Methode zum Anfordern der Datenlöschung mit diesen Firebase SDKs:
- iOS 6.14.0 und niedriger
- Android SDKs vor dem 27. Februar 2020
Dies bedeutet, dass Apps nicht für die Migration zu Firebase-Installationen erforderlich sind. Dies wird jedoch dringend empfohlen.
Upgrade auf minimale SDK-Versionen für Firebase-Installationen
Stellen Sie zum Migrieren von Instanz-IDs zu Firebase-Installationen sicher, dass Ihre Anwendungen mindestens die aufgeführten Mindestversionsnummern der folgenden Firebase SDKs verwenden:
Firebase-SDK | Mindest-Android-Version | Minimale iOS-Version |
Firebase Cloud-Messaging | v20.3.0 | v6.34.0 |
Remote-Konfiguration | v19.2.0 | v6.24.0 |
Google Analytics für Firebase \ (Messungs-SDK) | v17.4.4 | v6.18.0 |
In-App-Nachrichten | v19.0.7 | v6.24.0 |
Leistungsüberwachung | v19.0.8 | v6.21.0 |
Crashlytics | v17.2.1 | v6.23.0 |
ML-Kit | v22.1.2 | v6.28.0 |
Aktualisieren von Code, der Instanz-ID-APIs explizit aufruft
Wenn Ihre Android- oder Apple-App direkt Instanz-ID-SDK-Methoden verwendet, können Sie diese Verwendung durch identische Alternativen im Firebase-Installations-SDK oder im FCM-SDK ersetzen.
Abrufen einer Kennung
Methoden zum Abrufen von Instanz-IDs werden durch Methoden zum Abrufen einer Installations-ID ersetzt. Zum Beispiel:
Vor
Schnell
Messaging.messaging().token { token, error in if let error = error { print("Error fetching remote FCM registration token: \(error)") } else if let token = token { print("Remote instance ID token: \(token)") self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)" } }
Ziel c
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching the remote FCM registration token: %@", error); } else { NSLog(@"Remote FCM registration token: %@", token); NSString* message = [NSString stringWithFormat:@"FCM registration token: %@", token]; self.remoteFCMTokenMessage.text = message; } }];
Java
FirebaseInstanceId.getInstance().getInstanceId() .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override public void onComplete(@NonNull Task<InstanceIdResult> task) { Log.d("IID_TOKEN", task.getResult().getToken()); } });
Kotlin+KTX
FirebaseInstanceId.getInstance().instanceId .addOnSuccessListener { result -> Log.d("IID_TOKEN", result.token) }
Nach
Schnell
Installations.installations().installationID { (id, error) in if let error = error { print("Error fetching id: \(error)") return } guard let id = id else { return } print("Installation ID: \(id)") }
Ziel c
[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) { if (error != nil) { NSLog(@"Error fetching Installation ID %@", error); return; } NSLog(@"Installation ID: %@", identifier); }];
Java
FirebaseInstallations.getInstance().getId() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation ID: " + task.getResult()); } else { Log.e("Installations", "Unable to get Installation ID"); } } });
Kotlin+KTX
FirebaseInstallations.getInstance().id.addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation ID: " + task.result) } else { Log.e("Installations", "Unable to get Installation ID") } }
Löschen einer Kennung
Methoden zum Löschen von Instanz-IDs werden durch Methoden zum Löschen von Firebase-Installations-IDs ersetzt. Zum Beispiel:
Vor
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();
Nach
Schnell
func delete(completion: @escaping (Error?) -> Void)
Ziel c
- (void)deleteWithCompletion:(nonnull void (^)(NSError *_Nullable))completion;
Java
FirebaseInstallations.getInstance().delete() .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation deleted"); } else { Log.e("Installations", "Unable to delete Installation"); } } });
Kotlin+KTX
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
Abrufen eines FCM-Registrierungstokens
Vor der Einführung von Firebase-Installationen haben FCM-Clients Registrierungstoken von der Instanz-ID abgerufen. Jetzt stellt das FCM SDK Methoden zum Abrufen des Registrierungstokens bereit.
Vor
Java
FirebaseInstanceId.getInstance().getInstanceId() .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override public void onComplete(@NonNull Task<InstanceIdResult> task) { if (!task.isSuccessful()) { Log.w(TAG, "getInstanceId failed", task.getException()); return; } // Get new Instance ID token String token = task.getResult().getToken(); // Log and toast String msg = getString(R.string.msg_token_fmt, token); Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Kotlin+KTX
FirebaseInstanceId.getInstance().instanceId .addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w(TAG, "getInstanceId failed", task.exception) return@OnCompleteListener } // Get new Instance ID token val token = task.result?.token // Log and toast val msg = getString(R.string.msg_token_fmt, token) Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })
Schnell
Messaging.messaging().token { token, error in if let error = error { print("Error fetching remote FCM registration token: \(error)") } else if let token = token { print("Remote instance ID token: \(token)") self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)" } }
Ziel c
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching the remote FCM registration token: %@", error); } else { NSLog(@"Remote FCM registration token: %@", token); NSString* message = [NSString stringWithFormat:@"FCM registration token: %@", token]; self.remoteFCMTokenMessage.text = message; } }];
Nach
Java
FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (!task.isSuccessful()) { Log.w(TAG, "Fetching FCM registration token failed", task.getException()); return; } // Get new FCM registration token String token = task.getResult(); // Log and toast String msg = getString(R.string.msg_token_fmt, token); Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Kotlin+KTX
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w(TAG, "Fetching FCM registration token failed", task.exception) return@OnCompleteListener } // Get new FCM registration token val token = task.result // Log and toast val msg = getString(R.string.msg_token_fmt, token) Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })
Schnell
Messaging.messaging().token { token, error in if let error = error { print("Error fetching FCM registration token: \(error)") } else if let token = token { print("FCM registration token: \(token)") self.fcmRegTokenMessage.text = "Remote FCM registration token: \(token)" } }
Ziel c
[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) { if (error != nil) { NSLog(@"Error getting FCM registration token: %@", error); } else { NSLog(@"FCM registration token: %@", token); self.fcmRegTokenMessage.text = token; } }];
Der Firebase-Installationsdienst (FIS) stellt eine Firebase-Installations-ID (FID) für jede installierte Instanz einer Firebase-App bereit. Die Firebase-Installations-ID wird intern von diesen Firebase-Diensten verwendet:
Firebase-Dienst | Funktionalität von Firebase-Installationen |
---|---|
Firebase Cloud-Messaging | Firebase Cloud Messaging verwendet Firebase-Installations-IDs, um Geräte für die Nachrichtenübermittlung anzusprechen. |
Firebase Crashlytics | Firebase Crashlytics rotiert die Crashlytics-Installations-UUID basierend auf Änderungen an der Firebase-Installations-ID der App-Instanz. In Zukunft kann die Installations-ID verwendet werden, um Funktionen zu aktivieren, die die Absturzberichts- und Absturzverwaltungsdienste verbessern. |
Firebase In-App-Messaging | Firebase In-App Messaging verwendet Firebase-Installations-IDs, um Geräte für die Nachrichtenübermittlung anzusprechen. |
Firebase-Leistungsüberwachung | Performance Monitoring verwendet Firebase-Installations-IDs, um die Anzahl eindeutiger Firebase-Installationen zu berechnen, die auf Netzwerkressourcen zugreifen, um sicherzustellen, dass die Zugriffsmuster ausreichend anonym sind. Außerdem werden Firebase-Installations-IDs mit Firebase Remote Config verwendet, um die Rate der Leistungsereignisberichte zu verwalten. |
Firebase-Remote-Konfiguration | Remote Config verwendet Firebase-Installations-IDs, um Konfigurationswerte auszuwählen, die an Endbenutzergeräte zurückgegeben werden sollen. |
Firebase ML | Anmeldeinformationen, sogenannte Installationsauthentifizierungstoken, werden von Firebase ML zur Geräteauthentifizierung bei der Interaktion mit App-Instanzen verwendet, beispielsweise um Entwicklermodelle an App-Instanzen zu verteilen. |
Firebase-Benutzersegmentierungsspeicher | Firebase User Segmentation Storage speichert Firebase-Installations-IDs und zugehörige Attribute und Segmente, um Targeting-Informationen für andere Firebase-Dienste bereitzustellen, die sie verwenden. |
In der Regel nutzen Firebase-Dienste den Firebase-Installationsdienst, ohne dass Entwickler direkt mit der FIS-API interagieren müssen. Es gibt jedoch Fälle, in denen App-Entwickler die FIS-API möglicherweise direkt aufrufen möchten, wie zum Beispiel:
- Zum Löschen einer Firebase-Installation und der mit der Installation verknüpften Daten.
- Um Identifikatoren (Firebase-Installations-IDs) abzurufen, um gezielt auf bestimmte App-Installationen abzuzielen.
- Zum Abrufen von Installationsauthentifizierungstoken zur Authentifizierung von Firebase-Installationen.
Um mit dem direkten Aufruf der FIS-API zu beginnen, fügen Sie das SDK zu Ihrer App hinzu.
Fügen Sie das Firebase-Installations-SDK zu Ihrer App hinzu
iOS+
- Fügen Sie die Abhängigkeit für Firebase-Installationen zu Ihrer Poddatei hinzu:
pod 'FirebaseInstallations'
- Führen Sie
pod install
und öffnen Sie die erstellte.xcworkspace
Datei. - Importieren Sie das
FirebaseCore
Modul in IhrUIApplicationDelegate
sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. Um beispielsweise Cloud Firestore und Authentifizierung zu verwenden:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Schnell
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Ziel c
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurieren Sie eine gemeinsam genutzte
FirebaseApp
Instanz in derapplication(_:didFinishLaunchingWithOptions:)
Methode Ihres App-Delegierten:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Schnell
// Use Firebase library to configure APIs FirebaseApp.configure()
Ziel c
// Use Firebase library to configure APIs [FIRApp configure];
- Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über
UIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
an IhreApp
Struktur anhängen. Sie müssen auch das Swizzling von App-Delegierten deaktivieren. Weitere Informationen finden Sie in den SwiftUI-Anweisungen .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Android
Fügen Sie die Abhängigkeit für das Firebase-Installations-Android-SDK zu Ihrer Modul-Gradle-Datei (auf App-Ebene) hinzu (normalerweise app/build.gradle
):
implementation 'com.google.firebase:firebase-installations:17.1.4'
JavaScript
Abhängig davon, wie Ihre Webanwendung gehostet wird, wird Ihre Konfiguration möglicherweise automatisch verarbeitet oder Sie müssen möglicherweise Ihr Firebase-Konfigurationsobjekt aktualisieren.
Wenn Ihre Abhängigkeiten beispielsweise in index.html hinzugefügt werden, fügen Sie die Abhängigkeit im <head>-Element hinzu:
<script src="/__/firebase/10.4.0/firebase-installations.js"></script>
Flattern
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Firebase-Installations-Plugin zu installieren:
flutter pub add firebase_app_installations
Erstellen Sie Ihr Projekt neu:
flutter run
Importieren Sie das Firebase-Installations-Plugin:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Löschen Sie eine Firebase-Installation
Mit einer Firebase-Installation verknüpfte Daten sind im Allgemeinen nicht persönlich identifizierbar. Dennoch kann es hilfreich sein, Benutzern die Möglichkeit zu geben, diese Daten zu verwalten und zu löschen.
Die Firebase-Installations-IDs sind für jede Installation jeder Anwendung unterschiedlich. Verschiedene Anwendungen auf demselben Gerät haben unterschiedliche Firebase-Installations-IDs. Firebase-Installations-IDs identifizieren App-Installationen und Daten, die mit diesen App-Installationen verknüpft sind.
Wenn Sie eine Installations-ID löschen, werden die mit dieser Installations-ID verknüpften Daten innerhalb von 180 Tagen aus den Live- und Backup-Systemen aller Firebase-Dienste entfernt, die Firebase-Installations-IDs zur Identifizierung von Installationen verwenden. Dieser Vorgang wird in der Stellungnahme von Google zur Löschung und Aufbewahrung ausführlich beschrieben.
Sofern Sie nicht alle FID-generierenden Dienste in Ihrer App deaktivieren, erstellt FIS innerhalb weniger Tage eine neue ID. Firebase betrachtet die neu erstellte ID als neue Firebase-Installation und verknüpft sie in keiner Weise mit der vorherigen ID oder den vorherigen Daten.
Löschen Sie eine FID mit einem Client-API-Aufruf
Um von Firebase-Diensten generierte FIDs zu löschen, rufen Sie die entsprechende Methode aus dem Firebase-Installations-SDK auf:
Schnell
Installations.installations().delete { error in if let error = error { print("Error deleting installation: \(error)") return } print("Installation deleted"); }
Ziel c
[[FIRInstallations installations] deleteWithCompletion:^(NSError *error) { if (error != nil) { NSLog(@"Error deleting Installation %@", error); return; } NSLog(@"Installation deleted"); }];
Java
FirebaseInstallations.getInstance().delete() .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation deleted"); } else { Log.e("Installations", "Unable to delete Installation"); } } });
Kotlin+KTX
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
JavaScript
await firebase.installations().delete();
Dart
await FirebaseInstallations.instance.delete();
Löschen Sie eine FID mit einem Server-API-Aufruf
Um eine FID mit einem Server-API-Aufruf zu löschen, fügen Sie das Firebase Admin SDK zu Ihrem Server hinzu , falls Sie dies noch nicht getan haben.
Sobald das SDK hinzugefügt wurde, löschen Sie FIDs durch einen Aufruf der Löschfunktion in der Sprache Ihrer Wahl (Hinweis: Mit Ausnahme von Node.js spiegeln diese Methoden die Benennung der Instanz-ID wider. Allerdings löschen sie alle tatsächlich die FID, wenn sie mit einer aktuellen Firebase aufgerufen werden SDK).
Node.js
// An FIDsent from a client service SDK
const idToDelete = 'eyJhbGciOiJFUzI1N_iIs5';
admin.installations().deleteInstallation(idToDelete);
Java
// An FID sent from a client service SDK
String idToDelete = "eyJhbGciOiJFUzI1N_iIs5";
FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();
Python
from firebase_admin import instance_id
# An FID sent from a client service SDK
id_to_delete = 'eyJhbGciOiJFUzI1N_iIs5'
instance_id.delete_instance_id(id_to_delete)
Gehen
client, err := app.InstanceId(ctx)
if err != nil {
log.Fatalln("error initializing client", err)
}
iidToDelete := "eyJhbGciOiJFUzI1N_iIs5"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
log.Fatalln("error deleting FID", err)
}
Wenn Sie eine Firebase-Installations-ID mit einem Server-API-Aufruf löschen, starten die Firebase-Dienste den Prozess zum Löschen der mit dieser Installations-ID verknüpften Daten, akzeptieren im Laufe von ein bis zwei Tagen keine neuen Daten für diese ID mehr und benachrichtigen dann die Client-App dass die ID gelöscht wurde. Bis Firebase die Client-App benachrichtigt, zielen einige Dienste der App möglicherweise immer noch auf die ID ab. Beispielsweise erhält eine Firebase-Installation möglicherweise noch einige Stunden lang FCM-Benachrichtigungen.
Wenn Sie die aktuelle Firebase-Installations-ID löschen und Firebase-Dienste sofort mit einer neuen, nicht verwandten ID verwenden möchten, verwenden Sie die Client-API, um den Löschvorgang durchzuführen.
Client-IDs abrufen
Wenn Sie bestimmte Installationen Ihrer App identifizieren müssen, können Sie dies durch Abrufen der Firebase-Installations-ID tun. Um beispielsweise Segmente von App-Installationen für den BiqQuery-Import zu erstellen oder Tests während der Entwicklung von Firebase In-App Messaging durchzuführen, können Sie mithilfe der entsprechenden Firebase-Installations-IDs die richtigen Geräte identifizieren und gezielt ansprechen.
So rufen Sie eine Firebase-Installations-ID ab:
Schnell
Installations.installations().installationID { (id, error) in if let error = error { print("Error fetching id: \(error)") return } guard let id = id else { return } print("Installation ID: \(id)") }
Ziel c
[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) { if (error != nil) { NSLog(@"Error fetching Installation ID %@", error); return; } NSLog(@"Installation ID: %@", identifier); }];
Java
FirebaseInstallations.getInstance().getId() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation ID: " + task.getResult()); } else { Log.e("Installations", "Unable to get Installation ID"); } } });
Kotlin+KTX
FirebaseInstallations.getInstance().id.addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation ID: " + task.result) } else { Log.e("Installations", "Unable to get Installation ID") } }
JavaScript
const installationId = await firebase.installations().getId(); console.log(installationId);
Dart
String id = await FirebaseInstallations.instance.getId();
Rufen Sie Installationsauthentifizierungstoken ab
Firebase-Dienste können Firebase-Installationen mit Authentifizierungstoken authentifizieren, die von FIS abgerufen werden. Wenn Sie beispielsweise A/B-Tests für Remote Config entwerfen, können Sie ein Zieltestgerät mithilfe eines Installationsauthentifizierungstokens authentifizieren.
Ein Installationsauthentifizierungstoken ist ein kurzlebiges Trägertoken im JSON-Web-Token-Format (JWT), das die folgenden Informationen für eine Installation enthält:
- Die Firebase-Installations-ID
- Das zugehörige Projekt (
projectNumber
) - Die zugehörige Firebase-Anwendungs-ID (
appId
) - Das Ablaufdatum des Tokens
Ein Installationsauthentifizierungstoken kann nicht widerrufen werden und bleibt bis zu seinem Ablaufdatum gültig. Die Standard-Token-Lebensdauer beträgt eine Woche.
So rufen Sie ein Installations-Authentifizierungstoken ab:
Schnell
Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in if let error = error { print("Error fetching token: \(error)") return } guard let result = result else { return } print("Installation auth token: \(result.authToken)") })
Ziel c
[[FIRInstallations installations] authTokenForcingRefresh:true completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) { if (error != nil) { NSLog(@"Error fetching Installation token %@", error); return; } NSLog(@"Installation auth token: %@", [result authToken]); }];
Java
FirebaseInstallations.getInstance().getToken(/* forceRefresh */true) .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() { @Override public void onComplete(@NonNull Task<InstallationTokenResult> task) { if (task.isSuccessful() && task.getResult() != null) { Log.d("Installations", "Installation auth token: " + task.getResult().getToken()); } else { Log.e("Installations", "Unable to get Installation auth token"); } } });
Kotlin+KTX
val forceRefresh = true FirebaseInstallations.getInstance().getToken(forceRefresh) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation auth token: " + task.result?.token) } else { Log.e("Installations", "Unable to get Installation auth token") } }
JavaScript
const installationToken = await firebase.installations() .getToken(/* forceRefresh */ true); console.log(installationToken);
Dart
String token = await FirebaseInstallations.instance.getToken();
Überwachen Sie den Lebenszyklus der Firebase-Installations-ID
Während des normalen Betriebs einer App erfordern Firebase-Installations-IDs (FIDs) keine besondere Überwachung. Apps, die FIDs explizit abrufen und verwenden, sollten jedoch eine Logik hinzufügen, um die mögliche Löschung oder Rotation der FID zu überwachen. Hier sind einige Fälle, in denen FIDs gelöscht oder rotiert werden könnten:
- Deinstallation oder Neuinstallation der App, beispielsweise wenn ein Endbenutzer die App auf einem neuen Gerät installiert.
- Der Endbenutzer löscht den Cache der App oder des Geräts.
- Die FID-Löschung wird im Backend aufgrund der Inaktivität der App ausgelöst (derzeit liegt der Schwellenwert hierfür bei 270 Tagen Inaktivität).
Wenn Apps in solchen Fällen eine FID-Rotation oder -Löschung erfahren, wird ihnen eine neue FID zugewiesen. Außerdem wird das mit einer gelöschten FID verknüpfte Installationsauthentifizierungstoken unabhängig von seiner eigenen Reife gelöscht und durch ein neues Installationsauthentifizierungstoken ersetzt.
Apps können diese Änderungen überwachen und entsprechend reagieren.
So überwachen Sie die FID-Rotation:
Schnell
installationIDObserver = NotificationCenter.default.addObserver( forName: .InstallationIDDidChange, object: nil, queue: nil ) { (notification) in // Fetch new Installation ID self.fetchInstallationToken() }
Ziel c
__weak __auto_type weakSelf = self; self.installationIDObserver = [[NSNotificationCenter defaultCenter] addObserverForName: FIRInstallationIDDidChangeNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull notification) { // Fetch new Installation ID [weakSelf fetchInstallationsID]; }];
Eine NSNotification mit dem Namen NSNotificationName.InstallationIDDidChange
wird im Standard-NSNotificationCenter gepostet, wenn eine neue FID zugewiesen wird.
Android
Kotlin- und Java-Clients sollten eine Wiederholungslogik hinzufügen, um auf fehlgeschlagene Aufrufe zum Abrufen der neuen FID zu reagieren.
JavaScript
Web-Apps können den onIdChange
Hook abonnieren.
Immer wenn eine neue FID erstellt wird, wird der abonnierte Rückruf ausgelöst:
await firebase.installations().onIdChange((newId) => { console.log(newId); // TODO: Handle new installation ID. });
Dart
FirebaseInstallations.instance.onIdChange.listen((token) {
print('FID token: $token');
});
Von Instanz-ID zu Firebase-Installationen migrieren
Vor der Einführung von Firebase-Installationen verließ sich Firebase zur Identifizierung von App-Installationen auf das Instance ID SDK. Firebase-Installationen bieten gegenüber Instance ID erhebliche Vorteile in Bezug auf Zuverlässigkeit, Leistung und Sicherheit. Firebase-Apps, die vom Instance ID SDK abhängen, sollten zu Firebase-Installationen migriert werden.
Der Migrationsprozess unterscheidet sich je nach App:
Apps, die Instanz-ID-APIs nicht direkt aufrufen, können migrieren, indem sie ihre SDK-Versionen aktualisieren . Die meisten Firebase-Apps fallen in diese Kategorie.
Apps, die explizit API-Aufrufe an die Instanz-ID durchführen, müssen SDK-Versionen aktualisieren und Codeänderungen vornehmen , um Instanz-ID-Methoden durch ihre Firebase-Installationen oder FCM-Äquivalente zu ersetzen. Wenn Ihre App die Instanz-ID zum Abrufen von FCM-Registrierungstokens verwendet oder die Instanz-ID explizit zum Zielen auf App-Instanzen oder für andere Zwecke verwendet, müssen Sie Ihren Anwendungscode aktualisieren.
Derzeit ist FIS abwärtskompatibel mit der alten Kennung Firebase Instance ID. Das Löschen einer IID ist eine alternative Methode zum Anfordern der Datenlöschung mit diesen Firebase SDKs:
- iOS 6.14.0 und niedriger
- Android SDKs vor dem 27. Februar 2020
Dies bedeutet, dass Apps nicht für die Migration zu Firebase-Installationen erforderlich sind; Dies wird jedoch dringend empfohlen.
Upgrade auf minimale SDK-Versionen für Firebase-Installationen
Stellen Sie zum Migrieren von Instanz-IDs zu Firebase-Installationen sicher, dass Ihre Anwendungen mindestens die aufgeführten Mindestversionsnummern der folgenden Firebase SDKs verwenden:
Firebase-SDK | Mindest-Android-Version | Minimale iOS-Version |
Firebase Cloud-Messaging | v20.3.0 | v6.34.0 |
Remote-Konfiguration | v19.2.0 | v6.24.0 |
Google Analytics für Firebase \ (Messungs-SDK) | v17.4.4 | v6.18.0 |
In-App-Nachrichten | v19.0.7 | v6.24.0 |
Leistungsüberwachung | v19.0.8 | v6.21.0 |
Crashlytics | v17.2.1 | v6.23.0 |
ML-Kit | v22.1.2 | v6.28.0 |
Aktualisieren von Code, der Instanz-ID-APIs explizit aufruft
Wenn Ihre Android- oder Apple-App direkt Instanz-ID-SDK-Methoden verwendet, können Sie diese Verwendung durch identische Alternativen im Firebase-Installations-SDK oder im FCM-SDK ersetzen.
Abrufen einer Kennung
Methoden zum Abrufen von Instanz-IDs werden durch Methoden zum Abrufen einer Installations-ID ersetzt. Zum Beispiel:
Vor
Schnell
Messaging.messaging().token { token, error in if let error = error { print("Error fetching remote FCM registration token: \(error)") } else if let token = token { print("Remote instance ID token: \(token)") self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)" } }
Ziel c
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching the remote FCM registration token: %@", error); } else { NSLog(@"Remote FCM registration token: %@", token); NSString* message = [NSString stringWithFormat:@"FCM registration token: %@", token]; self.remoteFCMTokenMessage.text = message; } }];
Java
FirebaseInstanceId.getInstance().getInstanceId() .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override public void onComplete(@NonNull Task<InstanceIdResult> task) { Log.d("IID_TOKEN", task.getResult().getToken()); } });
Kotlin+KTX
FirebaseInstanceId.getInstance().instanceId .addOnSuccessListener { result -> Log.d("IID_TOKEN", result.token) }
Nach
Schnell
Installations.installations().installationID { (id, error) in if let error = error { print("Error fetching id: \(error)") return } guard let id = id else { return } print("Installation ID: \(id)") }
Ziel c
[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) { if (error != nil) { NSLog(@"Error fetching Installation ID %@", error); return; } NSLog(@"Installation ID: %@", identifier); }];
Java
FirebaseInstallations.getInstance().getId() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation ID: " + task.getResult()); } else { Log.e("Installations", "Unable to get Installation ID"); } } });
Kotlin+KTX
FirebaseInstallations.getInstance().id.addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation ID: " + task.result) } else { Log.e("Installations", "Unable to get Installation ID") } }
Löschen einer Kennung
Methoden zum Löschen von Instanz-IDs werden durch Methoden zum Löschen von Firebase-Installations-IDs ersetzt. Zum Beispiel:
Vor
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();
Nach
Schnell
func delete(completion: @escaping (Error?) -> Void)
Ziel c
- (void)deleteWithCompletion:(nonnull void (^)(NSError *_Nullable))completion;
Java
FirebaseInstallations.getInstance().delete() .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation deleted"); } else { Log.e("Installations", "Unable to delete Installation"); } } });
Kotlin+KTX
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
Abrufen eines FCM-Registrierungstokens
Vor der Einführung von Firebase-Installationen haben FCM-Clients Registrierungstoken von der Instanz-ID abgerufen. Jetzt stellt das FCM SDK Methoden zum Abrufen des Registrierungstokens bereit.
Vor
Java
FirebaseInstanceId.getInstance().getInstanceId() .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override public void onComplete(@NonNull Task<InstanceIdResult> task) { if (!task.isSuccessful()) { Log.w(TAG, "getInstanceId failed", task.getException()); return; } // Get new Instance ID token String token = task.getResult().getToken(); // Log and toast String msg = getString(R.string.msg_token_fmt, token); Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Kotlin+KTX
FirebaseInstanceId.getInstance().instanceId .addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w(TAG, "getInstanceId failed", task.exception) return@OnCompleteListener } // Get new Instance ID token val token = task.result?.token // Log and toast val msg = getString(R.string.msg_token_fmt, token) Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })
Schnell
Messaging.messaging().token { token, error in if let error = error { print("Error fetching remote FCM registration token: \(error)") } else if let token = token { print("Remote instance ID token: \(token)") self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)" } }
Ziel c
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching the remote FCM registration token: %@", error); } else { NSLog(@"Remote FCM registration token: %@", token); NSString* message = [NSString stringWithFormat:@"FCM registration token: %@", token]; self.remoteFCMTokenMessage.text = message; } }];
Nach
Java
FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (!task.isSuccessful()) { Log.w(TAG, "Fetching FCM registration token failed", task.getException()); return; } // Get new FCM registration token String token = task.getResult(); // Log and toast String msg = getString(R.string.msg_token_fmt, token); Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Kotlin+KTX
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w(TAG, "Fetching FCM registration token failed", task.exception) return@OnCompleteListener } // Get new FCM registration token val token = task.result // Log and toast val msg = getString(R.string.msg_token_fmt, token) Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })
Schnell
Messaging.messaging().token { token, error in if let error = error { print("Error fetching FCM registration token: \(error)") } else if let token = token { print("FCM registration token: \(token)") self.fcmRegTokenMessage.text = "Remote FCM registration token: \(token)" } }
Ziel c
[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) { if (error != nil) { NSLog(@"Error getting FCM registration token: %@", error); } else { NSLog(@"FCM registration token: %@", token); self.fcmRegTokenMessage.text = token; } }];