识别开发者拥有的应用

对于特定设备上的分析或欺诈预防等用例,您可能需要关联某个组织拥有的应用集中的使用情况或操作。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 API 已超过 13 个月未被共享相同 ID 值的应用组访问。
  • 给定应用集中的最后一个应用已从设备卸载。
  • 用户执行设备的出厂重置。

您的应用应在每次需要时使用 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();
    }
});