Der Firebase-Installationsdienst (FIS) bietet eine Firebase-Installations-ID (FID) für jede installierte Instanz einer Firebase-App. Die Installations-ID Firebase wird intern von diesen Firebase-Nutzern verwendet Dienste:
Firebase-Dienst | Firebase-Installationsfunktion |
---|---|
Firebase Cloud Messaging |
Firebase Cloud Messaging verwendet Firebase-Installations-IDs, um Geräte für die Nachrichtenübermittlung auszuwählen. |
Firebase Crashlytics |
Firebase Crashlytics rotiert die Crashlytics-Installation UUID basierend auf Änderungen am Firebase der App-Instanz . Künftig werden die Mit der Installations-ID können Funktionen aktiviert werden, die Absturzberichte und die Absturzverwaltungsdienste zu verbessern. |
Firebase In-App Messaging |
Firebase In-App Messaging verwendet Firebase Installations-IDs für Zielgeräte für die Nachrichtenzustellung. |
Firebase Performance Monitoring |
Performance Monitoring verwendet Firebase Installations-IDs um die Anzahl der einzelnen Firebase-Installationen zu berechnen, Netzwerkressourcen, um sicherzustellen, dass Zugriffsmuster nicht ausreichend anonym sind. Außerdem werden Firebase Installations-IDs mit Firebase Remote Config um den Bericht zu Leistungsberichten zu verwalten. |
Firebase Remote Config |
Remote Config verwendet Firebase-Installations-IDs, um Konfigurationswerte auszuwählen, die an Endnutzergeräte zurückgegeben werden sollen. |
Firebase ML |
Anmeldedaten aufgerufen Authentifizierungstokens für die Installation werden von Firebase ML für Geräteauthentifizierung bei der Interaktion mit der App zum Verteilen von Entwicklermodellen auf App-Instanzen. |
Firebase Storage für Nutzersegmentierung |
Firebase User Segmentation Storage speichert Firebase Installations-IDs zugehöriger Attribute und Segmente, um Ausrichtungsinformationen für andere Firebase-Dienste, die sie nutzen. |
In der Regel verwenden Firebase-Dienste den Firebase-Installationsdienst ohne Entwickler müssen direkt mit der FIS API interagieren. 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 damit verbundenen Daten.
- So rufen Sie Kennungen (Firebase Installations-IDs) für das Targeting ab bestimmte App-Installationen.
- So rufen Sie Authentifizierungstokens für die Installation zur Authentifizierung von Firebase ab: Installationen.
Wenn Sie die FIS API direkt aufrufen möchten, fügen Sie Ihrer App das SDK hinzu.
Füge deiner App das Firebase installs SDK hinzu
iOS+
- Fügen Sie der Podfile-Datei die Abhängigkeit für Firebase-Installationen hinzu:
pod 'FirebaseInstallations'
- Führen Sie
pod install
aus und öffnen Sie die erstellte.xcworkspace
-Datei. - Importieren Sie das
FirebaseCore
-Modul in IhreUIApplicationDelegate
sowie alle anderen Firebase-Module, die Ihr App-Delegat verwendet. So verwenden Sie beispielsweise 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 ein
FirebaseApp
freigegebene Instanz im Methodeapplication(_:didFinishLaunchingWithOptions:)
: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 einen Anwendungsdelegierten erstellen und diesen anhängen.
zu deiner
App
-Struktur überUIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
Außerdem müssen Sie das App-Delegate-Swizzling deaktivieren. Für 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üge die Abhängigkeit für das Android SDK für Firebase-Installationen zu deinem
Gradle-Datei des Moduls (auf App-Ebene) (in der Regel app/build.gradle
):
implementation 'com.google.firebase:firebase-installations:18.0.0'
JavaScript
Je nachdem, wie Ihre Webanwendung gehostet wird, wird Ihre Konfiguration möglicherweise automatisch verarbeitet oder Sie müssen Ihr Firebase-Konfigurationsobjekt aktualisieren.
Wenn Ihre Abhängigkeiten beispielsweise in der Datei "index.html" hinzugefügt werden, fügen Sie den Parameter Abhängigkeit im <head>-Element :
<script src="/__/firebase/10.14.1/firebase-installations.js"></script>
Flutter
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Installations-Plug-in für Firebase zu installieren:
flutter pub add firebase_app_installations
Projekt neu erstellen:
flutter run
Importieren Sie das Firebase-Installations-Plug-in:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Firebase-Installation löschen
Mit einer Firebase-Installation verknüpfte Daten sind in der Regel nicht personenbezogene Daten. identifizieren können. Dennoch kann es hilfreich sein, Nutzern die Möglichkeit geben, diese Daten zu verwalten und zu löschen.
Firebase Installations-IDs unterscheiden sich für jede Installation application; verschiedene Anwendungen auf demselben Gerät haben unterschiedliche Firebase Installations-IDs. Firebase Installations-IDs identifizieren die App Installationen und Daten, diese App-Installationen.
Wenn Sie eine Installations-ID löschen, werden die damit verknüpften Daten wird die Installations-ID aus allen Live- und Sicherungssystemen aller Firebase-Dienste, die Installations-IDs von Firebase verwenden, um Installationen zu identifizieren innerhalb von 180 Tagen. Dieser Vorgang wird allgemein in der Erklärung zum Löschen und Aufbewahren von Daten.
Wenn Sie nicht alle FID-generierenden Dienste in Ihren App erstellt, erstellt FIS innerhalb weniger Tage eine neue ID. Firebase betrachtet die neu erstellte ID als neue Firebase-Installation und verknüpft es in keiner Weise mit der vorherigen ID oder den vorherigen Daten.
FID mit einem Client-API-Aufruf löschen
So löschen Sie von Firebase-Diensten generierte FIDs: Rufen Sie die entsprechende Methode aus dem Firebase installs 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+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();
FID mit einem Server-API-Aufruf löschen
So löschen Sie eine FID mit einer Server-API Fügen Sie Ihrem Server das Firebase Admin SDK hinzu, falls noch nicht geschehen.
Sobald das SDK hinzugefügt wurde, löschen Sie FIDs über einen Aufruf der Löschfunktion in der Sprache Ihrer Wahl verwenden (Hinweis: Mit Ausnahme von Node.js die Instanz-ID-Benennung. Sie löschen jedoch alle FID beim Aufruf mit einem beliebigen aktuellen Firebase 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)
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, beginnen die Firebase-Dienste mit dem Löschen der mit dieser Installations-ID verknüpften Daten. Innerhalb von ein bis zwei Tagen werden keine neuen Daten mehr für diese ID akzeptiert. Anschließend wird die Client-App darüber informiert, dass die ID gelöscht wurde. Bis Firebase die Client-App benachrichtigt, der App-Dienste kann dennoch auf die ID ausgerichtet sein, z. B. eine Firebase- erhält die Installation möglicherweise noch einige Zeit lang FCM-Benachrichtigungen Stunden.
Wenn Sie die aktuelle Installations-ID von Firebase löschen und sofort verwenden möchten Firebase-Dienste mit einer neuen, nicht zugehörigen ID – Client API verwenden wie der Löschvorgang verarbeitet wird.
Client-IDs abrufen
Falls bestimmte Installationen Ihrer App identifiziert werden müssen, kann die Installations-ID Firebase abrufen. Um beispielsweise Segmente von App-Installationen für den BigQuery-Import während der Firebase In-App Messaging-Entwicklung testen, können Sie Sie können die richtigen Geräte mit den entsprechenden Firebase-Installations-IDs auswählen.
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+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();
Authentifizierungstoken für die Installation abrufen
Firebase-Dienste können Firebase-Installationen mit Authentifizierungstokens authentifizieren, die aus FIS abgerufen wurden. Wenn Sie beispielsweise A/B-Tests für Remote Config entwerfen, können Sie ein gezieltes Testgerät mit einem Installationsauthentifizierungstoken authentifizieren.
Ein Authentifizierungstoken für die Installation ist ein kurzlebiges Inhabertoken im JSON-Web-Token-Format (JWT), das die folgenden Informationen für Installation:
- Die Installations-ID Firebase
- Das zugehörige Projekt (
projectNumber
) - Die zugehörige Firebase-App-ID (
appId
) - Das Ablaufdatum des Tokens.
Ein Authentifizierungstoken für die Installation kann nicht widerrufen werden und bleibt gültig bis deren Ablaufdatum. Die Standardtokenlebensdauer beträgt eine Woche.
So rufen Sie ein Authentifizierungstoken für die Installation 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+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();
Lebenszyklus der Firebase-Installations-ID im Blick behalten
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 Fügen Sie eine Logik hinzu, um das potenzielle Löschen oder Drehen der FID. In den folgenden Fällen können FIDs gelöscht oder rotiert werden:
- Deinstallation oder Neuinstallation der App, z. B. wenn ein Endnutzer die App auf einem neuen Gerät installiert.
- Der Endnutzer löscht den Cache der App oder des Geräts.
- Das Löschen der FID wird aufgrund der Anwendung im Backend ausgelöst Inaktivität (derzeit beträgt der Grenzwert hierfür 270 Tage Inaktivität).
Wenn bei Apps in diesen Apps eine FID-Rotation oder -Löschung auftritt wird ihnen eine neue FID zugewiesen. Die Das mit einer gelöschten FID verknüpfte Installationstoken für die Authentifizierung ist gelöscht und durch ein neues Authentifizierungstoken der Installation.
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
ist
an das Standard-NSNotificationCenter veröffentlicht, wenn ein neuer
FID ist zugewiesen.
Android
Kotlin- und Java-Clients sollten Wiederholungslogik hinzufügen, um auf fehlgeschlagene Aufrufe zu reagieren um die neue FID abzurufen.
JavaScript
Web-Apps können den Hook onIdChange
abonnieren.
Jedes Mal, 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 basierte Firebase auf dem Instanz-ID-SDK zur Kennzeichnung von App-Installationen. Firebase Installationen bietet gegenüber der Instanz-ID erhebliche Vorteile in Bezug auf Zuverlässigkeit, Leistung, und Sicherheit. Firebase-Apps, die vom Instance ID SDK abhängig sind, sollten migriert werden bis Firebase Installationen.
Der Migrationsprozess unterscheidet sich je nach Anwendung:
Apps, die Instance ID APIs nicht direkt aufrufen, können auf folgende Weise migrieren: deren SDK-Versionen aktualisieren. Die meisten Firebase-Apps fallen in diese Kategorie.
Apps, die explizit API-Aufrufe an die Instanz-ID senden, müssen SDK-Versionen aktualisieren und Änderungen am Code vornehmen, um die Instanz-ID zu ersetzen mit ihren Firebase Installationen oder FCM-Äquivalente. Wenn Ihre App Instanz-ID zum Abrufen von FCM-Registrierungstokens oder verwendet explizit für das Targeting von App-Instanzen oder für jeden anderen Zweck verwenden möchten, müssen Sie Ihren Anwendungscode aktualisieren.
Derzeit ist FIS ist abwärtskompatibel mit der alten Kennung Firebase-Instanz-ID. Das Löschen einer Id ist eine alternative Methode, um das Löschen von Daten mit den folgenden Firebase SDKs anzufordern:
- iOS 6.14.0 und niedriger
- Android SDKs vor dem 27. Februar 2020
Das bedeutet, dass Apps nicht erforderlich sind, um zu Firebase-Installationen zu migrieren. Dies wird jedoch dringend empfohlen.
Für Firebase Installationen wird ein Upgrade auf die Mindest-SDK-Versionen durchgeführt
Für die Migration von Instanz-ID zu Firebase-Installationen müssen Sie sicherstellen, dass die Anwendungen verwenden mindestens die angegebenen Mindestversionsnummer der folgenden Firebase SDKs:
Firebase SDK | Mindestversion von Android | Mindestens erforderliche iOS-Version |
Firebase Cloud Messaging | Version 20.3.0 | v6.34.0 |
Remote Config | Version 19.2.0 | Version 6.24.0 |
Google Analytics for Firebase (Measurement SDK) | Version 17.4.4 | Version 6.18.0 |
In-App-Messaging | Version 19.0.7 | Version 6.24.0 |
Performance Monitoring | Version 19.0.8 | Version 6.21.0 |
Crashlytics | Version 17.2.1 | Version 6.23.0 |
ML Kit | Version 22.1.2 | Version 6.28.0 |
Code aktualisieren, der Instanz-ID-APIs explizit aufruft
Wenn Ihre Android- oder Apple-App direkt Instance ID SDK-Methoden verwendet, können Sie diese Verwendung durch identische Alternativen im Firebase Installations-SDK oder im FCM SDK ersetzen.
Kennung abrufen
Methoden zum Abrufen von Instanz-IDs werden durch Methoden zum Abrufen von Installationen ersetzt ID. 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)") self.remoteFCMTokenMessage.text = "Remote FCM registration 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]; 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
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+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") } }
Kennung löschen
Methoden zum Löschen von Instanz-IDs werden durch Methoden zum Löschen ersetzt Firebase Installations-IDs. 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();
Nach
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+KTX
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
FCM-Registrierungstoken wird abgerufen
Vor der Einführung von Firebase Installationen waren FCM-Clients Registrierungstokens aus 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+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() })
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)") self.remoteFCMTokenMessage.text = "Remote FCM registration 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]; 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() })
Swift
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)" } }
Objective-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; } }];