对于特定设备上的分析或防欺诈等用例,您可能需要将贵组织拥有的一组应用的使用情况或操作关联起来。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 添加到您的应用
以下代码段展示了一个使用 app set 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(); } });