Firebase yüklemelerini yönetme

Firebase yükleme hizmeti (FIS), bir Firebase uygulamasının yüklenen her örneği için bir Firebase yükleme 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 Cloud Messaging

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

Firebase Crashlytics

Firebase Crashlytics, uygulama örneğinin Firebase kurulum kimliğinde yapılan değişikliklere göre Crashlytics kurulum UUID'sini döndürür. Yükleme kimliği, ileride kilitlenme raporu ve kilitlenme yönetimi hizmetlerini iyileştiren özellikleri etkinleştirmek için kullanılabilir.

Firebase Uygulama İçi Mesajlaşma

Firebase Uygulama İçi Mesajlaşma, mesaj teslimi için cihazları hedeflemek amacıyla Firebase yükleme kimliklerini kullanır.

Firebase Performance Monitoring

Performance Monitoring, ağ kaynaklarına erişen benzersiz Firebase yüklemelerinin sayısını hesaplamak için Firebase yükleme kimliklerini kullanarak erişim kalıplarının yeterince anonim olduğundan emin olur. Ayrıca, performans etkinliği raporlama hızını yönetmek için Firebase Remote Config ile Firebase yükleme kimliklerini kullanır.

Firebase Remote Config

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

Firebase ML

Yükleme kimlik doğrulama jetonları adı verilen kimlik bilgileri, uygulama örnekleriyle etkileşimde bulunurken cihaz kimlik doğrulaması (ör. geliştirici modellerini uygulama örneklerine dağıtmak) için Firebase ML tarafından kullanılır.

Firebase Kullanıcı Segmentasyonu Depolama Alanı

Firebase User Segmentation Storage, Firebase yükleme kimliklerini ve ilgili özellikleri ve segmentleri depolayarak bunları kullanan diğer Firebase hizmetlerine hedefleme bilgileri sağlar.

Firebase hizmetleri genellikle geliştiricilerin doğrudan FIS API ile etkileşim kurmasına gerek kalmadan Firebase kurulumları hizmetini kullanır. Ancak uygulama geliştiricilerin doğrudan FIS API'yi çağırmak isteyebilecekleri şu gibi durumlar vardır:

  • Bir Firebase kurulumunu ve yüklemeyle bağlantılı verileri silmek için.
  • Belirli uygulama yüklemelerini hedeflemek amacıyla tanımlayıcıları (Firebase yükleme kimlikleri) almak için.
  • Firebase yüklemelerini doğrulamak amacıyla yükleme kimlik doğrulama jetonları almak için.

Doğrudan FIS API'yi çağırmaya başlamak için 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 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 uygulamanıza ve yetki verdiğiniz kullanıcının kullandığı diğer tüm Firebase modüllerini içe aktarın. Ö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. Uygulama yetkilinizin application(_:didFinishLaunchingWithOptions:) yönteminde FirebaseApp paylaşılan bir örnek yapılandırın:

    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şturmanız ve UIApplicationDelegateAdaptor veya NSApplicationDelegateAdaptor aracılığıyla App yapınıza eklemeniz gerekir. Uygulama yetkilendirmesi kaydırmayı da devre dışı bırakmanız gerekir. 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 kurulumları Android SDK'sı bağımlılığını modül (uygulama düzeyinde) Gradle dosyanıza (genellikle app/build.gradle) ekleyin:

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 işlenebilir veya Firebase yapılandırma nesnenizi güncellemeniz gerekebilir.

Örneğin, bağımlılıklarınız index.html'ye eklendiyse bağımlılığı <head> öğesine ekleyin:

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

Flutter

  1. Firebase kurulumunuzun eklentisini yüklemek için Flutter projenizin kök dizininde 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 kurulumunu silme

Firebase kurulumuna bağlı veriler genellikle kimliği tanımlayıcı olmaz. Yine de kullanıcılara bu verileri yönetme ve silme seçeneği sunmak yararlı olabilir.

Firebase yükleme kimlikleri her uygulamanın her yüklemesinde farklıdır. Aynı cihazdaki farklı uygulamaların Firebase yükleme kimlikleri de farklıdır. Firebase yükleme kimlikleri, uygulama yüklemelerini ve bu uygulama yüklemelerine bağlı verileri tanımlar.

