Catch up on everything we announced at this year's Firebase Summit. Learn more

管理實例 ID 數據

實例 ID 標識應用程序的各個安裝。由於每個實例 ID 對於特定的應用程序和設備都是唯一的,因此它們為 Firebase 服務提供了一種引用特定應用程序實例的方法。例如,雲消息傳遞使用實例 ID 來確定向哪些設備發送消息。

多個 Firebase 服務使用實例 ID 來支持其功能:

  • 分析
  • Crashlytics
  • 雲消息
  • 預測
  • 遠程配置

管理與實例 ID 關聯的應用數據

使用實例 ID 來標識安裝的服務也將它們用作將相關數據與該設備相關聯的密鑰。例如,Crashlytics 使用實例 ID 來記錄設備上發生的崩潰,遠程配置使用它們來獲取配置,而 Analytics 使用實例 ID 來跟踪特定受眾。

與實例ID相關聯的數據一般用於識別個人身份,但它仍然可以幫助使用戶能夠管理它的選項。為此,Firebase 提供了兩種方法來管理與實例 ID 相關的數據收集:

  • 刪除實例 ID。您可以通過服務器端或客戶端 API 調用刪除實例 ID。刪除實例 ID 會刪除 ID 本身以及與其關聯的所有數據。
  • 禁用生成 ID 的服務。大多數使用實例 ID 的 Firebase 服務在啟動時如果設備上沒有新 ID,則會自動生成一個新 ID。為確保您的應用不會創建不需要的實例 ID,請禁用這些服務的自動初始化。

刪除實例 ID

刪除實例 ID 還會刪除上面列出的任何 Firebase 服務中與該 ID 關聯的數據。這使得ID缺失清除用戶數據的有用的工具,而且還附帶了一個警告:如果您使用的是依靠實例ID多種服務,從所有這些刪除ID清零數據。

Instance ID 服務會在幾天內創建一個新 ID,除非您禁用應用程序中的所有 Instance-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)")
  }
}

目標-C

[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
  if error != nil {
    NSLog(@"Error deleting instance ID: %@", error);
  }
}];

安卓

FirebaseInstanceId.deleteInstanceId();

使用服務器 API 調用刪除 ID

要使用服務器API調用刪除實例ID,添加火力地堡管理SDK到您的服務器,如果您還沒有。

添加後,通過調用 Instance 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 的服務的自動初始化並手動初始化它們: