辨識開發人員擁有的應用程式

如果是特定裝置的分析或詐欺防範等用途,您可能需要針對機構擁有的一組應用程式,瞭解使用情形或動作之間的關聯。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 值的一組應用程式未曾存取應用程式組 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();
    }
});