Check out what’s new from Firebase at Google I/O 2022. Learn more

Firebase kurulumlarını yönetin

Firebase tesisat servisi (FIS) bir Firebase uygulamanın her yüklü örneği için bir Firebase yükleme kimliğini (FID) sağlar. Firebase Yükleme kimliği bu Firebase servisleri tarafından dahili olarak kullanılır:

Firebase hizmet Firebase tesisat işlevsellik
Firebase Bulut Mesajlaşma

Firebase Bulut Mesajlaşma mesajı teslimatı için cihazları hedef Firebase kurulum kimliklerini kullanır.

Firebase Uygulama İçi Mesajlaşma

Firebase Uygulama İçi Mesajlaşma mesajı teslimatı için cihazları hedef Firebase kurulum kimliklerini kullanır.

Firebase Performans İzleme

Performans İzleme kullanımları Firebase kurulum kimlikleri erişim ağı kaynakları, bu erişim biçimleri yeterince anonim olmasını sağlamak için benzersiz Firebase tesisat sayısını hesaplamak için. Aynı zamanda performans olay raporlama hızını yönetmek için Firebase Uzaktan Config ile Firebase kurulum kimliklerini kullanır.

Firebase için Google Analytics

Firebase için Google Analytics analitik ve atıf bilgileri temin etmek verileri kullanır. Toplanan kesin bilgi cihazı ve çevre göre değişebilir.

Firebase Uzaktan Yapılandırma

Uzaktan Yapılandırma son kullanıcı cihazlarına dönmek için yapılandırma değerlerini seçmek için Firebase kurulum kimliklerini kullanır.

Firebase ML

Adı Kimlik yükleme kimlik doğrulama belirteçleri uygulama örnekleri ile etkileşim halinde olduğu zaman cihaz kimlik doğrulaması için Firebase ML tarafından kullanılan, örneğin, uygulama örneklerine geliştirici modelleri dağıtmak.

Tipik olarak, Firebase hizmetleri FIS API ile doğrudan etkileşim geliştiricilerin gerektirmeden Firebase tesisat hizmeti kullanmak. Ancak, bu tür olarak uygulama geliştiricileri doğrudan FIS apı'sini isteyebilirsiniz durumlar vardır:

  • Kurulum bağlı bir Firebase kurulum ve verileri silmek için.
  • özel uygulama yüklemeleri hedeflemek için tanımlayıcı (Firebase kurulum kimlikleri) almak için.
  • Firebase yüklemelerini kimliğini doğrulamak için kurulum auth belirteçleri almak için.

doğrudan FIS API'sini çağıran başlamak için, uygulamanıza SDK'yı ekleyin.

uygulamanıza Firebase tesisat SDK ekle

iOS +

  1. : En Podfile için Firebase yüklemeleri için bağımlılık ekle
    pod 'FirebaseInstallations'
    PLACEHOLDER1
  2. Çalıştır pod install ve oluşturulan açmak .xcworkspace dosyasını.
  3. İçe FirebaseCore sizin modülü UIApplicationDelegate başka yanı sıra Firebase modülleri uygulama temsilci kullanımlarını. Örneğin, Bulut FireStore ve Kimlik Doğrulaması kullanmak:

    Süratli

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Amaç-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. Yapılandırma bir FirebaseApp tipik uygulamanızın içinde, örnek paylaşılan application:didFinishLaunchingWithOptions: yöntemi:

    Süratli

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Amaç-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Android

Senin modülü (uygulama düzeyinde) Gradle dosyası (genellikle için Firebase kurulumları Android SDK için bağımlılık ekleme app/build.gradle ):

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

JavaScript

Web uygulaması barındırılan nasıl bağlı olarak, yapılandırma otomatik işlenebilir ya da güncellemeniz gerekebilir Firebase yapılandırma nesnesi .

bağımlılıklar index.html eklenir Örneğin, <head> öğesinde bağımlılık ekleyin:

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

çarpıntı

  1. senin Flutter projenin kök dizininde itibaren eklentisi Firebase yüklemeleri yüklemek için aşağıdaki komutu çalıştırın:

    flutter pub add firebase_app_installations
    
  2. Projenizi yeniden:

    flutter run
    
  3. Firebase yüklemelerini eklentisi içe aktarın:

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

Bir Firebase yüklemesini silme

Bir Firebase yüklemesine bağlı Veriler genellikle kişisel kimlik değildir . Yine de, kullanıcılara yönetmek ve bu verileri silmek için bir seçenek vermek yararlı olabilir.

Firebase kurulum kimlikleri her uygulama her yükleme için farklıdır; aynı cihaz üzerinde farklı uygulamalar farklı Firebase kurulum kimliklerine sahip. Firebase kurulum kimlikleri uygulama yüklemelerini ve bu uygulama yüklemelerinde bağlı verileri belirlemek.

Eğer bir yükleme kimliği sildiğinizde, o montaj kimliğinize bağlı veri 180 gün içinde teçhizatları tespit etmek Firebase kurulum kimlikleri kullanan tüm Firebase hizmetlerinin canlı ve yedekleme sistemleri kaldırılır. Bu süreç, Google'ın yüksek seviyede açıklanmıştır silme ve kalıcılık üzerindeki açıklamada .

uygulamanızda tüm FID üreten hizmetleri devre dışı sürece, FIS birkaç gün içinde yeni bir kimlik oluşturur. Firebase yeni Firebase yüklemeyi olmak yeni oluşturulan kimliği dikkate alır ve herhangi bir şekilde bir önceki kimlik veya verilerle ilişkilendirmek etmez.

Bir istemci API çağrısı ile bir FID Sil

Firebase hizmetleri tarafından oluşturulan silme FID için Firebase tesislerden uygun yöntemi çağırmak SDK:

Süratli

Installations.installations().delete { error in
  if let error = error {
    print("Error deleting installation: \(error)")
    return
  }
  print("Installation deleted");
}

Amaç-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();

Bir sunucu API çağrısı ile bir FID Sil

Bir sunucu API çağrısı ile bir FID silmek için , sunucuya Firebase Yönetici SDK'yı eklemek Eğer henüz yapmadıysanız,.

SDK seçim (notun kendi dilinizde silme işlevi çağrılmış aracılığıyla, silme Fıd'lerin eklendikten sonra: node.js dışında, bu yöntemler örneği kimliği adlandırma yansıtmak Ancak, hepsi aslında FID silmek herhangi bir geçerli Firebase ile çağrıldığında. SDK).

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();

piton

  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)

Gitmek

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

Bir sunucu API çağrısı ile bir Firebase yükleme kimliğini sildiğinizde Firebase hizmetleri durdurma 1-2 gün boyunca bu kimlik için yeni veriler kabul o yükleme kimliğinize bağlı verileri silmek için işlemi başlatmak ve sonra istemci uygulamasını bildirmek kimlik silindiğini. Firebase istemci uygulaması bildirir kadar, uygulamanın bazı hizmetler hala kimlik-örneğin, bir Firebase kurulum birkaç saatliğine FCM bildirimlerini almaya devam edebilirsiniz hedefleyebilir.

Geçerli Firebase kurulum kimliğini silin ve hemen yeni, ilgisiz kimliğiyle Firebase hizmetlerini kullanmak istiyorsanız, silme işlemek için istemci API kullanmak.

istemci tanımlayıcıları

uygulamanızın belirli yüklemelerini belirlemek için bir gereksinim varsa, Firebase yükleme kimliğini alırken bunu yapabilirsiniz. Örneğin, Firebase Uygulama İçinde Mesajlaşma gelişimi sırasında test gerçekleştirmek için, tanımlamak ve Firebase yükleme kimliğini kullanarak doğru test cihazı hedefleyebilir.

Bir Firebase kurulum kimliğinizi almak için:

Süratli

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

Amaç-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();

Kurulum kimlik doğrulama belirteçleri Al

Firebase hizmetler FIS alınan yetkilendirme fişlerle Firebase yüklemelerini kimliğini doğrulayabilir. Uzaktan Config için A / B testleri tasarlanırken Örneğin, bir kurulum doğrulama anahtarı kullanarak hedeflenen test cihazını kimliğini doğrulayabilir.

Gibi bir tesisat doğrulama anahtarı, bir yükleme için aşağıdaki bilgileri içeren kısa ömürlü bir belirteç JSON ağ-belirteç taşıyıcı (JWT'de) biçimi:

  • Firebase Yükleme kimliği
  • İlişkili proje ( projectNumber )
  • İlişkili Firebase uygulama İD ( appId )
  • jetonun son kullanma tarihi

Bir yükleme doğrulama anahtarı iptal ve son kullanma tarihine kadar geçerli kalır edilemez. ömür boyu belirteç varsayılan bir haftadır.

jetonun bir yükleme auth almak için:

Süratli

Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in
  if let error = error {
    print("Error fetching token: \(error)")
    return
  }
  guard let result = result else { return }
  print("Installation auth token: \(result.authToken)")
})

Amaç-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

FirebaseInstallations.getInstance().getToken(/* forceRefresh */ true)
    .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 kurulum kimlik yaşam döngüsünü Monitör

Bir uygulamanın normal çalışması sırasında, Firebase kurulum kimlikleri (Fıd'lerin) özel izlemeye gerektirmez. Ancak, açıkça almak ve kullanım Fıd'lerin FID potansiyel silinmesini veya dönüşünü izlemek için mantığı eklemek gerektiğini uygulamalar. İşte Fıd'lerin silinmiş veya döndürülmüş olabilir bazı durumlar vardır:

  • Kaldırma veya uygulama yeniden kurulması, örneğin bir son kullanıcı, yeni bir cihazda yükler.
  • Son kullanıcı uygulaması veya cihazın önbelleği temizler.
  • FID silme nedeniyle uygulama hareketsizlik için arka uç tetiklenir (Bu eşik hareketsizlik 270 gündür).

Uygulamaların durumlarda bu tür FID dönüşünü veya silinmesini karşılaştığınızda, yeni bir FID atanır. Ayrıca, silinmiş FID ile ilişkili belirteç montaj auth bakılmaksızın kendi olgunluk, silinir ve yeni bir yükleme doğrulama anahtarı ile değiştirilir.

Uygulamalar bu değişiklikleri izlemek ve buna göre cevap verebilir.

FID dönüşünü izlemek için:

Süratli

installationIDObserver = NotificationCenter.default.addObserver(
        forName: .InstallationIDDidChange,
        object: nil,
        queue: nil
) { (notification) in
  // Fetch new Installation ID
  self.fetchInstallationToken()
}

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

Bir NSNotification adlı NSNotificationName.InstallationIDDidChange yeni FID atanan her varsayılan NSNotificationCenter gönderilir.

Android

Kotlin ve Java istemcileri yeni FID alamadı çağrılarda yanıt verdiklerini yeniden deneme mantığı eklemek gerekir.

JavaScript

Web uygulamaları abone olabilirsiniz onIdChange kanca.

Yeni bir FID oluşturulduğunda zaman, abone geri arama tetiklenir:

await firebase.installations().onIdChange((newId) => {
  console.log(newId);
  // TODO: Handle new installation ID.
});

Dart

FirebaseInstallations.instance.onIdChange.listen((token) {
  print('FID token: $token');
});

Geçiş Örneği ID Firebase kurulumlarına

Firebase kurulumların getirilmesinden önce, Firebase uygulama yüklemeleri arasında tanımlayıcıları için Instance ID SDK dayanıyordu. Firebase tesisat güvenilirlik, performans ve güvenlik içinde örnek KIMLIĞI göre önemli avantajlar sağlamaktadır. Örnek Kimliği SDK bağlıdır Firebase uygulamalar Firebase kurulumları geçmeleri gerekmektedir.

göç işlemi uygulamaya göre farklıdır:

  • Doğrudan Örnek Kimliği API'ler demiyorlar Uygulamalar bölümünden geçirebilirsiniz onların SDK sürümlerini güncelleyerek . Çoğu Firebase Uygulamaların bu kategoriye girer.

  • Açıkça SDK sürümlerini ve güncellemek gerekir Örnek kimliğine API çağrıları yapmak Uygulamalar yapmak kod değişiklikleri kendi Firebase kurulumları veya FCM eşdeğerleriyle Örneği Kimliği yöntemler yerine. uygulama FCM kayıt jetonları almak için Örnek kimliğini kullanan veya açıkça hedef uygulama örneklerine veya başka bir amaçla Örnek kimliğini kullanıyorsa, uygulamanızın kodunu güncellemeniz gerekir.

Şu anda, FIS Firebase örnek numarası tanımlayıcı mirası geriye doğru uyumlu olan. Bir IID silinmesi bu Firebase SDK'larıyla veri silme talep alternatif bir yöntemdir:

  • IOS 6.14.0 ve alt
  • 27 Şubat 2020 daha erken Android SDK'ları

Uygulamaların Firebase kurulumları taşıması için gerekli olmadığını Bu araçlar; Ancak, bu yüzden şiddetle tavsiye payı vardır.

Firebase kurulumları için minimum SDK sürümleri yükseltme

Uygulamalarınız aşağıdaki Firebase SDK'larının en az belirtilen minimum sürüm numaralarını kullanabilirsiniz emin Firebase kurulumlarına Örnek kimliğinden taşımak için:

Firebase SDK Asgari Android sürümü Asgari iOS sürümü
Firebase Bulut Mesajlaşma v20.3.0 v6.34.0
Uzaktan Yapılandırma v19.2.0 v6.24.0
Firebase için Google Analytics \ (Ölçme SDK) v17.4.4 v6.18.0
Uygulama İçi Mesajlaşma v19.0.7 v6.24.0
Performans İzleme v19.0.8 v6.21.0
Crashlytics v17.2.1 v6.23.0
ML Kiti v22.1.2 v6.28.0

açıkça Örnek Kimliği API'leri çağıran kodu Güncellenmesi

Android veya Apple uygulama doğrudan Örneği Kimliği SDK yöntemlerini kullanıyorsa, Firebase kurulumları SDK ya FCM SDK özdeş alternatifleriyle kullanımın yerini alabilir.

bir tanımlayıcı alınıyor

Yöntemler Örnek Kimlikleri bir tesisat kimliğini almak için yöntemlerle değiştirilir olsun. Örneğin:

Önceki

Süratli

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

Amaç-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)
        }

Sonrasında

Süratli

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

Amaç-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")
    }
}

bir tanımlayıcı silme

Örnek kimlikleri silmek için Yöntemler Firebase kurulum kimlikleri silmek için yöntemlerle değiştirilir. Örneğin:

Önceki

Süratli

InstanceID.instanceID().deleteID { error in
  if let error = error {
    print("Error deleting instance ID: \(error)")
  }
}

Amaç-C

[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
  if error != nil {
    NSLog(@"Error deleting instance ID: %@", error);
  }
}];

Android

FirebaseInstanceId.deleteInstanceId();

Sonrasında

Süratli

func delete(completion: @escaping (Error?) -> Void)

Amaç-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 belirteci alınıyor

Önceki Firebase Tesislerinde tanıtımı için FCM istemcileri Örnek kimliğinden kayıt belirteçleri alınır. Şimdi FCM SDK kayıt kodunu almasına yöntemler sağlar.

Önceki

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()
        })

Süratli

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

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

Sonrasında

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()
})

Süratli

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

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