執行個體 ID 可用於辨識應用程式的個別安裝情況。每個執行個體 ID 是特定應用程式和裝置的專屬 ID,可讓 Firebase 服務 來參照特定的應用程式執行個體例如,Cloud Messaging 會使用 執行個體 ID,用於判斷要將訊息傳送到哪些裝置。
部分 Firebase 服務會使用執行個體 ID 來提供功能:
- Analytics
- Crashlytics
- Cloud Messaging
- Remote Config
管理與執行個體 ID 相關聯的應用程式資料
使用執行個體 ID 來識別安裝的服務,也會將這類 ID 做為 連結相關資料與裝置。例如,Crashlytics 會使用 執行個體 ID 用於記錄裝置上發生的當機事件,Remote Config 會使用 擷取設定,Analytics 則會使用執行個體 ID 來追蹤 吸引特定觀眾群的目光
執行個體 ID 的相關資料通常並非個人識別資訊, 但若能為使用者提供自行管理的選項,或許會有幫助。同理 最後,Firebase 提供兩種管理執行個體 ID 相關資料收集功能的方法:
- 刪除執行個體 ID。您可以使用 server- 或 用戶端 API 呼叫刪除執行個體 ID 會刪除 ID 本身和所有資料 相關聯的資源
- 停用會產生 ID 的服務。使用執行個體的大多數 Firebase 服務 如果裝置上沒有 ID,系統會自動產生新的 ID 啟動。為確保應用程式不會建立不需要的執行個體 ID,請停用 這些服務的自動調整功能
刪除執行個體 ID
刪除執行個體 ID 也會一併刪除 上述 Firebase 服務。因此,刪除身分證件是更實用的工具 清除使用者資料時,還有一個注意事項:如使用多個 需要執行個體 ID 的服務,如果刪除 ID,就會清除所有 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件
執行個體 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 的新資料 通知用戶端應用程式 ID 已刪除。直到 Firebase 通知用戶端為止 應用程式的某些服務可能會無法正常運作。
如要刪除目前的執行個體 ID 並立即使用 Firebase 新、獨立 ID 的對應服務,請使用上述其中一個 Client API, 處理刪除作業
停用執行個體 ID 產生功能
使用執行個體 ID 的服務會自動產生新 ID 在目前沒有應用程式的情況下初始化。一般而言 也會在應用程式啟動時自動初始化。如何停用執行個體 則必須停用 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件
常見做法是提供使用者 選擇使用資料收集:停用以下項目的自動初始化功能: 並使用執行個體 ID 的服務實作對話方塊,以在 徵得使用者同意,且能手動重新啟用服務。 取得同意聲明後,
請參閱下方指南,瞭解如何停用 執行個體 ID 使用的服務,改為手動初始化:
- Cloud Messaging:禁止自動初始化 (Android) 或禁止自動初始化 (iOS+)
- Crash Reporting:啟用啟用報表
- Analytics:設定 Analytics 資料收集