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

針對特定裝置的數據分析或防範詐騙等用途,您可能需要為貴機構擁有的整組應用程式,建立使用情形或動作關聯。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();
    }
});