识别开发者拥有的应用

对于给定设备上的分析或欺诈防范等用例,您可能需要将贵组织拥有的一组应用中的使用情况或操作相关联。Google Play 服务 提供了一个注重隐私保护的选项,名为应用组 ID

应用组 ID 范围

应用组 ID 可以具有以下定义的范围之一。如需确定与特定 ID 关联的范围,请调用 getScope()

Google Play 开发者范围

对于通过 Google Play 商店安装的应用,应用组 ID API 会返回作用域限定为在同一 Google Play 开发者帐号下发布的应用集的 ID。

例如,假设您在 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.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();
    }
});