Bir yükleme kimliğini sildiğinizde, bu yükleme kimliğine bağlı veriler, yüklemeleri tanımlamak için Firebase yükleme kimliklerini kullanan tüm Firebase hizmetlerinin yayındaki ve yedek sistemlerinden 180 gün içinde kaldırılır. Bu işlem, Google'ın silme ve saklama ile ilgili beyanında üst düzeyde açıklanmıştır.

Uygulamanızdaki tüm FID oluşturma hizmetlerini devre dışı bırakmadığınız sürece FIS birkaç gün içinde yeni bir kimlik oluşturur. Firebase, yeni oluşturulan kimliği yeni bir Firebase kurulumu olarak kabul eder ve önceki kimlikle veya verilerle hiçbir şekilde 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 çağrısı olan bir FID'yi silmek için henüz yapmadıysanız Firebase Admin SDK'yı sunucunuza ekleyin.

SDK eklendikten sonra, seçtiğiniz dildeki silme işlevine yapılan bir çağrıyla FID'leri silin (not: Node.js hariç bu yöntemler, örnek kimliği adlandırmasını yansıtır.) Ancak mevcut bir Firebase SDK'sı ile çağrıldığında hepsi aslında FID'yi siler.)

Node.js

// An FIDsent from a client service SDK
const idToDelete = 'eyJhbGciOiJFUzI1N_iIs5';

admin.installations().deleteInstallation(idToDelete);

Java

// An FID sent from a client service SDK
String idToDelete = "eyJhbGciOiJFUzI1N_iIs5";

FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();

Python

  from firebase_admin import instance_id

  # An FID sent from a client service SDK
  id_to_delete = 'eyJhbGciOiJFUzI1N_iIs5'

  instance_id.delete_instance_id(id_to_delete)

Go

client, err := app.InstanceId(ctx)
if err != nil {
  log.Fatalln("error initializing client", err)
}

iidToDelete := "eyJhbGciOiJFUzI1N_iIs5"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
  log.Fatalln("error deleting FID", err)
}

Sunucu API çağrısı içeren bir Firebase yükleme kimliğini sildiğinizde, Firebase hizmetleri söz konusu yükleme kimliğine bağlı verileri silme işlemini başlatır, 1-2 gün içinde bu kimlik için yeni veri kabul etmeyi durdurur ve ardından istemci uygulamasına kimliğin silindiğini bildirir. Firebase, istemci uygulamasını bilgilendirene kadar uygulamanın bazı hizmetleri kimliği hedeflemeye devam edebilir. Örneğin, bir Firebase kurulumu birkaç saat süreyle FCM bildirimleri almaya devam edebilir.

Mevcut Firebase yükleme kimliğini silmek ve Firebase hizmetlerini yeni, alakasız bir kimlikle hemen kullanmak istiyorsanız silme işlemini istemci API'si üzerinden yapabilirsiniz.

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

Uygulamanızın belirli yüklemelerini tanımlamanız gerekiyorsa Firebase yükleme kimliğini alarak bunu yapabilirsiniz. Örneğin, BigQuery içe aktarma işlemi için uygulama yükleme segmentleri oluşturmak veya Firebase Uygulama İçi Mesajlaşma geliştirme sırasında test gerçekleştirmek isterseniz ilgili Firebase yükleme kimliklerini kullanarak doğru cihazları tanımlayabilir ve hedefleyebilirsiniz.

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, FIS'den alınan kimlik doğrulama jetonlarıyla Firebase yüklemelerinin kimliğini doğrulayabilir. Örneğin, Remote Config için A/B testleri tasarlarken, yükleme kimlik doğrulama jetonu kullanarak hedeflenen bir test cihazının kimliğini doğrulayabilirsiniz.

Yükleme kimlik doğrulama jetonu, JSON web jetonu (JWT) biçiminde olup yükleme için aşağıdaki bilgileri içeren kısa ömürlü bir hami jetondur:

  • Firebase yükleme kimliği
  • İlişkili proje (projectNumber)
  • İlişkili Firebase uygulama kimliği (appId)
  • Jetonun geçerlilik bitiş tarihi

