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

如要針對特定裝置進行數據分析或防範詐欺等用途,您可能需要為貴機構擁有的多個應用程式建立使用情形或動作的關聯。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。
  • 從裝置解除安裝一組應用程式中的最後一個應用程式。
  • 使用者將裝置恢復原廠設定。

應用程式每次需要 ID 值時,都必須使用 SDK 擷取。

在應用程式中加入應用程式組 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();
    }
});

如要進一步瞭解 UUID 格式,請參閱「通用唯一識別碼」。