Firebase yüklemelerini yönetme

Firebase kurulumları hizmeti (FIS) sayesinde Yüklenen her örnek için Firebase kurulum kimliği (FID) olabilir. Firebase yükleme kimliği bu Firebase tarafından dahili olarak kullanılır hizmetler:

Firebase hizmeti Firebase kurulumları işlevi
Firebase Cloud Messaging

Firebase Cloud Messaging, Mesaj teslimi için hedef cihazlar için Firebase yükleme kimlikleri.

Firebase Crashlytics

Firebase Crashlytics, Crashlytics kurulumunu döndürür Uygulama örneğinin Firebase'indeki değişikliklere dayalı UUID kurulum kimliği. Gelecekte, Ayrıca, uygulamanızın yüklü olduğu özellikleri etkinleştirmek için kilitlenme raporu ve kilitlenme yönetimi hizmetlerini iyileştirmek için kullanılır.

Firebase Uygulama İçi Mesajlaşma

Firebase Uygulama İçi Mesajlaşma, Mesaj teslimi için hedef cihazlar için Firebase yükleme kimlikleri.

Firebase Performance Monitoring

Performance Monitoring, Firebase yükleme kimliklerini kullanır benzersiz Firebase yüklemelerinin sayısını hesaplamak için ağ kaynaklarını ayarlayarak erişim kalıplarının anonim hale getirebilirsiniz. Ayrıca Firebase Remote Config ile Firebase yükleme kimlikleri performans etkinliği raporlama oranını yönetmek için kullanılır.

Firebase Remote Config

Remote Config, Firebase yükleme kimliklerini kullanır yapılandırma seçmek için değerlerini kullanmanızı öneririz.

Firebase ML

Kimlik bilgisi çağrıldı kurulum kimlik doğrulama jetonları Firebase ML tarafından uygulamayla etkileşimde bulunurken cihaz kimlik doğrulaması , örneğin geliştirici modellerini uygulama örneklerine dağıtmak için.

Firebase Kullanıcı Segmentasyonu Depolama Alanı

Firebase Kullanıcı Segmentasyonu Depolama Alanı, Firebase yükleme kimliklerini depolar ve ilgili özellikler ile segmentler içerir. diğer Firebase hizmetlerine erişebilir.

Firebase hizmetleri genellikle Firebase kurulumlarını Geliştiricilerin doğrudan FIS API ile etkileşimde bulunmasını gerekli kılarak. Ancak, uygulama geliştiricilerin doğrudan FIS API, örneğin:

  • Bir Firebase kurulumunu ve yüklemeyle bağlantılı verileri silmek için.
  • Firebase için Google Ads'i hedeflemek üzere belirli uygulama yüklemeleri.
  • Firebase kimliğini doğrulamak üzere yükleme kimlik doğrulama jetonlarını almak için yükleme sayısını artırır.

Doğrudan arama özelliğini kullanmaya başlamak için FIS API'yi kullanıyorsanız SDK'yı uygulamanıza ekleyin.

Firebase yükleme SDK'sını uygulamanıza ekleme

iOS ve üzeri

  1. Firebase kurulumları için bağımlılığı Podfile'ınıza ekleyin:
    pod 'FirebaseInstallations'
    .
  2. pod install komutunu çalıştırın ve oluşturulan .xcworkspace dosyasını açın.
  3. FirebaseCore modülünü UIApplicationDelegate ve diğer Yetki verdiğiniz uygulamanın kullandığı Firebase modülleri. Örneğin, Cloud Firestore ve Authentication'ı kullanmak için:

    Hızlı Kullanıcı Arayüzü

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. Şunu yapılandır: FirebaseApp paylaşılan örneğinizin application(_:didFinishLaunchingWithOptions:) yöntemi:

    Hızlı Kullanıcı Arayüzü

    // 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];
  5. SwiftUI kullanıyorsanız bir uygulama temsilcisi oluşturup bunu eklemeniz gerekir UIApplicationDelegateAdaptor veyaApp NSApplicationDelegateAdaptor. Uygulama yetkilendirmesi kaydırmayı da devre dışı bırakmanız gerekir. Örneğin, daha fazla bilgi için SwiftUI talimatlarına bakın.

    Hızlı Kullanıcı Arayüzü

    @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üklemesi Android SDK'sı bağımlılığını modül (uygulama düzeyinde) Gradle dosyası (genellikle app/build.gradle):

implementation 'com.google.firebase:firebase-installations:18.0.0'

JavaScript

Web uygulamanızın nasıl barındırıldığına bağlı olarak yapılandırmanız otomatik olarak ele alınır veya Firebase yapılandırma nesnesi.

