管理執行個體 ID 資料

執行個體 ID 可用於辨識應用程式的個別安裝。由於每個應用程式與裝置都有專屬的執行個體 ID,因此可協助 Firebase 服務參照特定的應用程式執行個體。例如,雲端通訊會根據執行個體 ID 判斷要將訊息傳送到哪些裝置。

部分 Firebase 服務會使用執行個體 ID 來提供功能:

  • 數據分析
  • Crashlytics
  • 雲端通訊
  • 遠端設定

管理與執行個體 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,除非您停用應用程式中的所有 Instance-ID 產生服務。Firebase 會將新建立的 ID 視為全新的應用程式執行個體,而且在任何情況下都不會將 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 服務,請使用上述其中一個 Client API 處理刪除作業。

停用執行個體 ID 產生功能

在目前沒有新 ID 的應用程式進行初始化時,使用執行個體 ID 的服務會自動產生新 ID。一般而言,這些服務也會在應用程式啟動時自動初始化。如要停用執行個體 ID 產生功能,您必須針對使用該 ID 的服務停用自動初始化功能。

常見的做法是讓使用者有選擇加入資料收集:針對使用執行個體 ID 的服務停用自動初始化、實作對話方塊來提示使用者同意資料收集,以及在取得同意後手動重新啟用服務。

請參閱下列指南,瞭解如何針對使用 Instance-ID 的服務停用自動初始化,以及如何手動初始化服務: