Firebase kurulumlarını yönetin

Firebase kurulum hizmeti (FIS), bir Firebase uygulamasının kurulu her örneği için bir Firebase kurulum kimliği (FID) sağlar. Firebase kurulum kimliği, şu Firebase hizmetleri tarafından dahili olarak kullanılır:

Firebase hizmeti Firebase kurulumları işlevi
Firebase Bulut Mesajlaşma

Firebase Cloud Messaging, mesaj teslimi için cihazları hedeflemek üzere Firebase kurulum kimliklerini kullanır.

Firebase Crashlytics

Firebase Crashlytics, uygulama örneğinin Firebase kurulum kimliğindeki değişikliklere göre Crashlytics kurulum UUID'sini döndürür. Gelecekte, kurulum kimliği, kilitlenme raporlamasını ve kilitlenme yönetimi hizmetlerini geliştiren özellikleri etkinleştirmek için kullanılabilir.

Firebase Uygulama İçi Mesajlaşma

Firebase Uygulama İçi Mesajlaşma, mesaj teslimi için cihazları hedeflemek üzere Firebase kurulum kimliklerini kullanır.

Firebase Performans İzleme

Performance Monitoring, erişim kalıplarının yeterince anonim olmasını sağlamak için ağ kaynaklarına erişen benzersiz Firebase kurulumlarının sayısını hesaplamak için Firebase kurulum kimliklerini kullanır. Performans olayı raporlama oranını yönetmek için Firebase Remote Config ile Firebase kurulum kimliklerini de kullanır.

Firebase Uzaktan Yapılandırma

Remote Config, son kullanıcı cihazlarına döndürülecek yapılandırma değerlerini seçmek için Firebase kurulum kimliklerini kullanır.

Firebase Makine Öğrenimi

Kurulum kimlik doğrulama belirteçleri adı verilen kimlik bilgileri, Firebase ML tarafından uygulama örnekleriyle etkileşim kurulurken, örneğin geliştirici modellerini uygulama örneklerine dağıtmak için cihaz kimlik doğrulaması için kullanılır.

Firebase Kullanıcı Segmentasyon Depolaması

Firebase User Segmentation Storage, Firebase kurulum kimliklerini ve ilgili öznitelikleri ve segmentleri, bunları kullanan diğer Firebase hizmetlerine hedefleme bilgileri sağlamak için depolar.

Tipik olarak, Firebase hizmetleri, geliştiricilerin doğrudan FIS API ile etkileşime girmesini gerektirmeden Firebase kurulum hizmetini kullanır. Ancak, uygulama geliştiricilerin doğrudan FIS API'sini çağırmak isteyebilecekleri durumlar vardır, örneğin:

  • Bir Firebase kurulumunu ve kuruluma bağlı verileri silmek için.
  • Belirli uygulama yüklemelerini hedeflemek için tanımlayıcıları (Firebase yükleme kimlikleri) almak için.
  • Firebase kurulumlarının kimliğini doğrulamak için kurulum kimlik doğrulama belirteçlerini almak için.

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

Firebase kurulumları SDK'sını uygulamanıza ekleyin

iOS+

  1. Firebase kurulumları için bağımlılığı Pod dosyanıza ekleyin:
    pod 'FirebaseInstallations'
  2. pod install çalıştırın ve oluşturulan .xcworkspace dosyasını açın.
  3. UIApplicationDelegate uygulamanıza FirebaseCore modülünü ve uygulama temsilcinizin kullandığı diğer Firebase modüllerini içe aktarın. Örneğin, Cloud Firestore ve Authentication'ı kullanmak için:

    SwiftUI

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

    Süratli

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Amaç-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. Uygulama temsilcinizin application(_:didFinishLaunchingWithOptions:) yönteminde bir FirebaseApp paylaşılan örneği yapılandırın:

    SwiftUI

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

    Süratli

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

    Amaç-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  5. SwiftUI kullanıyorsanız, bir uygulama temsilcisi oluşturmalı ve bunu UIApplicationDelegateAdaptor veya NSApplicationDelegateAdaptor aracılığıyla App yapınıza eklemelisiniz. Uygulama temsilcisi swizzling'i de devre dışı bırakmalısınız. 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 kurulumları Android SDK'sının bağımlılığını modülünüze (uygulama düzeyinde) Gradle dosyasına (genellikle app/build.gradle ) ekleyin:

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

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'ye eklenirse, bağımlılığı <head> öğesine ekleyin:

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

çarpıntı

  1. 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_installations
    
  2. Projenizi yeniden oluşturun:

    flutter run
    
  3. Firebase kurulum eklentisini içe aktarın:

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