Örneğin, bağımlılıklarınız index.html'ye eklendiyse <head> bölümünde bağımlılık öğe:

<script src="/__/firebase/10.12.3/firebase-installations.js"></script>

Flutter

  1. Flutter projenizin kök dizininden aşağıdaki kodu çalıştırın: komutunu çalıştırın:

    flutter pub add firebase_app_installations
    
  2. Projenizi yeniden derleyin:

    flutter run
    
  3. Firebase yükleme eklentisini içe aktarın:

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

Firebase kurulumunu silme

Firebase kurulumuna bağlı veriler genellikle kişisel verilmez ortaya çıkarır. Yine de kullanıcılara bu verileri yönetme ve silme seçeneği sunmalıdır.

Firebase yükleme kimlikleri, uygulama; aynı cihazdaki farklı uygulamaların farklı Firebase yükleme kimlikleri. Firebase yükleme kimlikleri uygulamayı tanımlar ve verilere bağlı olarak dönüşüm sayısını artırır.

Bir yükleme kimliğini sildiğinizde, ona bağlı veriler tüm sistemlerin yayındaki ve yedek sistemlerinden kaldırılmıştır, Yüklemeleri tanımlamak için Firebase yükleme kimliklerini kullanan Firebase hizmetleri size geri döneceğim. Bu süreç, Google'ın belirtmeniz gerekir.

birkaç gün içinde yeni bir kimlik oluşturuyor. Firebase yeni oluşturulan kimliği yeni bir Firebase kurulumu olarak kabul eder ve hiçbir şekilde önceki kimlikle veya verilerle ilişkilendirmez.

İstemci API çağrısı ile 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+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();

Sunucu API çağrısı olan bir FID'yi silme

Sunucu API'si ile bir FID'yi silmek için çağrısına göre, henüz yapmadıysanız Firebase Admin SDK'sını sunucunuza ekleyin.

SDK eklendikten sonra istediğiniz dilde silme işlevi (not: Node.js dışında yöntemlerinin örnek kimliği adlandırmasını yansıtması gerekir. Ancak hepsi aslında FID).

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ı içeren bir Firebase yükleme kimliğini sildiğinizde, Firebase hizmetleri, söz konusu kurulum kimliğine bağlı verileri silme işlemini başlatır, söz konusu kimlik için 1-2 gün içinde yeni verileri kabul etmek ve ardından kimliğin silindiği istemci uygulamasıdır. Firebase, istemci uygulamasını bilgilendirene kadar kimliği yine de hedefleyebilir (örneğin, Firebase bir süre daha FCM bildirimleri almaya devam edebilir. saatlere ayarlanır.

Mevcut Firebase yükleme kimliğini silmek ve hemen yeni bir Yeni ve alakasız bir kimlikle Firebase hizmetleri, istemci API'sini kullanır geri yüklenir.

İstemci tanımlayıcılarını alma

Uygulamanızın belirli yüklemelerini belirlemeniz gerekiyorsa Firebase kurulum kimliğini alarak bunu yapabilir. Örneğin, uygulama yükleme segmentlerini BigQuery içe aktarma veya test etmek için kullanabileceğiniz en iyi uygulamaları tanımlayıp İlgili Firebase yükleme kimliklerini kullanarak doğru cihazları hedeflemelidir.

Firebase yükleme kimliği 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+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();

Yükleme kimlik doğrulama jetonlarını alma

Firebase hizmetleri, yetkilendirme jetonları ile Firebase yüklemelerinin kimliğini doğrulayabilir (FIS'ten alındı). Örneğin, A/B testleri tasarlarken Remote Config için, hedeflenen bir test cihazının kimliğini doğrulamak amacıyla bir yükleme kimlik doğrulama jetonudur.

Yükleme kimlik doğrulama jetonu kısa ömürlü bir hamiline ait jetondur JSON web jetonu (JWT) biçiminde bir kurulum:

  • 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ş tarihi. Varsayılan jetonun ömrü bir haftadır.

Yükleme kimlik doğrulama jetonu 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+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();

Firebase yükleme kimliğinin 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 bir şekilde alan ve kullanan uygulamalar potansiyel silme veya döndürme işlemlerinin izlenmesini İGG. Bazı durumlarda FID'ler silinebilir veya döndürülebilir:

  • Uygulamanın kaldırılması veya yeniden yüklenmesi (ör. bir son kullanıcı) yeni cihaza yüklenir.
  • Son kullanıcı, uygulamanın veya cihazın önbelleğini temizlediğinde.
  • FID silme işlemi, uygulama nedeniyle arka uçta tetikleniyor etkin olmama (şu anda bunun için eşik 270 gün boyunca işlem yapılmamasıdır).

Uygulamalarda FID döndürme veya silme işlemi yapıldığında Bunlara yeni bir FID atanır. Ayrıca, silinmiş bir FID ile ilişkili yükleme kimlik doğrulama jetonu kendi olgunluğuna bakılmaksızın silinir ve yerine yeni bir yükleme kimlik doğrulama jetonu.

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];
}];

