針對特定裝置上的分析或詐欺防範等用途,您可能需要針對機構擁有的一組應用程式的使用情形或動作建立關聯。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:
- 有 13 個月相同的應用程式群組尚未存取應用程式組 ID API。
- 系統會從裝置中解除安裝指定一組應用程式的最後一個應用程式。
- 使用者將裝置恢復原廠設定。
應用程式應使用 SDK 在每次需要時擷取 ID 值,
在應用程式中加入應用程式組 ID SDK
以下程式碼片段是使用應用程式集 ID 程式庫的 build.gradle
範例檔案:
dependencies {
implementation 'com.google.android.gms:play-services-appset:16.0.2'
}
下列程式碼片段範例示範如何在 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(); } });