4

我们使用以下代码获取唯一 ID:

String id = Settings.Secure.getString(mContext.getContentResolver(),
                 Settings.Secure.ANDROID_ID);

在 Android O 更改指南中,我们可以看到以下几点:

Android O 对平台进行了以下与隐私相关的更改。 https://developer.android.com/preview/behavior-changes.html

The platform now handles identifiers differently.
Values of ANDROID_ID are now scoped per-app instead of per-user. The value of ANDROID_ID is unique for each combination of application package name, signature, user, and device. Two apps running on the same device no longer see the same Android ID, and so cannot correlate.

The value of ANDROID_ID does not change on package uninstall or reinstall, as long as the package name and signing key are the same.

The value of ANDROID_ID does not change if the package signing key changes due to an update.

For apps that were installed prior to the OTA, the value of ANDROID_ID remains the same unless uninstalled and then reinstalled.

If you wish to continue using Android ID for device-bound free trial protection, you can do so. Make sure that the package name and signature match.

For a simple, standard system to monetize apps, use Advertising ID. Advertising ID is a unique, user-resettable ID for advertising, provided by Google Play services.

我对上述内容的理解是,现在 Android_ID 将是应用程序绑定而不是设备绑定。但是我对以下几点感到困惑:

对于在 OTA 之前安装的应用程序,ANDROID_ID 的值保持不变,除非卸载然后重新安装。如果您希望继续使用 Android ID 进行设备绑定免费试用保护,您可以这样做。确保包名称和签名匹配。

1)这是什么意思?除非重新安装我的应用程序,否则即使我们发送更新,它也会继续使用旧版 android_id?

2) 如果您希望继续使用 Android ID 进行设备绑定免费试用保护,您可以这样做。确保包名称和签名匹配。:这是什么意思?

4

2 回答 2

6

abc1) 想象一下,当您的应用安装在 N 台设备上时,您的应用具有 id 。现在,当设备更新为 O 时,返回给您的设备 ID 将继续为abc. 但是,如果用户在升级到 O卸载并重新安装应用程序,ANDROID_ID则会更改为其他值。

另一方面,如果应用程序安装在 O 设备上,然后被卸载并重新安装,ANDROID_ID 则将保持不变

2)这意味着只要包名称和签名保持不变,值ANDROID_ID将保持不变。如果您的应用在 O 设备上更新并且签名更改,它也将保持不变。

本质上,android 现在将使用包名/签名来生成 O 上的唯一标识符。

于 2017-05-03T09:12:58.840 回答
1

android 文档没有明确说明具有不同包名称但共享用户 ID 值并使用相同密钥签名的应用程序的 ANDROID_ID 值。在 Nexus 5、Android O Beta 3 上的测试显示,在这种情况下,2 个应用程序的 Android ID 值也相同。

于 2017-06-27T13:17:27.050 回答