實例 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 的服務的自動初始化,而是手動初始化它們:
- 雲消息傳遞:阻止自動初始化 (Android)或阻止自動初始化 (iOS+)
- 崩潰報告:啟用選擇加入報告
- Analytics:配置 Analytics 數據收集