识别开发者拥有的应用

对于在给定设备上进行分析或欺诈预防等使用情形,您可能需要将贵组织拥有的一组应用的使用情况或操作关联起来。Google Play 服务提供了一种注重隐私保护的选项,称为应用组 ID

应用组 ID 范围

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

Google Play 开发者范围

对于由 Google Play 商店安装的应用,应用集 ID API 会返回一个 ID,该 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();
    }
});