Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

管理實例 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 的服務的自動初始化並手動初始化它們: