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