Check out what’s new from Firebase at Google I/O 2022. Learn more

管理實例 ID 數據

實例 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 的服務的自動初始化,而是手動初始化它們: