对于给定设备上的分析或欺诈防范等用例,您可能需要将组织拥有的一组应用的使用或操作相关联。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:
- 在过去 13 个月里,共用相同 ID 值的一组应用尚未访问应用组 ID API。
- 从设备上卸载一组给定应用中的最后一个应用。
- 用户将设备恢复出厂设置。
您的应用应在每次需要时都使用 SDK 检索 ID 值。
将应用组 ID SDK 添加到您的应用
以下代码段展示了一个使用应用组 ID 库的 build.gradle
文件示例:
dependencies {
implementation 'com.google.android.gms:play-services-appset:16.0.2'
}
以下示例代码段演示了如何使用 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(); } });