管理实例 ID 数据

实例 ID 用于标识已安装应用的每个实例。由于每个实例 ID 对于特定应用和设备都是独一无二的,因此这些 ID 为 Firebase 服务提供了一种指代特定应用实例的方式。例如,云消息传递使用实例 ID 来确定向哪些设备发送消息。

多项 Firebase 服务使用实例 ID 来支持其功能:

  • 分析
  • 崩溃报告
  • 云消息传递
  • 预测
  • 远程配置

管理与实例 ID 关联的应用数据

服务使用实例 ID 来标识已安装应用的实例,也使用这些 ID 作为键,将相关数据与该设备关联。例如,Crashlytics 使用实例 ID 记录设备上发生的崩溃情况,远程配置使用这些 ID 提取配置,而 Analytics 使用实例 ID 跟踪特定受众群体。

与实例 ID 关联的数据通常不属于个人身份信息,但仍然有助于向用户提供一种管理这些数据的方式。为此,Firebase 提供了两种方式来管理与实例 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 调用相应的方法:

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

通过服务器 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)

Go

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 的服务停用自动初始化,实现一个提示用户是否同意数据收集的对话框,然后在征求用户意见后手动重新启用这些服务。

阅读下面的指南,了解如何为使用实例 ID 的服务停用自动初始化,以及如何改为手动初始化这些服务:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面