识别开发者拥有的应用

对于特定设备上的分析或欺诈预防等用例,您可能需要关联您的组织拥有的一组应用的使用情况或操作。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();
    }
});