Firebase yükleme hizmeti (FIS), bir Firebase uygulamasının her yüklü örneği için bir Firebase yükleme kimliği (FID) sağlar. Firebase yükleme kimliği, aşağıdaki Firebase hizmetleri tarafından dahili olarak kullanılır:
| Firebase hizmeti | Firebase yükleme işlevi |
|---|---|
| Firebase Cloud Messaging |
Firebase Cloud Messaging, mesajların teslim edileceği cihazları hedeflemek için Firebase yükleme kimliklerini kullanır. |
| Firebase Crashlytics |
Firebase Crashlytics, uygulama örneğinin Firebase yükleme kimliğindeki değişikliklere göre Crashlytics yükleme UUID'sini değiştirir. Gelecekte, kilitlenme raporlama ve kilitlenme yönetimi hizmetlerini iyileştiren özellikleri etkinleştirmek için yükleme kimliği kullanılabilir. |
| Firebase In-App Messaging |
Firebase In-App Messaging, mesajların teslim edileceği cihazları hedeflemek için Firebase yükleme kimliklerini kullanır. |
| Firebase Performance Monitoring |
Performance Monitoring, ağ kaynaklarına erişen benzersiz Firebase yüklemelerinin sayısını hesaplamak için Firebase yükleme kimliklerini kullanır. Bu sayede, erişim kalıplarının yeterince anonim olması sağlanır. Ayrıca performans etkinliği raporlama hızını yönetmek için Firebase Remote Config ile Firebase yükleme kimliklerini kullanır. |
| Firebase Remote Config |
Remote Config, son kullanıcı cihazlarına döndürülecek yapılandırma değerlerini seçmek için Firebase yükleme kimliklerini kullanır. Remote Config kişiselleştirme özelliği, uygulama etkinlik verilerini Firebase yüklemeleriyle ilişkilendirmek için Firebase yükleme kimliklerini kullanır. Bu sayede, son kullanıcı cihazları için en uygun yapılandırma değerlerini tahmin edip döndürür. |
| Firebase ML |
Firebase ML, uygulama örnekleriyle etkileşim kurarken (ör. geliştirici modellerini uygulama örneklerine dağıtmak için) cihaz kimlik doğrulaması amacıyla kurulum kimlik doğrulama jetonları adlı kimlik bilgilerini kullanır. |
| Firebase Kullanıcı Segmentasyonu Depolama Alanı |
Firebase Kullanıcı Segmentasyonu Depolama Alanı, Firebase yükleme kimliklerini ve ilgili özellikleri ve segmentleri depolayarak bunları kullanan diğer Firebase hizmetlerine hedefleme bilgileri sağlar. |
Firebase hizmetleri genellikle geliştiricilerin FIS API ile doğrudan etkileşim kurmasına gerek kalmadan Firebase kurulum hizmetini kullanır. Ancak uygulama geliştiricilerin FIS API'yi doğrudan çağırmak isteyebileceği durumlar da vardır. Örneğin:
- Bir Firebase yüklemesini ve yüklemeyle ilişkili verileri silmek için kullanılır.
- Belirli uygulama yüklemelerini hedeflemek için tanımlayıcıları (Firebase yükleme kimlikleri) almak.
- Firebase kurulumlarının kimliğini doğrulamak için kurulum kimlik doğrulama jetonlarını almak amacıyla kullanılır.
FIS API'yi doğrudan çağırmaya başlamak için SDK'yı uygulamanıza ekleyin.
Firebase yükleme SDK'sını uygulamanıza ekleyin
iOS+
- Firebase yüklemeleri için bağımlılığı Podfile dosyanıza ekleyin:
pod 'FirebaseInstallations'
pod installkomutunu çalıştırın ve oluşturulan.xcworkspacedosyasını açın.FirebaseCoremodülünüUIApplicationDelegatedosyanıza ve uygulama temsilcinizin kullandığı diğer Firebase modüllerine aktarın. Örneğin, Cloud Firestore ve Authentication kullanmak için:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Uygulama temsilcinizin
application(_:didFinishLaunchingWithOptions:)yönteminde paylaşılan birFirebaseAppörneği yapılandırın: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];
- SwiftUI kullanıyorsanız bir uygulama temsilcisi oluşturmanız ve bunu
UIApplicationDelegateAdaptorveyaNSApplicationDelegateAdaptoraracılığıylaAppyapınıza eklemeniz gerekir. Ayrıca, uygulama temsilcisi swizzling'ini de devre dışı bırakmanız gerekir. Daha fazla bilgi için SwiftUI talimatlarını inceleyin.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Android
Firebase yüklemeleri Android SDK'sına olan bağımlılığı, modülünüzün (uygulama düzeyinde) Gradle dosyasına (genellikle app/build.gradle) ekleyin:
implementation 'com.google.firebase:firebase-installations:20.0.0'
JavaScript
Web uygulamanızın nasıl barındırıldığına bağlı olarak yapılandırmanız otomatik olarak işlenebilir veya Firebase yapılandırma nesnenizi güncellemeniz gerekebilir.
Örneğin, bağımlılıklarınız index.html dosyasına ekleniyorsa bağımlılığı <head> öğesine ekleyin:
<script src="/__/firebase/13.0.0/firebase-installations.js"></script>
Flutter
Firebase kurulum eklentisini yüklemek için Flutter projenizin kök dizininden aşağıdaki komutu çalıştırın:
flutter pub add firebase_app_installationsProjenizi yeniden derleyin:
flutter runFirebase installations eklentisini içe aktarın:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Firebase yüklemesini silme
Bir Firebase yüklemesine bağlı veriler genellikle kimliği tanımlayıcı nitelikte değildir. Yine de kullanıcılara bu verileri yönetme ve silme seçeneği sunmak faydalı olabilir.
Firebase yükleme kimlikleri, her uygulamanın her yüklemesi için farklıdır. Aynı cihazdaki farklı uygulamaların farklı Firebase yükleme kimlikleri vardır. Firebase yükleme kimlikleri, uygulama yüklemelerini ve bu uygulama yüklemelerine bağlı verileri tanımlar.
Bir yükleme kimliğini sildiğinizde, bu yükleme kimliğine bağlı veriler, yüklemeleri tanımlamak için Firebase yükleme kimliklerini kullanan tüm Firebase hizmetlerinin canlı ve yedekleme sistemlerinden 180 gün içinde kaldırılır. Bu süreç, Google'ın silme ve saklama ile ilgili açıklamasında genel hatlarıyla açıklanmaktadır.
Uygulamanızda FID oluşturan tüm hizmetleri devre dışı bırakmadığınız sürece FIS, birkaç gün içinde yeni bir kimlik oluşturur. Firebase, yeni oluşturulan kimliği yeni bir Firebase yüklemesi olarak kabul eder ve önceki kimlik veya verilerle hiçbir şekilde ilişkilendirmez.
İstemci API çağrısıyla FID silme
Firebase hizmetleri tarafından oluşturulan FID'leri silmek için Firebase yükleme SDK'sından uygun yöntemi çağırın:
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();
Sunucu API çağrısıyla FID silme
Sunucu API çağrısıyla bir FID'yi silmek için henüz yapmadıysanız Firebase Admin SDK'yı sunucunuza ekleyin.
SDK eklendikten sonra, tercih ettiğiniz dilde silme işlevini çağırarak FID'leri silin (Not: Node.js hariç, bu yöntemler Örnek Kimliği adlandırmasını yansıtır. Ancak mevcut Firebase SDK'larından herhangi biriyle çağrıldığında hepsi FID'yi siler.
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)
}
Sunucu API çağrısıyla bir Firebase yükleme kimliğini sildiğinizde Firebase hizmetleri, bu yükleme kimliğine bağlı verileri silme işlemini başlatır, 1-2 gün boyunca bu kimlik için yeni veri kabul etmeyi durdurur ve ardından istemci uygulamasına kimliğin silindiğini bildirir. Firebase, istemci uygulamasını bilgilendirene kadar uygulamanın bazı hizmetleri kimliği hedeflemeye devam edebilir. Örneğin, bir Firebase yüklemesi birkaç saat boyunca FCM bildirimleri almaya devam edebilir.
Mevcut Firebase yükleme kimliğini silmek ve Firebase hizmetlerini hemen yeni, alakasız bir kimlikle kullanmak istiyorsanız silme işlemini gerçekleştirmek için istemci API'sini kullanın.
İstemci tanımlayıcılarını alma
Uygulamanızın belirli yüklemelerini tanımlamanız gerekiyorsa Firebase yükleme kimliğini alarak bunu yapabilirsiniz. Örneğin, BigQuery içe aktarma işlemi için uygulama yükleme segmentleri oluşturmak veya Firebase In-App Messaging geliştirme sırasında test yapmak istiyorsanız ilgili Firebase yükleme kimliklerini kullanarak doğru cihazları tanımlayıp hedefleyebilirsiniz.
Firebase yükleme kimliğini almak için:
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();
Yükleme kimlik doğrulama jetonlarını alma
Firebase hizmetleri, FIS'ten alınan kimlik doğrulama jetonlarıyla Firebase kurulumlarının kimliğini doğrulayabilir. Örneğin, Remote Config için A/B testleri tasarlarken bir yükleme kimlik doğrulama jetonu kullanarak hedeflenen bir test cihazının kimliğini doğrulayabilirsiniz.
Yükleme kimlik doğrulama jetonu, bir yükleme için aşağıdaki bilgileri içeren JSON web jetonu (JWT) biçiminde kısa süreli bir hamiline ait jetondur:
- Firebase yükleme kimliği
- İlişkili proje (
projectNumber) - İlişkili Firebase uygulama kimliği (
appId) - Jetonun geçerlilik bitiş tarihi
Yükleme kimlik doğrulama jetonu iptal edilemez ve geçerlilik bitiş tarihine kadar geçerli kalır. Varsayılan jeton kullanım süresi bir haftadır.
Yükleme kimlik doğrulama jetonunu almak için:
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();
Firebase yükleme kimliği yaşam döngüsünü izleme
Bir uygulamanın normal çalışması sırasında Firebase yükleme kimlikleri (FID'ler) özel izleme gerektirmez. Ancak FID'leri açıkça alan ve kullanan uygulamalar, FID'nin olası silme veya rotasyonunu izlemek için mantık eklemelidir. FID'lerin silinebileceği veya değiştirilebileceği bazı durumlar şunlardır:
- Uygulamanın kaldırılması veya yeniden yüklenmesi (ör. son kullanıcının yeni bir cihaza yüklemesi).
- Son kullanıcı, uygulamanın veya cihazın önbelleğini temizlerse
- Uygulamanın etkin olmaması nedeniyle arka uçta FID silme işlemi tetiklenir (şu anda bunun için eşik 270 gün boyunca etkin olmamaktır).
Bu tür durumlarda FID rotasyonu veya silme işlemi uygulanan uygulamalara yeni bir FID atanır. Ayrıca, silinen bir FID ile ilişkili kurulum kimlik doğrulama jetonu, kendi geçerlilik süresine bakılmaksızın silinir ve yeni bir kurulum kimlik doğrulama jetonuyla değiştirilir.
Uygulamalar bu değişiklikleri izleyebilir ve buna göre yanıt verebilir.
FID rotasyonunu izlemek için:
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]; }];
Yeni bir FID atandığında varsayılan NSNotificationCenter'a NSNotificationName.InstallationIDDidChange adlı bir NSNotification gönderilir.
Android
Kotlin ve Java istemcileri, yeni FID'yi almak için başarısız çağrılara yanıt verecek yeniden deneme mantığı eklemelidir.
JavaScript
Web uygulamaları onIdChange kancasına abone olabilir.
Yeni bir FID oluşturulduğunda abone olunan geri çağırma tetiklenir:
await firebase.installations().onIdChange((newId) => { console.log(newId); // TODO: Handle new installation ID. });
Dart
FirebaseInstallations.instance.onIdChange.listen((token) {
print('FID token: $token');
});
Örnek kimliğinden Firebase yüklemelerine geçiş yapma
Firebase kurulumlarının kullanıma sunulmasından önce Firebase, uygulama yüklemelerinin tanımlayıcıları için Örnek Kimliği SDK'sını kullanıyordu. Firebase kurulumları, güvenilirlik, performans ve güvenlik açısından Örnek Kimliği'ne kıyasla önemli avantajlar sağlar. Örnek Kimliği SDK'sına bağlı olan Firebase uygulamalarının Firebase yüklemelerine geçiş yapması gerekir.
Geçiş süreci, uygulamanıza göre farklılık gösterir:
Örnek Kimliği API'lerini doğrudan çağırmayan uygulamalar, SDK sürümlerini güncelleyerek geçiş yapabilir. Çoğu Firebase uygulaması bu kategoriye girer.
Örnek Kimliği'ne açıkça API çağrıları yapan uygulamalar, SDK sürümlerini güncellemeli ve Örnek Kimliği yöntemlerini Firebase kurulumları veya FCM eşdeğerleriyle değiştirmek için kod değişiklikleri yapmalıdır. Uygulamanız FCM kayıt jetonlarını almak için Örnek Kimliği'ni kullanıyorsa veya uygulama örneklerini hedeflemek ya da başka bir amaçla açıkça Örnek Kimliği'ni kullanıyorsa uygulama kodunuzu güncellemeniz gerekir.
FIS şu anda eski tanımlayıcı Firebase Instance ID ile geriye dönük uyumludur. Örnek kimliğini silme, şu Firebase SDK'larıyla veri silme isteğinde bulunmanın alternatif bir yöntemidir:
- iOS 6.14.0 ve önceki sürümler
- 27 Şubat 2020'den önceki Android SDK'ları
Bu, uygulamaların Firebase yüklemelerine geçiş yapmasının zorunlu olmadığı anlamına gelir ancak geçiş yapılması önemle tavsiye edilir.
Firebase yükleme için minimum SDK sürümlerine yükseltme
Örnek Kimliği'nden Firebase kurulumlarına geçiş yapmak için uygulamalarınızın aşağıdaki Firebase SDK'larının en azından listelenen minimum sürüm numaralarını kullandığından emin olun:
| Firebase SDK'sı | Minimum Android sürümü | Minimum iOS sürümü |
| Firebase Cloud Messaging | v20.3.0 | v6.34.0 |
| Remote Config | v19.2.0 | v6.24.0 |
| Firebase için Google Analytics \ (Ölçüm SDK'sı) | v17.4.4 | v6.18.0 |
| Uygulama İçi Mesajlaşma | 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 |
Örnek Kimliği API'lerini açıkça çağıran kodu güncelleme
Android veya Apple uygulamanız doğrudan Örnek Kimliği SDK'sı yöntemlerini kullanıyorsa bu kullanımı Firebase yüklemeler SDK'sı veya FCM SDK'sındaki aynı alternatiflerle değiştirebilirsiniz.
Tanımlayıcı alma
Örnek kimliklerini alma yöntemleri, yükleme kimliği alma yöntemleriyle değiştirildi. Örneğin:
Önce
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) }
Sonra
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") } }
Tanımlayıcı silme
Örnek kimliklerini silme yöntemleri, Firebase yükleme kimliklerini silme yöntemleriyle değiştirildi. Örneğin:
Önce
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();
Sonra
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 kayıt jetonu alma
Firebase Installations'ın kullanıma sunulmasından önce FCM istemcileri, kayıt jetonlarını Örnek Kimliği'nden alıyordu. FCM SDK'sı, kayıt jetonunu almak için yöntemler sunar.
Önce
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); } }];
Sonra
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); } }];