Usługa Firebaseinstalacji Firebase (FIS) udostępnia Firebaseidentyfikator instalacji (FID)Firebase dla każdej zainstalowanej instancji aplikacji w Firebase. FirebaseIdentyfikator instalacji jest używany wewnętrznie przez te usługi Firebase:
| Usługa Firebase | Firebase funkcja instalacji |
|---|---|
| Firebase Cloud Messaging |
Firebase Cloud Messaging używa Firebase identyfikatorów instalacji do kierowania wiadomości na urządzenia. |
| Firebase Crashlytics |
Firebase Crashlytics obraca Crashlytics identyfikator UUID instalacji na podstawie zmian identyfikatora instalacji Firebase instancji aplikacji. W przyszłości identyfikator instalacji może być używany do włączania funkcji, które ulepszają raportowanie awarii i usługi zarządzania awariami. |
| Firebase In-App Messaging |
Firebase In-App Messaging używa Firebase identyfikatorów instalacji do kierowania wiadomości na urządzenia. |
| Firebase Performance Monitoring |
Performance Monitoring używa Firebase identyfikatorów instalacji do obliczania liczby unikalnych instalacji Firebase, które uzyskują dostęp do zasobów sieciowych, aby zapewnić wystarczającą anonimowość wzorców dostępu. Używa też Firebaseidentyfikatorów instalacjiFirebase Remote Config, aby zarządzać częstotliwością raportowania zdarzeń związanych z wydajnością. |
| Firebase Remote Config |
Remote Config używa Firebase identyfikatorów instalacji do wybierania wartości konfiguracji , które mają być zwracane na urządzenia użytkowników. |
| Firebase ML |
Tokeny uwierzytelniania instalacji są używane przez Firebase ML do uwierzytelniania urządzenia podczas interakcji z instancjami aplikacji, np. do rozpowszechniania modeli deweloperskich w instancjach aplikacji. |
| Pamięć segmentacji użytkowników Firebase |
Usługa Firebase User Segmentation Storage przechowuje Firebaseidentyfikatory instalacji oraz powiązane atrybuty i segmenty, aby przekazywać informacje o kierowaniu do innych usług Firebase, które z nich korzystają. |
Usługi Firebase zwykle korzystają z usługi instalacji Firebase bez konieczności bezpośredniej interakcji deweloperów z interfejsem FIS API. W niektórych przypadkach deweloperzy aplikacji mogą jednak chcieć bezpośrednio wywoływać interfejs FIS API, np.:
- Usuwanie instalacji Firebase i danych z nią powiązanych.
- Aby pobierać identyfikatory (Firebase identyfikatory instalacji) w celu kierowania reklam na konkretne instalacje aplikacji.
- Pobieranie tokenów uwierzytelniania instalacji w celu uwierzytelniania instalacji Firebase.
Aby zacząć bezpośrednio wywoływać interfejs FIS API, dodaj pakiet SDK do aplikacji.
Dodawanie do aplikacji pakietu SDK Firebaseinstalacji
iOS+
- Dodaj do pliku Podfile zależność dla instalacji Firebase:
pod 'FirebaseInstallations'
- Uruchom
pod installi otwórz utworzony plik.xcworkspace. - Zaimportuj moduł
FirebaseCorew plikuUIApplicationDelegate, a także inne moduły Firebase używane przez delegata aplikacji. Aby na przykład użyć znaczników Cloud Firestore i 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; // ...
- Skonfiguruj współdzieloną instancję
FirebaseAppw metodzieapplication(_:didFinishLaunchingWithOptions:)delegata aplikacji: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];
- Jeśli używasz SwiftUI, musisz utworzyć delegata aplikacji i dołączyć go do struktury
Appza pomocąUIApplicationDelegateAdaptorlubNSApplicationDelegateAdaptor. Musisz też wyłączyć zamianę delegata aplikacji. Więcej informacji znajdziesz w instrukcjach dotyczących SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Android
Dodaj zależność z pakietem Android SDK Firebaseinstalacjiapp/build.gradle do pliku Gradle na poziomie modułu (aplikacji) (zwykle app/build.gradle):
implementation 'com.google.firebase:firebase-installations:19.1.0'
JavaScript
W zależności od sposobu hostowania aplikacji internetowej konfiguracja może być obsługiwana automatycznie lub może być konieczne zaktualizowanie obiektu konfiguracji Firebase.
Jeśli na przykład zależności są dodawane w pliku index.html, dodaj zależność w elemencie <head>:
<script src="/__/firebase/12.12.0/firebase-installations.js"></script>
Flutter
W katalogu głównym projektu Flutter uruchom to polecenie, aby zainstalować wtyczkę Firebase:
flutter pub add firebase_app_installationsOdbuduj projekt:
flutter runZaimportuj wtyczkę instalacji Firebase:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Usuwanie instalacji Firebase
Dane powiązane z instalacją Firebase zazwyczaj nie umożliwiają identyfikacji konkretnej osoby. Mimo to warto dać użytkownikom możliwość zarządzania tymi danymi i ich usuwania.
Firebase identyfikatory instalacji są różne dla każdej instalacji każdej aplikacji; różne aplikacje na tym samym urządzeniu mają różne identyfikatory instalacji.Firebase Firebase identyfikatory instalacji służą do identyfikowania instalacji aplikacji i danych powiązanych z tymi instalacjami.
Gdy usuniesz identyfikator instalacji, dane powiązane z tym identyfikatorem zostaną usunięte z systemów aktywnych i kopii zapasowych wszystkich usług Firebase, które używają identyfikatorów instalacji Firebase do identyfikowania instalacji, w ciągu 180 dni. Ten proces jest ogólnie opisany w oświadczeniu Google na temat usuwania i przechowywania danych.
Jeśli nie wyłączysz w aplikacji wszystkich usług generujących identyfikatory FID, usługa FIS utworzy nowy identyfikator w ciągu kilku dni. Firebase uznaje nowo utworzony identyfikator za nową Firebaseinstalację i nie wiąże go w żaden sposób z poprzednim identyfikatorem ani danymi.
Usuwanie identyfikatora FID za pomocą wywołania interfejsu API klienta
Aby usunąć identyfikatory FID wygenerowane przez usługi Firebase, wywołaj odpowiednią metodę z Firebasepakietu SDK instalacji:
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();
Usuwanie identyfikatora FID za pomocą wywołania interfejsu API serwera
Aby usunąć identyfikator FID za pomocą wywołania interfejsu API serwera, dodaj do serwera pakiet Firebase Admin SDK, jeśli jeszcze tego nie zrobisz.
Po dodaniu pakietu SDK usuń identyfikatory FID, wywołując funkcję usuwania w wybranym języku (uwaga: z wyjątkiem Node.js te metody odzwierciedlają nazewnictwo identyfikatorów instancji). Wszystkie te funkcje usuwają jednak identyfikator FID, gdy są wywoływane z dowolnym bieżącym pakietem SDK Firebase).
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)
}
Gdy usuniesz identyfikator instalacji Firebase za pomocą wywołania interfejsu API serwera, usługi Firebase rozpoczną proces usuwania danych powiązanych z tym identyfikatorem instalacji. W ciągu 1–2 dni przestaną akceptować nowe dane dla tego identyfikatora, a następnie powiadomią aplikację kliencką o usunięciu identyfikatora. Do momentu, gdy Firebase powiadomi aplikację kliencką, niektóre usługi aplikacji mogą nadal kierować reklamy na ten identyfikator. Na przykład instalacja Firebase może jeszcze przez kilka godzin otrzymywać powiadomienia FCM.
Jeśli chcesz usunąć bieżący identyfikator instalacji Firebase i od razu zacząć korzystać z usług Firebase z nowym, niezwiązanym z nim identyfikatorem, użyj interfejsu API klienta, aby obsłużyć usuwanie.
Pobieranie identyfikatorów klienta
Jeśli chcesz identyfikować konkretne instalacje aplikacji, możesz to zrobić, pobierając Firebaseidentyfikator instalacji. Na przykład aby utworzyć segmenty instalacji aplikacji na potrzeby importu do BigQuery lub przeprowadzić testy podczas Firebase In-App Messagingprogramowania, możesz identyfikować i kierować reklamy na odpowiednie urządzenia za pomocą odpowiednich Firebaseidentyfikatorów instalacji.
Aby uzyskać identyfikator instalacji Firebase:
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();
Pobieranie tokenów uwierzytelniania instalacji
Usługi Firebase mogą uwierzytelniać instalacje Firebase za pomocą tokenów uwierzytelniających pobranych z FIS. Na przykład podczas projektowania testów A/B dla Remote Config możesz uwierzytelnić docelowe urządzenie testowe za pomocą tokena uwierzytelniającego instalację.
Token autoryzacji instalacji to krótkotrwały token dostępu w formacie tokena sieciowego JSON (JWT) zawierający te informacje o instalacji:
- Firebase identyfikator instalacji,
- powiązany projekt (
projectNumber); - Powiązany identyfikator aplikacji Firebase (
appId). - datę ważności tokena,
Tokenu autoryzacji instalacji nie można cofnąć. Pozostaje on ważny do daty ważności. Domyślny okres ważności tokena to tydzień.
Aby pobrać token uwierzytelniania instalacji:
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();
Monitorowanie cyklu życia identyfikatora instalacji Firebase
Podczas normalnego działania aplikacji Firebaseidentyfikatory instalacji (FID) nie wymagają specjalnego monitorowania. Aplikacje, które wyraźnie pobierają i wykorzystują identyfikatory FID, powinny jednak dodać logikę monitorowania potencjalnego usunięcia lub zmiany identyfikatora FID. Oto kilka sytuacji, w których identyfikatory FID mogą zostać usunięte lub zmienione:
- Odinstalowanie lub ponowne zainstalowanie aplikacji, na przykład gdy użytkownik instaluje ją na nowym urządzeniu.
- Użytkownik wyczyści pamięć podręczną aplikacji lub urządzenia.
- Usunięcie identyfikatora FID jest wywoływane na serwerze backendu z powodu braku aktywności w aplikacji (obecnie próg nieaktywności wynosi 270 dni).
Gdy w takich przypadkach nastąpi rotacja lub usunięcie identyfikatora FID, aplikacje otrzymają nowy identyfikator. Token uwierzytelniania instalacji powiązany z usuniętym identyfikatorem FID jest usuwany niezależnie od jego własnego okresu ważności i zastępowany nowym tokenem uwierzytelniania instalacji.
Aplikacje mogą monitorować te zmiany i odpowiednio na nie reagować.
Aby monitorować rotację identyfikatorów FID:
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]; }];
Gdy zostanie przypisany nowy identyfikator FID, do domyślnego obiektu NSNotificationCenter wysyłane jest powiadomienie NSNotification o nazwie NSNotificationName.InstallationIDDidChange.
Android
Klienci Kotlin i Java powinni dodać logikę ponawiania, aby odpowiadać na nieudane wywołania w celu pobrania nowego identyfikatora FID.
JavaScript
Aplikacje internetowe mogą subskrybować hook onIdChange.
Za każdym razem, gdy tworzony jest nowy identyfikator FID, wywoływane jest zarejestrowane wywołanie zwrotne:
await firebase.installations().onIdChange((newId) => { console.log(newId); // TODO: Handle new installation ID. });
Dart
FirebaseInstallations.instance.onIdChange.listen((token) {
print('FID token: $token');
});
Migracja z identyfikatora instancji na instalacje Firebase
Przed wprowadzeniem Firebase instalacji Firebase korzystał z pakietu SDK identyfikatora instancji do identyfikowania instalacji aplikacji. Firebase instalacji zapewnia znaczące korzyści w porównaniu z identyfikatorem instancji pod względem niezawodności, wydajności i bezpieczeństwa. Aplikacje Firebase, które korzystają z pakietu SDK identyfikatora instancji, powinny przejść na FirebaseinstalacjeFirebase.
Proces migracji różni się w zależności od aplikacji:
Aplikacje, które nie wywołują bezpośrednio interfejsów Instance ID API, mogą przeprowadzić migrację, aktualizując wersje pakietu SDK. Większość aplikacji Firebase należy do tej kategorii.
Aplikacje, które jawnie wywołują interfejs API identyfikatora instancji, muszą zaktualizować wersje pakietu SDKi wprowadzić zmiany w kodzie, aby zastąpić metody identyfikatora instancji ich odpowiednikami w Firebase instalacjach lub FCM. Jeśli Twoja aplikacja używa identyfikatora instancji do pobierania tokenów rejestracji FCM lub wyraźnie używa identyfikatora instancji do kierowania na instancje aplikacji lub w innych celach, musisz zaktualizować kod aplikacji.
Obecnie FIS jest wstecznie zgodny ze starszym identyfikatorem Firebase Instance ID. Usunięcie identyfikatora instancji to alternatywna metoda przesyłania próśb o usunięcie danych za pomocą tych pakietów Firebase SDK:
- iOS 6.14.0 i starsze
- Pakiety SDK na Androida starsze niż z 27 lutego 2020 r.
Oznacza to, że aplikacje nie muszą migrować do instalacji Firebase, ale jest to zdecydowanie zalecane.
Uaktualnianie do minimalnych wersji pakietu SDK w przypadku instalacji Firebase
Aby przejść z identyfikatora instancji na Firebaseinstalacje, upewnij się, że Twoje aplikacje używają co najmniej podanych minimalnych numerów wersji tych pakietów SDK Firebase:
| Pakiet SDK Firebase | Minimalna wersja Androida | Minimalna wersja iOS |
| Komunikacja w chmurze Firebase | v20.3.0 | v6.34.0 |
| Zdalna konfiguracja | v19.2.0 | v6.24.0 |
| Google Analytics dla Firebase (pakiet SDK do pomiaru skuteczności kampanii) | v17.4.4 | v6.18.0 |
| Wysyłanie wiadomości w aplikacji | v19.0.7 | v6.24.0 |
| Monitorowanie wydajności | v19.0.8 | v6.21.0 |
| Crashlytics | v17.2.1 | v6.23.0 |
| ML Kit | v22.1.2 | v6.28.0 |
Aktualizowanie kodu, który jawnie wywołuje interfejsy Instance ID API
Jeśli Twoja aplikacja na Androida lub iOS bezpośrednio korzysta z metod pakietu SDK Instance ID, możesz zastąpić je identycznymi alternatywami w Firebasepakiecie SDK instalacjiFCM lub w FCMpakiecie SDKFCM.
Pobieranie identyfikatora
Metody uzyskiwania identyfikatorów instancji zostały zastąpione metodami uzyskiwania identyfikatora instalacji. Przykład:
Przed
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) }
Po
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") } }
Usuwanie identyfikatora
Metody usuwania identyfikatorów instancji zostały zastąpione metodami usuwania Firebase identyfikatorów instalacji. Przykład:
Przed
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();
Po
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") } }
Pobieranie tokena rejestracji FCM
Przed wprowadzeniem usługi Instalacje Firebase FCM klienci pobierali tokeny rejestracji z usługi Instance ID. Pakiet SDK FCM udostępnia teraz metody pobierania tokena rejestracji.
Przed
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); } }];
Po
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); } }];