Bir Firebase kurulumunu silme

Bir Firebase kurulumuna bağlı veriler genellikle kişisel olarak tanımlayıcı değildir . Yine de, kullanıcılara bu verileri yönetme ve silme seçeneği sunmak yararlı olabilir.

Firebase kurulum kimlikleri, her uygulamanın her kurulumu için farklıdır; aynı cihazdaki farklı uygulamaların farklı Firebase kurulum kimlikleri vardır. Firebase yükleme kimlikleri, uygulama yüklemelerini ve bu uygulama yüklemelerine bağlı verileri tanımlar.

Bir kurulum kimliğini sildiğinizde, bu kurulum kimliğine bağlı veriler, 180 gün içinde kurulumları tanımlamak için Firebase kurulum kimliklerini kullanan tüm Firebase hizmetlerinin canlı ve yedek sistemlerinden kaldırılır. Bu süreç, Google'ın silme ve saklama konusundaki beyanında üst düzeyde açıklanmıştır.

Uygulamanızda FID oluşturan tüm hizmetleri devre dışı bırakmazsanız, FIS birkaç gün içinde yeni bir kimlik oluşturur. Firebase, yeni oluşturulan kimliği yeni bir Firebase kurulumu olarak kabul eder ve hiçbir şekilde önceki kimlik veya verilerle ilişkilendirmez.

İstemci API çağrısıyla bir FID'yi silin

Firebase hizmetleri tarafından oluşturulan FID'leri silmek için Firebase kurulumları SDK'sından uygun yöntemi çağırın:

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ıyla bir FID'yi silin

Bir FID'yi sunucu API çağrısıyla silmek için henüz yapmadıysanız Firebase Admin SDK'yı sunucunuza ekleyin .

SDK eklendikten sonra, seçtiğiniz dilde silme işlevine çağrı yaparak FID'leri silin (not: Node.js dışında, bu yöntemler Örnek Kimliği adlandırmasını yansıtır. Ancak, geçerli bir Firebase ile çağrıldıklarında hepsi aslında FID'yi siler. 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 Firebase kurulum kimliğini bir sunucu API çağrısıyla sildiğinizde Firebase hizmetleri, bu kurulum kimliğine bağlı verileri silme işlemini başlatır, 1-2 gün içinde bu kimlik için yeni verileri kabul etmeyi durdurur ve ardından istemci uygulamasını bilgilendirir kimliğin silindiğini söyledi. Firebase istemci uygulamasını bilgilendirene kadar, uygulamanın bazı hizmetleri yine de kimliği hedefleyebilir; örneğin, bir Firebase yüklemesi birkaç saatliğine FCM bildirimleri almaya devam edebilir.

Geçerli Firebase kurulum kimliğini silmek ve Firebase hizmetlerini yeni, ilgisiz bir kimlikle hemen kullanmak istiyorsanız, silme işlemini gerçekleştirmek için istemci API'sini kullanın.

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

Uygulamanızın belirli yüklemelerini tanımlama gereksiniminiz varsa bunu Firebase yükleme kimliğini alarak yapabilirsiniz. Örneğin, Firebase Uygulama İçi Mesajlaşma geliştirmesi sırasında test gerçekleştirmek için Firebase kurulum kimliğini kullanarak doğru test cihazını tanımlayabilir ve hedefleyebilirsiniz.

Bir Firebase kurulum kimliğini 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();

Yükleme kimlik doğrulama belirteçlerini al

Firebase hizmetleri, Firebase kurulumlarının kimliğini FIS'den alınan kimlik doğrulama belirteçleriyle doğrulayabilir. Örneğin, Remote Config için A/B testleri tasarlarken, bir kurulum kimlik doğrulama belirteci kullanarak hedeflenen bir test cihazının kimliğini doğrulayabilirsiniz.

Bir yükleme kimlik doğrulama belirteci, bir yükleme için aşağıdaki bilgileri içeren JSON web belirteci (JWT) biçimindeki kısa ömürlü bir taşıyıcı belirteçtir:

  • Firebase kurulum kimliği
  • İlişkili proje ( projectNumber )
  • İlişkili Firebase uygulama kimliği ( appId )
  • Jetonun son kullanma tarihi

Bir yükleme kimlik doğrulama belirteci iptal edilemez ve sona erme tarihine kadar geçerli kalır. Varsayılan belirteç ömrü bir haftadır.

Bir yükleme kimlik doğrulama belirtecini 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

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 kurulum kimliği yaşam döngüsünü izleyin

