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 den folgenden Firebase-Diensten verwendet:
Firebase-Dienst | Firebase Funktionen für Installationen |
---|---|
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-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 Absturzberichte und Absturzverwaltung verbessern. |
Firebase In-App Messaging |
Firebase In-App Messaging verwendet Firebase-Installations-IDs, um Geräte für die Nachrichtenübermittlung auszuwählen. |
Firebase Performance Monitoring |
Performance Monitoring verwendet Firebase-Installations-IDs, um die Anzahl der eindeutigen Firebase-Installationen zu berechnen, die auf Netzwerkressourcen zugreifen. So soll sichergestellt werden, 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 steuern. |
Firebase Remote Config |
Remote Config verwendet Firebase-Installations-IDs, um Konfigurationswerte auszuwählen, die an Endnutzergeräte zurückgegeben werden sollen. |
Firebase ML |
Firebase ML verwendet Anmeldedaten, die Installationsauthentifizierungstokens genannt werden, für die Geräteauthentifizierung bei der Interaktion mit App-Instanzen, z. B. zum Verteilen von Entwicklermodellen an App-Instanzen. |
Firebase Storage für Nutzersegmentierung |
Im Speicher für die Firebase-Nutzersegmentierung werden Firebase-Installations-IDs und zugehörige Attribute und Segmente gespeichert, um anderen Firebase-Diensten, die sie verwenden, Informationen zur Ausrichtung bereitzustellen. |
Normalerweise verwenden 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 direkt aufrufen möchten, z. B.:
- So löschen Sie eine Firebase-Installation und die mit der Installation verknüpften Daten.
- Sie können damit IDs (Firebase-Installations-IDs) abrufen, um Anzeigen auf bestimmte App-Installationen auszurichten.
- Zum Abrufen von Authentifizierungstokens für die Installation, um Firebase-Installationen zu authentifizieren.
Wenn Sie die FIS API direkt aufrufen möchten, fügen Sie Ihrer App das SDK hinzu.
Ihrer App das Firebase-Installations-SDK hinzufügen
iOS+
- Fügen Sie Ihrer Podfile 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 eine freigegebene Instanz von
FirebaseApp
in derapplication(_:didFinishLaunchingWithOptions:)
-Methode Ihres App-Delegierten: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 über
UIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
an dasApp
-Objekt anhängen. Außerdem müssen Sie das App-Delegate-Swizzling 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 der Gradle-Datei des Moduls (auf Anwendungsebene, in der Regel app/build.gradle
) die Abhängigkeit für das Firebase-Installations-Android-SDK hinzu:
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 index.html hinzugefügt werden, fügen Sie die Abhängigkeit im <head>-Element hinzu:
<script src="/__/firebase/11.0.2/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
Daten, die mit einer Firebase-Installation verknüpft sind, sind im Allgemeinen nicht personenidentifizierbar. Es kann jedoch 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. Unterschiedliche 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 zugehörigen Daten innerhalb von 180 Tagen aus den Live- und Sicherungssystemen aller Firebase-Dienste entfernt, in denen Installationen mithilfe von Firebase-Installations-IDs identifiziert werden. Dieser Prozess wird allgemein in der Erklärung von Google zum Löschen und Aufbewahren von Daten beschrieben.
Sofern Sie nicht alle Dienste deaktivieren, die FIDs generieren, 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+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
Wenn Sie eine FID mit einem Server-API-Aufruf löschen möchten, fügen Sie Ihrem Server das Firebase Admin SDK hinzu, falls Sie dies noch nicht getan haben.
Nachdem das SDK hinzugefügt wurde, können Sie FIDs durch einen Aufruf der Löschfunktion in Ihrer gewünschten Sprache löschen. Hinweis: Mit Ausnahme von Node.js entsprechen diese Methoden der Benennung der Instanz-ID. Tatsächlich wird die FID jedoch bei jedem Aufruf mit einem aktuellen Firebase SDK 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, 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, richten einige Dienste der App möglicherweise weiterhin ihre Ausrichtung auf die ID aus. So kann es beispielsweise sein, dass eine Firebase-Installation noch einige Stunden lang FCM-Benachrichtigungen erhält.
Wenn Sie die aktuelle Firebase-Installations-ID löschen und sofort Firebase-Dienste mit einer neuen, nicht zugehörigen ID verwenden möchten, verwenden Sie die Client API, um das Löschen zu verarbeiten.
Client-IDs abrufen
Wenn Sie bestimmte Installationen Ihrer App identifizieren möchten, können Sie die Installations-ID Firebase abrufen. Wenn Sie beispielsweise Segmente von App-Installationen für den BigQuery-Import erstellen oder während der Firebase In-App Messaging-Entwicklung Tests durchführen möchten, können Sie die entsprechenden Geräte anhand der entsprechenden Firebase-Installations-IDs identifizieren und anvisieren.
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();
Auth-Token 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 (JWT)-Format, das die folgenden Informationen für eine Installation enthält:
- Die Firebase-Installations-ID
- Das zugehörige Projekt (
projectNumber
) - Die zugehörige Firebase-App-ID (
appId
) - Ablaufdatum des Tokens
Ein Autorisierungstoken für die Installation kann nicht widerrufen werden und bleibt bis zum Ablaufdatum gültig. 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 jedoch eine Logik hinzufügen, um das potenzielle Löschen oder Rotieren der FID zu überwachen. 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 im Backend aufgrund von App-Inaktivität ausgelöst. Derzeit liegt der Grenzwert dafür bei 270 Tagen Inaktivität.
Wenn in diesen Fällen die FID einer App rotiert oder gelöscht wird, wird ihr eine neue FID zugewiesen. Außerdem wird das mit einer gelöschten FID verknüpfte Autorisierungstoken für die Installation unabhängig von seiner eigenen Reife gelöscht und durch ein neues Autorisierungstoken für die Installation 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]; }];
Jedes Mal, wenn eine neue FID zugewiesen wird, wird eine NSNotification mit dem Namen NSNotificationName.InstallationIDDidChange
im standardmäßigen NSNotificationCenter gepostet.
Android
Kotlin- und Java-Clients sollten eine Wiederholungslogik hinzufügen, um auf fehlgeschlagene Aufrufe zu reagieren und die neue FID abzurufen.
JavaScript
Web-Apps können den onIdChange
-Hook 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 der Instanz-ID zu Firebase-Installationen migrieren
Vor der Einführung von Firebase-Installationen wurde in Firebase das Instance ID SDK für die Identifizierung von App-Installationen verwendet. Firebase-Installationen bieten erhebliche Vorteile gegenüber der Instanz-ID in Bezug auf Zuverlässigkeit, Leistung und Sicherheit. Firebase-Apps, die vom Instance ID SDK abhängen, sollten auf Firebase-Installationen umgestellt werden.
Der Migrationsprozess hängt von Ihrer App ab:
Apps, die Instance ID APIs nicht direkt aufrufen, können migriert werden, indem Sie ihre SDK-Versionen aktualisieren. Die meisten Firebase-Apps fallen in diese Kategorie.
Für Apps, die explizit API-Aufrufe an die Instanz-ID senden, müssen die SDK-Versionen aktualisiert und Codeänderungen vorgenommen werden, um Instanz-ID-Methoden durch ihre Firebase-Installationen oder FCM-Entsprechungen zu ersetzen. Wenn Ihre App die Instanz-ID zum Abrufen von FCM-Registrierungstokens verwendet oder die Instanz-ID explizit zum Ausrichten auf App-Instanzen oder für andere Zwecke verwendet, müssen Sie Ihren Anwendungscode aktualisieren.
Derzeit ist FIS abwärtskompatibel mit der bisherigen Firebase-Installations-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 migriert werden müssen, um auf Firebase-Installationen zu laufen. Wir empfehlen dies jedoch dringend.
Auf die Mindest-SDK-Versionen für Firebase-Installationen aktualisieren
Wenn Sie von der Instanz-ID zu Firebase-Installationen migrieren möchten, müssen Ihre Apps mindestens die aufgeführten Mindestversionsnummern der folgenden Firebase SDKs verwenden:
Firebase SDK | Mindestversion von Android | Mindestversion von iOS |
Firebase Cloud Messaging | v20.3.0 | v6.34.0 |
Remote Config | v19.2.0 | v6.24.0 |
Google Analytics for Firebase (Measurement 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 Instance ID APIs 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 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)") 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 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();
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 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+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; } }];