实例 ID 标识您的应用程序的各个安装。由于每个实例 ID 对于特定应用和设备都是唯一的,因此它们为 Firebase 服务提供了一种引用特定应用实例的方法。例如,云消息传递使用实例 ID 来确定向哪些设备发送消息。
一些 Firebase 服务使用实例 ID 来支持其功能:
- 分析
- 崩溃分析器
- 云消息传递
- 远程配置
管理与实例 ID 关联的应用数据
使用实例 ID 来识别安装的服务也将它们用作将相关数据与该设备相关联的键。例如,Crashlytics 使用实例 ID 记录设备上发生的崩溃,远程配置使用它们来获取配置,分析使用实例 ID 来跟踪特定受众。
与实例 ID 关联的数据通常不是个人识别数据,但为用户提供管理数据的选项仍然很有帮助。为此,Firebase 提供了两种方法来管理与 Instance-ID 相关的数据收集:
- 删除实例 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 Instance ID API 调用相应的方法:
迅速
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:
节点.js
// An Instance ID sent from a client service SDK
const idToDelete = 'INSTANCE_ID';
admin.instanceId().deleteInstanceId(idToDelete);
爪哇
// 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 的服务的自动初始化,实现一个提示用户同意数据收集的对话框,然后手动重新启用服务一次你同意了。
阅读以下指南,了解如何禁用使用 Instance-ID 的服务的自动初始化,而是手动初始化它们:
- 云消息传递:阻止自动初始化 (Android)或阻止自动初始化 (iOS+)
- 崩溃报告:启用选择加入报告
- Analytics:配置 Analytics 数据收集