Bir uygulamanın normal çalışması sırasında Firebase kurulum kimlikleri (FID'ler) özel izleme gerektirmez. Ancak, açıkça FID'leri alan ve kullanan uygulamalar, FID'nin olası silinmesini veya döndürülmesini izlemek için mantık eklemelidir. FID'lerin silinebileceği veya döndürülebileceği bazı durumlar şunlardır:

  • Uygulamanın kaldırılması veya yeniden yüklenmesi, örneğin bir son kullanıcı yeni bir cihaza yükleme yaptığında.
  • Son kullanıcı, uygulamanın veya cihazın önbelleğini temizler.
  • FID silme işlemi, uygulamanın etkin olmaması nedeniyle arka uçta tetiklenir (şu anda bunun eşiği 270 günlük etkinliksizliktir).

Uygulamalar bu tür durumlarda FID döndürme veya silme işlemi yaşadığında, bunlara yeni bir FID atanır. Ayrıca, silinmiş bir FID ile ilişkili kurulum kimlik doğrulama belirteci, kendi vadesinden bağımsız olarak silinir ve yeni bir yükleme kimlik doğrulama belirteciyle değiştirilir.

Uygulamalar bu değişiklikleri izleyebilir ve buna göre yanıt 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];
}];

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 vermek üzere yeniden deneme mantığı eklemelidir.

JavaScript

Web uygulamaları onIdChange kancasına abone olabilir.

Yeni bir FID oluşturulduğunda, abone olunan 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');
});

Instance ID'den Firebase kurulumlarına geçiş

Firebase kurulumlarının kullanıma sunulmasından önce Firebase, uygulama yüklemelerinin tanımlayıcıları için Örnek Kimliği SDK'sına güveniyordu. Firebase kurulumları, güvenilirlik, performans ve güvenlik açısından Instance ID'ye göre önemli avantajlar sağlar. Örnek Kimliği SDK'sına bağlı olan Firebase uygulamaları, Firebase kurulumlarına taşınmalıdır.

Taşıma işlemi, uygulamanıza göre farklılık gösterir:

  • Doğrudan Örnek Kimliği API'lerini çağırmayan uygulamalar , SDK sürümlerini güncelleyerek geçiş yapabilir. Çoğu Firebase uygulaması bu kategoriye girer.

  • Açıkça Örnek Kimliğine API çağrıları yapan uygulamalar, Örnek Kimliği yöntemlerini Firebase kurulumları veya FCM eşdeğerleriyle değiştirmek için SDK sürümlerini güncellemeli ve kod değişiklikleri yapmalıdır . Uygulamanız, FCM kayıt belirteçlerini almak için Örnek Kimliği kullanıyorsa veya uygulama örneklerini hedeflemek için veya başka bir amaçla Açıkça Örnek Kimliği kullanıyorsa, uygulama kodunuzu güncellemeniz gerekir.

Şu anda FIS, eski tanımlayıcı Firebase Instance ID ile geriye dönük uyumludur. Bir IID'yi silmek, şu Firebase SDK'ları ile veri silme talebinde bulunmanın alternatif bir yöntemidir:

  • iOS 6.14.0 ve altı
  • 27 Şubat 2020'den önceki Android SDK'ları

Bu, uygulamaların Firebase kurulumlarına taşınması gerekmediği anlamına gelir; ancak, bunu yapmanız şiddetle tavsiye edilir.

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

Instance ID'den Firebase kurulumlarına geçiş yapmak için uygulamalarınızın en azından aşağıdaki Firebase SDK'larının 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 Bulut Mesajlaşma v20.3.0 v6.34.0
Uzak Yapılandırma v19.2.0 v6.24.0
Firebase için Google Analytics \ (Measurement 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
Makine Öğrenimi Kiti 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 kurulumları SDK'sı veya FCM SDK'sındaki aynı alternatiflerle değiştirebilirsiniz.

Bir tanımlayıcı alma

Örnek Kimliklerini alma yöntemleri, bir kurulum kimliği alma yöntemleriyle değiştirilmiştir. Örneğin:

Önce

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ıyı silme

Örnek Kimliklerini silme yöntemleri, Firebase yükleme kimliklerini silme yöntemleriyle değiştirilmiştir. Örneğin:

Önce

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

Bir FCM kayıt jetonu alınıyor

Firebase Kurulumlarının kullanıma sunulmasından önce, FCM istemcileri kayıt jetonlarını Örnek Kimliğinden aldı. Şimdi, FCM SDK, kayıt belirtecini almak için yöntemler 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()
        })

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