Firebase yüklemelerini yönetme

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

Firebase hizmeti Firebase yükleme işlevi
Firebase Cloud Messaging

Firebase Cloud Messaging kullanımları Mesaj teslimi için hedef cihazlar için Firebase yükleme kimliği.

Firebase Crashlytics

Firebase Crashlytics, Crashlytics yüklemesini 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 In-App Messaging

Firebase In-App Messaging kullanımları Mesaj teslimi için hedef cihazlar için Firebase yükleme kimliği.

Firebase Performance Monitoring

Performance Monitoring, Firebase yükleme kimliği kullanıyor 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 içeren Firebase yükleme kimliği performans etkinliği raporlama oranını yönetmek için kullanılır.

Firebase Remote Config

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

Firebase ML

Kimlik bilgisi çağrıldı yükleme kimlik doğrulama jetonları Firebase ML tarafından şunun için kullanılır: 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 kimliğini depolar ve ilgili özellikler ile segmentler içerir. diğer Firebase hizmetlerine erişebilir.

Firebase hizmetleri genellikle Firebase yükleme hizmetini 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.
  • Hedefleme amacıyla tanımlayıcıları (Firebase yükleme kimliği) almak için 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 ekleyin

iOS ve üzeri

  1. Firebase yüklemeleri için bağımlılığı Podfile dosyanı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 özelliklerini 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;
    // ...
          
  4. Şunu yapılandır: FirebaseApp paylaşılan örneğinizin application(_:didFinishLaunchingWithOptions:) yöntemi:

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

    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ü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/11.0.2/firebase-installations.js"></script>

Flutter

  1. Flutter projenizin kök dizininden aşağıdaki komutu çalıştırın: Firebase yükleme eklentisini yüklemek için aşağıdaki komutu ç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 yüklemesini sil

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

Firebase yükleme kimliği, her yüklemede farklıdır uygulama; aynı cihazdaki farklı uygulamaların farklı Firebase yükleme kimlikleri. Firebase yükleme kimliği, 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 yüklemesi 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 yükleme işlemi birkaç gün boyunca FCM bildirimleri almaya devam edebilir saatlere ayarlanır.

Mevcut Firebase yükleme kimliğini silmek ve hemen kullanmak istiyorsanız 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 bunu Firebase kurulum kimliğini alarak yapabilir. Örneğin, uygulama yükleme segmentlerini BigQuery içe aktarma veya Firebase In-App Messaging geliştirme sürecinde test ederek İlgili Firebase yükleme kimliklerini kullanarak doğru cihazları hedeflemeniz gerekir.

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 için şunu kullanabilirsiniz: 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ü izle

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 yüklemelerine taşıma

Firebase yüklemeleri kullanıma sunulmadan önce Firebase yalnızca Uygulama yükleme tanımlayıcıları için örnek kimliği SDK'sı. Firebase yükleme 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 Firebase yüklemeye.

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ükleme veya FCM eşdeğeri. 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ükleme için minimum SDK sürümlerine yükseltme

Örnek Kimliği'nden Firebase yüklemelerine 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: Firebase yüklemesinde bu kullanımı aynı alternatiflerle değiştir SDK 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 alınıyor

Firebase Kurulumları kullanıma sunulmadan önce FCM müşteri 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;
  }
}];