針對特定裝置的數據分析或防範詐騙等用途,您可能需要為貴機構擁有的整組應用程式,建立使用情形或動作關聯。Google Play 服務提供一項保護隱私的選項,稱為應用程式組 ID。
應用程式組 ID 範圍
應用程式集 ID 可包含下列任一定義範圍。如要判斷特定 ID 與哪個範圍相關聯,請呼叫 getScope()
。
Google Play 開發人員範圍
如果是 Google Play 商店安裝的應用程式,應用程式集合 ID API 會傳回 ID,範圍限定為在同一 Google Play 開發人員帳戶下發布的應用程式集合。
舉例來說,假設您透過 Google Play 開發人員帳戶發布兩個應用程式,且兩個應用程式都透過 Google Play 商店安裝在同一裝置上。這些應用程式在該裝置上共用相同的應用程式組合 ID。即使應用程式使用不同的金鑰簽署,ID 仍會相同。
應用程式範圍
在下列任何情況下,應用程式組 ID SDK 會傳回特定裝置上呼叫應用程式本身的專屬 ID:
- 應用程式是由 Google Play 商店以外的安裝程式安裝。
- Google Play 服務無法判斷應用程式的 Google Play 開發人員帳戶。
- 應用程式安裝在未安裝 Google Play 服務的裝置上。
請勿仰賴應用程式組 ID 的快取值
在下列任何情況下,裝置上特定組 Google Play 商店安裝應用程式的應用程式集合 ID 可重設:
- 共用相同 ID 值的應用程式群組已超過 13 個月未存取應用程式組 ID API。
- 裝置會解除安裝特定應用程式組合的最後一個應用程式。
- 使用者將裝置恢復原廠設定。
應用程式應在每次需要時使用 SDK 擷取 ID 值。
在應用程式中加入應用程式組 ID SDK
以下程式碼片段顯示使用應用程式集 ID 程式庫的範例 build.gradle
檔案:
dependencies {
implementation 'com.google.android.gms:play-services-appset:16.1.0'
}
以下程式碼片段範例示範如何使用 Google Play 服務中的 Tasks API,以非同步方式擷取應用程式組合 ID:
Kotlin
val client = AppSet.getClient(applicationContext) as AppSetIdClient val task: Task<AppSetIdInfo> = client.appSetIdInfo as Task<AppSetIdInfo> task.addOnSuccessListener({ // Determine current scope of app set ID. val scope: Int = it.scope // Read app set ID value, which uses version 4 of the // universally unique identifier (UUID) format. val id: String = it.id })
Java
Context context = getApplicationContext(); AppSetIdClient client = AppSet.getClient(context); Task<AppSetIdInfo> task = client.getAppSetIdInfo(); task.addOnSuccessListener(new OnSuccessListener<AppSetIdInfo>() { @Override public void onSuccess(AppSetIdInfo info) { // Determine current scope of app set ID. int scope = info.getScope(); // Read app set ID value, which uses version 4 of the // universally unique identifier (UUID) format. String id = info.getId(); } });