Der Firebase-Installationsdienst (FIS) stellt für jede installierte Instanz einer Firebase-App eine Firebase-Installations-ID (FID) bereit. Die Firebase-Installations-ID wird intern von diesen Firebase-Diensten verwendet:
| Firebase-Dienst | Firebase-Installationsfunktion |
|---|---|
| Firebase Cloud Messaging |
Firebase Cloud Messaging verwendet Firebase-Installations-IDs, um Nachrichten an Zielgeräte zu senden. |
| Firebase Crashlytics |
Firebase Crashlytics rotiert die UUID der Crashlytics-Installation 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 Dienste für Absturzberichte und Absturzverwaltung verbessern. |
| Firebase In-App Messaging |
Firebase In-App Messaging verwendet Firebase-Installations-IDs, um Nachrichten an Zielgeräte zu senden. |
| Firebase Performance Monitoring |
Performance Monitoring verwendet Firebase-Installations-IDs, um die Anzahl der eindeutigen Firebase-Installationen zu berechnen, die auf Netzwerkressourcen zugreifen. So wird sichergestellt, dass Zugriffsmuster ausreichend anonym sind. Außerdem werden Firebase-Installations-IDs mit Firebase Remote Config verwendet, um die Häufigkeit der Berichte zu Leistungsereignissen zu verwalten. |
| Firebase Remote Config |
Remote Config verwendet Firebase-Installations-IDs, um Konfigurationswerte auszuwählen, die an Endnutzergeräte zurückgegeben werden sollen. Die Personalisierungsfunktion von Remote Config verwendet Firebase-Installations-IDs, um App-Ereignisdaten mit Firebase-Installationen zu verknüpfen, um optimale Konfigurationswerte vorherzusagen und an Endnutzergeräte zurückzugeben. |
| Firebase ML |
Anmeldedaten, die als Installationsauthentifizierungstokens bezeichnet werden, werden von Firebase ML für die Geräteauthentifizierung verwendet, wenn mit App-Instanzen interagiert wird, z. B. um Entwicklermodelle an App-Instanzen zu verteilen. |
| Firebase Storage für Nutzersegmentierung |
Firebase Storage für Nutzersegmentierung speichert Firebase-Installations-IDs und zugehörige Attribute und Segmente, um anderen Firebase-Diensten, die sie verwenden, Targeting-Informationen bereitzustellen. |
In der Regel verwenden Firebase-Dienste den Installationsdienst Firebase, ohne dass Entwickler direkt mit der FIS API interagieren müssen. Es gibt jedoch Fälle, in denen App-Entwickler die FIS API direkt aufrufen möchten, z. B.:
- Zum Löschen einer Firebase-Installation und der mit der Installation verknüpften Daten.
- Zum Abrufen von Kennungen (Firebase-Installations-IDs), um bestimmte App-Installationen anzusprechen.
- Zum Abrufen von Installationsauthentifizierungstokens zur Authentifizierung von Firebase-Installationen.
Wenn Sie die FIS API direkt aufrufen möchten, fügen Sie Ihrer App das SDK hinzu.
Firebase-Installations-SDK zu Ihrer App hinzufügen
iOS+
- Fügen Sie Ihrem Podfile die Abhängigkeit für Firebase-Installationen hinzu:
pod 'FirebaseInstallations'
- Führen Sie
pod installaus und öffnen Sie die erstellte.xcworkspace-Datei. - Importieren Sie das
FirebaseCore-Modul in IhreUIApplicationDelegatesowie alle anderen Firebase-Module, die Ihr App-Delegat verwendet. Beispiel für die Verwendung von Cloud Firestore und Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurieren Sie in der
application(_:didFinishLaunchingWithOptions:)-Methode des App-Delegats eine freigegebeneFirebaseApp-Instanz:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Wenn Sie SwiftUI verwenden, müssen Sie ein App-Delegat erstellen und es über
UIApplicationDelegateAdaptoroderNSApplicationDelegateAdaptoran IhreApp-Struktur anhängen. Außerdem müssen Sie das Swizzling des App-Delegaten deaktivieren. Weitere Informationen finden Sie in der SwiftUI-Anleitung.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 der Gradle-Datei Ihres Moduls (auf App-Ebene, normalerweise app/build.gradle) hinzu:
implementation 'com.google.firebase:firebase-installations:20.0.0'
JavaScript
Je nachdem, wie Ihre Webanwendung gehostet wird, wird die Konfiguration möglicherweise automatisch vorgenommen oder Sie müssen 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/13.0.0/firebase-installations.js"></script>
Flutter
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Installations-Plug-in Firebase zu installieren:
flutter pub add firebase_app_installationsErstellen Sie Ihr Projekt neu:
flutter runImportieren Sie das Firebase-Installations-Plug-in:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Firebase-Installation löschen
Daten, die mit einer Firebase-Installation verknüpft sind, sind im Allgemeinen nicht personenbezogen. Dennoch kann es hilfreich sein, Nutzern die Möglichkeit zu geben, diese Daten zu verwalten und zu löschen.
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 Sicherungssystemen aller Firebase-Dienste entfernt, die Firebase-Installations-IDs zur Identifizierung von Installationen verwenden. Dieser Prozess wird in der Erklärung von Google zum Löschen und Aufbewahren von Daten allgemein beschrieben.
Wenn 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.
FID mit einem Client-API-Aufruf löschen
Wenn Sie von Firebase-Diensten generierte FIDs löschen möchten, rufen Sie die entsprechende Methode aus dem Firebase-Installations-SDK auf:
Swift
do { try await Installations.installations().delete() print("Installation deleted"); } catch { print("Error deleting installation: \(error)") }
Objective-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
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();
FID mit einem Server-API-Aufruf löschen
Wenn Sie eine FID mit einem Server-API-Aufruf löschen möchten, fügen Sie Ihrem Server das Firebase Admin SDK hinzu, falls noch nicht geschehen.
Nachdem das SDK hinzugefügt wurde, können Sie FIDs löschen, indem Sie die Löschfunktion in der gewünschten Sprache aufrufen. Hinweis: Mit Ausnahme von Node.js spiegeln diese Methoden die Benennung der Instanz-ID wider. Bei Aufruf mit einem aktuellen Firebase SDK wird die FID jedoch tatsächlich gelöscht.
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)
Go
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 Firebase-Dienste den Prozess zum Löschen der mit dieser Installations-ID verknüpften Daten. Sie akzeptieren dann innerhalb von 1–2 Tagen keine neuen Daten mehr für diese ID und benachrichtigen die Client-App, dass die ID gelöscht wurde. Bis Firebase die Client-App benachrichtigt, sind einige Dienste der App möglicherweise noch auf die ID ausgerichtet. Beispielsweise kann eine Firebase-Installation noch einige Stunden lang FCM-Benachrichtigungen erhalten.
Wenn Sie die aktuelle Firebase-Installations-ID löschen und Firebase-Dienste sofort mit einer neuen, nicht zugehörigen ID verwenden möchten, verwenden Sie die Client API, um das Löschen zu verarbeiten.
Clientkennungen abrufen
Wenn Sie bestimmte Installationen Ihrer App identifizieren müssen, können Sie dazu die Firebase-Installations-ID abrufen. Wenn Sie beispielsweise Segmente von App-Installationen für den BigQuery-Import erstellen oder während der Entwicklung von Firebase In-App Messaging Tests durchführen möchten, können Sie die richtigen Geräte anhand der entsprechenden Firebase-Installations-IDs identifizieren und als Ziel festlegen.
So rufen Sie eine Firebase-Installations-ID ab:
Swift
do { let id = try await Installations.installations().installationID() print("Installation ID: \(id)") } catch { print("Error fetching id: \(error)") }
Objective-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
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();
Installations-Authentifizierungstokens abrufen
Firebase-Dienste können Firebase-Installationen mit Authentifizierungstokens authentifizieren, die von FIS abgerufen werden. Wenn Sie beispielsweise A/B-Tests für Remote Config entwerfen, können Sie ein Zieltestgerät mit einem Installationsauthentifizierungstoken authentifizieren.
Ein Installations-Authentifizierungstoken ist ein kurzlebiges Inhabertoken im JSON Web Token-Format (JWT), das die folgenden Informationen für eine Installation enthält:
- Die Firebase-Installations-ID
- Das verknüpfte Projekt (
projectNumber) - Die zugehörige Firebase-Anwendungs-ID (
appId) - Das Ablaufdatum des Tokens
Ein Installations-Authentifizierungstoken kann nicht widerrufen werden und bleibt bis zum Ablaufdatum gültig. Die Standardlebensdauer des Tokens beträgt eine Woche.
So rufen Sie ein Installations-Authentifizierungstoken ab:
Swift
do { let result = try await Installations.installations() .authTokenForcingRefresh(true) print("Installation auth token: \(result.authToken)") } catch { print("Error fetching token: \(error)") }
Objective-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
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();
Lebenszyklus der Firebase-Installations-ID überwachen
Während des normalen Betriebs einer App müssen Firebase-Installations-IDs (FIDs) nicht speziell überwacht werden. Apps, die FIDs explizit abrufen und verwenden, sollten jedoch eine Logik hinzufügen, um das potenzielle Löschen oder Rotieren der FID zu überwachen. Hier sind einige Fälle, in denen FIDs gelöscht oder rotiert werden könnten:
- Deinstallation oder Neuinstallation der App, z. B. wenn ein Endnutzer die App auf einem neuen Gerät installiert.
- Der Endnutzer leert den Cache der App oder des Geräts.
- Das Löschen der FID wird im Backend aufgrund von Inaktivität der App ausgelöst. Derzeit liegt der Schwellenwert dafür bei 270 Tagen Inaktivität.
Wenn Apps in solchen Fällen eine FID-Rotation oder -Löschung durchlaufen, wird ihnen eine neue FID zugewiesen. Außerdem wird das mit einer gelöschten FID verknüpfte Installations-Authentifizierungstoken unabhängig von seiner eigenen Laufzeit gelöscht und durch ein neues Installations-Authentifizierungstoken ersetzt.
Apps können diese Änderungen überwachen und entsprechend reagieren.
So überwachen Sie die FID-Rotation:
Swift
installationIDObserver = NotificationCenter.default.addObserver( forName: .InstallationIDDidChange, object: nil, queue: nil ) { (notification) in // Fetch new Installation ID Task { await self.fetchInstallationToken() } }
Objective-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 an das Standard-NSNotificationCenter gesendet, 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 Callback 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 hat Firebase das Instanz-ID SDK für IDs von App-Installationen verwendet. Firebase-Installationen bieten gegenüber der Instanz-ID erhebliche Vorteile in Bezug auf Zuverlässigkeit, Leistung und Sicherheit. Firebase-Apps, die vom Instanz-ID SDK abhängen, sollten zu Firebase-Installationen migriert werden.
Der Migrationsprozess hängt von Ihrer App ab:
Apps, die Instanz-ID-APIs nicht direkt aufrufen, können migriert werden, indem die SDK-Versionen aktualisiert werden. Die meisten Firebase-Apps fallen in diese Kategorie.
Apps, die explizit API-Aufrufe an die Instanz-ID senden, müssen die 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 verwendet, um FCM-Registrierungstokens abzurufen, oder die Instanz-ID explizit für die Ausrichtung 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-Instanz-ID“. Das Löschen einer IID ist eine alternative Methode, um mit den folgenden Firebase SDKs das Löschen von Daten anzufordern:
- iOS 6.14.0 und niedriger
- Android SDKs vor dem 27. Februar 2020
Das bedeutet, dass Apps nicht zu Firebase-Installationen migriert werden müssen. Dies wird jedoch dringend empfohlen.
Upgrade auf die mindestens erforderlichen SDK-Versionen für Firebase Installationen
Wenn Sie von der Instanz-ID zu Firebase-Installationen migrieren möchten, müssen Ihre Anwendungen mindestens die aufgeführten Mindestversionsnummern der folgenden Firebase SDKs verwenden:
| Firebase SDK | Android-Mindestversion | Mindestversion von iOS |
| Firebase Cloud Messaging | v20.3.0 | v6.34.0 |
| Remote Config | v19.2.0 | v6.24.0 |
| Google Analytics for Firebase \ (Analyse-SDK) | v17.4.4 | v6.18.0 |
| In-App-Messaging | v19.0.7 | v6.24.0 |
| Performance Monitoring | v19.0.8 | v6.21.0 |
| Crashlytics | v17.2.1 | v6.23.0 |
| ML Kit | v22.1.2 | v6.28.0 |
Code aktualisieren, der explizit Instanz-ID APIs aufruft
Wenn in Ihrer Android- oder Apple-App direkt Methoden des Instanz-ID SDK verwendet werden, können Sie diese durch identische Alternativen im Firebase Installations-SDK oder im FCM SDK ersetzen.
ID abrufen
Methoden zum Abrufen von Instanz-IDs werden durch Methoden zum Abrufen einer Installations-ID ersetzt. Beispiel:
Vorher
Swift
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)") } }
Objective-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]; // display message NSLog(@"%@", 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
FirebaseInstanceId.getInstance().instanceId .addOnSuccessListener { result -> Log.d("IID_TOKEN", result.token) }
Nachher
Swift
do { let id = try await Installations.installations().installationID() print("Installation ID: \(id)") } catch { print("Error fetching id: \(error)") }
Objective-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
FirebaseInstallations.getInstance().id.addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation ID: " + task.result) } else { Log.e("Installations", "Unable to get Installation ID") } }
ID löschen
Methoden zum Löschen von Instanz-IDs werden durch Methoden zum Löschen von Firebase-Installations-IDs ersetzt. Beispiel:
Vorher
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();
Nachher
Swift
func delete(completion: @escaping (Error?) -> Void)
Objective-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
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
FCM-Registrierungstoken abrufen
Vor der Einführung von Firebase-Installationen haben FCM-Clients Registrierungstokens von der Instanz-ID abgerufen. Das FCM SDK bietet jetzt Methoden zum Abrufen des Registrierungstokens.
Vorher
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
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() })
Swift
InstanceID.instanceID().instanceID { result, error in if let error = error { print("Error fetching instance ID: \(error)") } else if let result = result { print("Instance ID token: \(result.token)") } }
Objective-C
[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching instance ID: %@", error); } else { NSLog(@"Instance ID token: %@", result.token); } }];
Nachher
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
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() })
Swift
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)") } }
Objective-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]; // display message NSLog(@"%@", message); } }];