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