インスタンスIDは、アプリの個々のインストールを識別します。各インスタンスIDは特定のアプリとデバイスに固有であるため、Firebaseサービスに特定のアプリインスタンスを参照する方法を提供します。たとえば、Cloud MessagingはインスタンスIDを使用して、メッセージの送信先のデバイスを決定します。
いくつかのFirebaseサービスは、インスタンスIDを使用して機能を強化しています。
- 分析
- Crashlytics
- クラウドメッセージング
- リモート構成
インスタンスIDに関連付けられたアプリデータを管理する
インスタンスIDを使用してインストールを識別するサービスは、インスタンスIDをキーとして使用して関連データをそのデバイスに関連付けます。たとえば、CrashlyticsはインスタンスIDを使用してデバイスで発生したクラッシュを記録し、Remote Configはそれらを使用して構成をフェッチし、AnalyticsはインスタンスIDを使用して特定のオーディエンスを追跡します。
インスタンスIDに関連付けられたデータは、通常、個人を特定するものではありませんが、それでもユーザーにそれを管理するオプションを提供することは役立つ場合があります。そのために、FirebaseはインスタンスID関連のデータ収集を管理する2つの方法を提供します。
- インスタンスIDを削除します。サーバー側またはクライアント側のAPI呼び出しを使用してインスタンスIDを削除できます。インスタンスIDを削除すると、ID自体とそれに関連付けられているすべてのデータが削除されます。
- IDを生成するサービスを無効にします。インスタンスIDを使用するほとんどのFirebaseサービスは、起動時にデバイスにIDがない場合、自動的に新しいIDを生成します。アプリが不要なインスタンスIDを作成しないようにするには、これらのサービスの自動初期化を無効にします。
インスタンスIDを削除する
インスタンスIDを削除すると、上記のFirebaseサービスのいずれかでそのIDに関連付けられているデータも削除されます。これにより、IDの削除はユーザーデータをクリアするのに役立つツールになりますが、注意点もあります。インスタンスIDに依存する複数のサービスを使用している場合、IDを削除するとすべてのサービスからデータがクリアされます。
アプリでインスタンスIDを生成するすべてのサービスを無効にしない限り、インスタンスIDサービスは数日以内に新しいIDを作成します。 Firebaseは、新しく作成されたIDを新しいアプリインスタンスと見なし、以前のIDとは一切関連付けません。
クライアントAPI呼び出しでIDを削除する
Firebaseサービスによって生成されたIDを削除するには、FirebaseインスタンスIDAPIから適切なメソッドを呼び出します。
迅速
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);
}
}];
アンドロイド
FirebaseInstanceId.deleteInstanceId();
サーバーAPI呼び出しでIDを削除する
サーバーAPI呼び出しでインスタンスIDを削除するには、Firebase Admin SDKをサーバーに追加します(まだ追加していない場合)。
追加したら、選択した言語でインスタンスID削除関数を呼び出してIDを削除します。
Node.js
// An Instance ID sent from a client service SDK
const idToDelete = 'INSTANCE_ID';
admin.instanceId().deleteInstanceId(idToDelete);
Java
// An Instance ID sent from a client service SDK
String idToDelete = "INSTANCE_ID";
FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();
Python
from firebase_admin import instance_id
# An Instance ID sent from a client service SDK
id_to_delete = 'INSTANCE_ID'
instance_id.delete_instance_id(id_to_delete)
行け
client, err := app.InstanceId(ctx)
if err != nil {
log.Fatalln("error initializing client", err)
}
iidToDelete := "INSTANCE_ID"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
log.Fatalln("error deleting iid", err)
}
サーバーAPI呼び出しでインスタンスIDを削除すると、Firebaseサービスは関連データを削除し、そのIDの新しいデータの受け入れを停止し、数日以内にIDが削除されたことをクライアントアプリに通知します。 Firebaseがクライアントアプリに通知するまで、アプリの一部のサービスで機能が低下する可能性があります。
現在のインスタンスIDを削除し、すぐに新しい独立したIDでFirebaseサービスを使用する場合は、上記のクライアントAPIのいずれかを使用して削除を処理します。
インスタンスIDの生成を無効にする
インスタンスIDを使用するサービスは、現在IDがないアプリで初期化されると、新しいIDを自動的に生成します。通常、これらのサービスは、アプリの起動時に自動的に初期化されます。インスタンスIDの生成を無効にするには、インスタンスIDを使用するサービスの自動初期化を無効にする必要があります。
一般的なアプローチは、データ収集にオプトインするオプションをユーザーに提供することです。インスタンスIDを使用するサービスの自動初期化を無効にし、データ収集への同意をユーザーに求めるダイアログを実装し、サービスを手動で1回再度有効にします。あなたは同意します。
以下のガイドを読んで、インスタンスIDを使用するサービスの自動初期化を無効にし、代わりに手動で初期化する方法を確認してください。
- クラウドメッセージング:自動初期化の防止(Android)または自動初期化の防止(iOS +)
- クラッシュレポート:オプトインレポートを有効にする
- Analytics: Analyticsデータ収集を構成します