Google 致力于为黑人社区推动种族平等。查看具体举措

Firebase kurulumlarını yönetin

Firebase kurulum hizmeti (FIS), bir Firebase uygulamasının yüklü her örneği için bir Firebase kurulum kimliği (FID) sağlar. Firebase kurulum kimliği, geliştiricilerin doğrudan FIS API ile etkileşime girmesine gerek kalmadan Uygulama İçi Mesajlaşma veya Remote Config gibi Firebase hizmetleri tarafından dahili olarak kullanılır. Ancak, uygulama geliştiricilerinin doğrudan FIS API'sini çağırmak isteyebileceği 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 uygulamanıza SDK'yı ekleyin.

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

iOS

  1. : En Podfile için Firebase yüklemeleri için bağımlılık ekle
    pod 'Firebase/Installations'
  2. Çalıştır pod install ve oluşturulan açmak .xcworkspace dosyasını.
  3. Sizin de Firebase modülü içe UIApplicationDelegate :

    hızlı

    import Firebase

    Amaç-C

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

    hızlı

    // 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.0'

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 .

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

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

Firebase kurulumunu silin

Bir Firebase yüklemesine bağlı Veriler genellikle kişisel kimlik değildir. Yine de kullanıcılara bu verileri yönetme ve silme seçeneği sunmak faydalı 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 yüksek seviyede açıklanmıştır silme ve kalıcılık üzerindeki açıklamada .

Uygulamanızda FID oluşturan tüm hizmetleri 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 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:

hızlı

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

Bir sunucu API çağrısı ile bir FID'yi silin

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 eklendikten sonra, seçtiğiniz dildeki silme işlevine yapılan bir çağrı yoluyla FID'leri silin (not: Node.js dışında, bu yöntemler Örnek Kimliği adlandırmasını yansıtır. Ancak, mevcut herhangi bir Firebase ile çağrıldığında hepsi FID'yi gerçekten 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)

Git

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 kurulum kimliğini sildiğinizde, Firebase hizmetleri bu kurulum kimliğine bağlı verileri silme işlemini başlatır, 1-2 gün boyunca 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ına bildirimde bulunana kadar, uygulamanın bazı hizmetleri kimliği hedef almaya devam edebilir; örneğin, bir Firebase kurulumu birkaç saat boyunca FCM bildirimlerini almaya devam edebilir.

Mevcut Firebase kurulum kimliğini silmek ve Firebase hizmetlerini yeni, alakasız 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 yapmak için Firebase kurulum kimliğini kullanarak doğru test cihazını tanımlayabilir ve hedefleyebilirsiniz.

Bir Firebase kurulum kimliğini almak için:

hızlı

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

Kurulum kimlik doğrulama belirteçlerini al

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

Bir kurulum kimlik doğrulama jetonu, bir kurulum için aşağıdaki bilgileri içeren JSON web jetonu (JWT) formatında kısa ömürlü bir taşıyıcı jetondur:

  • Firebase kurulum kimliği
  • İlişkili proje ( projectNumber )
  • İlişkili Firebase uygulama İD ( appId )
  • Simgenin 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 yetkilendirme belirtecini almak için:

hızlı

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

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, FID'leri açıkça 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üklediğinde.
  • Son kullanıcı, uygulamanın veya cihazın önbelleğini temizler.
  • FID silme işlemi, uygulama hareketsizliği nedeniyle arka uçta tetiklenir (şu anda bunun için eşik 270 günlük hareketsizliktir).

Bu tür durumlarda uygulamalar FID döndürme veya silme ile karşılaştığında, bunlara yeni bir FID atanır. Ayrıca, silinen bir FID ile ilişkili kurulum kimlik doğrulama jetonu, kendi olgunluğuna bakılmaksızın silinir ve yeni bir kurulum kimlik doğrulama jetonu ile değiştirilir.

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

FID rotasyonunu izlemek için:

hızlı

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'yi almak için başarısız aramalara yanıt vermek için yeniden deneme mantığı eklemelidir.

JavaScript

Web uygulamaları abone olabilirsiniz onIdChange kanca.

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

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

Örnek Kimliğinden Firebase kurulumlarına geçiş yapın

Firebase yüklemelerinin 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ı, Instance ID'ye göre güvenilirlik, performans ve güvenlik açısından ö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'ler demiyorlar Uygulamalar bölümünden geçirebilirsiniz onların SDK sürümlerini güncelleyerek . Çoğu Firebase uygulaması 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. Uygulamanız, FCM kayıt belirteçlerini almak için Örnek Kimliğini kullanıyorsa veya uygulama örneklerini hedeflemek için veya başka herhangi bir amaç için Açıkça Örnek Kimliğini kullanıyorsa, uygulama kodunuzu güncellemeniz gerekir.

Şu anda FIS, eski tanımlayıcı Firebase Örnek Kimliği ile geriye dönük olarak uyumludur. Bir IID silinmesi bu Firebase SDK'larıyla veri silme talep alternatif bir yöntemdir:

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

Uygulamaların Firebase kurulumları taşıması için gerekli olmadığını Bu araçlar; ancak, bunu yapmanız şiddetle tavsiye edilir.

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

Örnek Kimliğinden 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
Google Analytics \ (Ölçüm SDK'sı) 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

Örnek Kimliği API'lerini açıkça çağıran kodu güncelleme

Android veya iOS uygulamanız doğrudan Örnek Kimliği SDK yöntemlerini kullanıyorsa, bu kullanımı Firebase kurulum SDK'sında veya FCM SDK'sında aynı alternatiflerle değiştirebilirsiniz.

Bir tanımlayıcı alma

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

Önce

hızlı

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

Sonra

hızlı

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 kurulum kimliklerini silme yöntemleriyle değiştirilir. Örneğin:

Önce

hızlı

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

Sonra

hızlı

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 alma

Firebase Kurulumlarının kullanıma sunulmasından önce, FCM istemcileri Örnek Kimliğinden kayıt jetonlarını 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()
        })

hızlı

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

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

hızlı

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