NSNotificationName.InstallationIDDidChange adlı bir NSBildirimi yeni bir FID atandı.

Android

Kotlin ve Java istemcileri, başarısız çağrılara yanıt vermek için yeniden deneme mantığı eklemelidir kullanabilirsiniz.

JavaScript

Web uygulamaları, onIdChange kancasına abone olabilir.

Yeni bir FID oluşturulduğunda, abone olunan geri çağırma tetiklendi:

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 kurulumlarına geçiş

Firebase kurulumları kullanıma sunulmadan önce Firebase, Uygulama yükleme tanımlayıcıları için örnek kimliği SDK'sı. Firebase yüklemeleri performans, güvenilirlik, performans ve performans bakımından örnek kimliğine kıyasla ve güvenlik. Örnek Kimliği SDK'sına bağlı olan Firebase uygulamaları taşınmalıdır dönüşüm oranını artırır.

Taşıma süreci, uygulamanıza bağlı olarak farklılık gösterir:

  • Instance ID API'lerini doğrudan çağırmayan uygulamalar, taşıma işlemini şu şekilde gerçekleştirebilir: SDK sürümlerini güncellemek. Çoğu Firebase uygulaması bu kategoriye girer.

  • Örnek kimliğine açıkça API çağrıları yapan uygulamaların SDK sürümlerini güncellemesi gerekir ve Örnek Kimliğini değiştirmek için kod değişiklikleri yapın farklı yöntemler Firebase yüklemeleri veya FCM eşdeğerleri. Uygulamanızda FCM kayıt jetonlarını almak için örnek kimliği veya Uygulama örneklerini hedeflemek veya başka bir amaçla örnek kimliği oluşturmak için uygulama kodunuzu güncelleyin.

Şu anda, FIS Firebase Örnek Kimliği'nin eski tanımlayıcısıyla geriye dönük uyumludur. IID'yi silme Veri silme isteğinde bulunmanın alternatif bir yöntemidir. bu Firebase SDK'ları:

  • iOS 6.14.0 ve önceki sürümler
  • 27 Şubat 2020'den önceki Android SDK'ları

Yani uygulamaların Firebase yüklemelerine taşınması gerekmez; ancak bunu yapmanız önemle tavsiye edilir.

Firebase yüklemeleri için minimum SDK sürümlerine yükseltme

Örnek kimliğinden Firebase kurulumlarına geçiş yapmak için uygulamanız için listelenen minimum sürüm numaralarını, Firebase SDK'ları:

Firebase SDK'sı Minimum Android sürümü Minimum iOS sürümü
Firebase Cloud Messaging 20.3.0 sürümü sürüm 6.34.0
Remote Config 19.2.0 sürümü sürüm 6.24.0
Firebase için Google Analytics \ (Ölçüm SDK'sı) sürüm 17.4.4 sürüm 6.18.0
Uygulama İçi Mesajlaşma 19.0.7 sürümü sürüm 6.24.0
Performance Monitoring 19.0.8 sürümü sürüm 6.21.0
Crashlytics sürüm 17.2.1 sürüm 6.23.0
ML Kit sürüm 22.1.2 sürüm 6.28.0

Örnek Kimliği API'lerini açık bir şekilde ç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 kurulumlarındaki aynı alternatiflerle değiştirin. SDK'sı veya FCM SDK'sı.

Tanımlayıcı alınıyor

Örnek kimliklerini alma yöntemleri, yükleme alma yöntemleriyle değiştirilir Kimlik. Ö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)")
    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)
        }

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+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")
    }
}

Tanımlayıcı silme

Örnek kimliklerini silme yöntemlerinin yerini silme yöntemleri kullanılır Firebase yükleme kimlikleri. Ö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+KTX

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 Kurulumları kullanıma sunulmadan önce, FCM müşterileri kayıt jetonları örnek kimliğinden alındı. Artık, FCM SDK'sı kayıt jetonunu alma yöntemleri sağlar.

Ö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+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;
   }
 }];

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+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;
  }
}];