Yükleme kimlik doğrulama jetonu iptal edilemez ve geçerlilik bitiş tarihine kadar geçerli olmaya devam eder. 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. Bununla birlikte, FID'leri açık bir şekilde alan ve kullanan uygulamalar, FID'nin olası silinmesini veya döndürülmesini izlemeye yönelik bir 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 (ör. son kullanıcı yeni bir cihaza yüklendiğinde.
  • Son kullanıcı, uygulamanın veya cihazın önbelleğini temizlediğinde.
  • FID silme işlemi, uygulamanın etkin olmaması nedeniyle arka uçta tetiklenir (şu anda bunun eşiği 270 gün boyunca etkinlik olmamasıdır).

Bu tür durumlarda uygulamalara FID döndürme veya silme işlemi yapıldığında, uygulamalara 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 yeni bir yükleme kimlik doğrulama jetonuyla değiştirilir.

Uygulamalar bu değişiklikleri izleyebilir ve buna göre yanıt verebilir.

FID rotasyonunu izlemek için:

Swift

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

Objective-C

__weak __auto_type weakSelf = self;
self.installationIDObserver = [[NSNotificationCenter defaultCenter]
        addObserverForName: FIRInstallationIDDidChangeNotification
                    object:nil
                     queue:nil
                usingBlock:^(NSNotification * _Nonnull notification) {
    // Fetch new Installation ID
    [weakSelf fetchInstallationsID];
}];

Yeni bir FID atandığında, varsayılan NS NotificationCenter'da NSNotificationName.InstallationIDDidChange adlı bir NSBildirim yayınlanır.

Android

Kotlin ve Java istemcileri, yeni FID'i almak için başarısız çağrılara yanıt vermek amacıyla yeniden deneme mantığı eklemelidir.

JavaScript

Web uygulamaları, onIdChange kancasına abone olabilir.

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

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

Dart

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

Örnek kimliğinden Firebase 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ını kullanıyordu. Firebase kurulumları; güvenilirlik, performans ve güvenlik açısından Örnek Kimliğine kıyasla önemli avantajlar sunar. Örnek Kimliği SDK'sına bağlı olan Firebase uygulamaları, Firebase yüklemelerine geçirilmelidir.

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

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

  • Açıkça Örnek Kimliğine API çağrıları yapan uygulamaların, SDK sürümlerini güncellemesi ve Örnek Kimliği yöntemlerini Firebase yüklemeleriyle veya FCM eşdeğerleriyle değiştirmek için kod değişiklikleri yapması gerekir. Uygulamanız, FCM kayıt jetonlarını almak için Örnek Kimliğini kullanıyorsa veya uygulama örneklerini hedeflemek için ya da başka bir amaçla açık bir şekilde Örnek Kimliği kullanıyorsa uygulama kodunuzu güncellemeniz gerekir.

FIS şu anda eski tanımlayıcı Firebase Örnek Kimliği ile geriye dönük uyumludur. IID'yi silmek, aşağıdaki Firebase SDK'larıyla veri silme isteğinde bulunmanın alternatif bir yöntemidir:

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

Bu, uygulamaların Firebase yüklemelerine taşınması zorunlu değildir ancak bunu yapmanız önemle tavsiye edilir.

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

Örnek Kimliği'nden Firebase yüklemelerine geçiş yapmak için uygulamalarınızın aşağıdaki Firebase SDK'larının minimum sürüm numaralarını kullandığından emin olun:

Firebase SDK'sı Minimum Android sürümü Minimum iOS sürümü
Firebase Cloud Messaging 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 yükleme SDK'sı veya FCM SDK'sında aynı alternatiflerle değiştirebilirsiniz.

Tanımlayıcı alınıyor

Örnek kimliklerini alma yöntemleri, yükleme kimliği alma yöntemleriyle değiştirilir. Örnek:

Ö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 Firebase yükleme kimliklerini silme yöntemleri alır. Örnek:

Ö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, örnek kimliğinden kayıt jetonları alıyordu. Artık FCM SDK'sı, kayıt jetonunu almak için yöntemler sunuyor.

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