Android ID替代设备ID

Dea*_*ely 5 android android-6.0-marshmallow runtime-permissions

我的应用程序始终使用DeviceId作为唯一标识符,这当然需要READ_PHONE_STATE作为权限。过去还可以,但是现在我已迁移到Marshmellow 23,在这里请求此权限会在运行时显示一个非常可怕的对话框,说...

“允许{我的应用}拨打和管理电话吗?”

对于只想获取deviceId的应用程序来说,这是一条非常可怕的消息。

我正在考虑切换到Android ID,因为它不需要任何许可。

String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)

谷歌搜索,我发现使用android ID时遇到了一些问题,但这都是陈旧的东西。在Froyo时代,有一家电话供应商为其所有电话生成相同的ID,但这就是我所看到的全部。

有人知道使用Android ID有任何问题吗?谢谢院长

ian*_*ake 6

您选择使用什么唯一标识符在很大程度上取决于您需要该标识符的特定用例。唯一标识符最佳实践培训介绍了许多常见用例以及要使用的标识符。他们确实有许多使用 Android 标识符的租户:

1:避免使用硬件标识符。 在大多数用例中可以避免使用 SSAID (Android ID) 和 IMEI 等硬件标识符,而不会限制所需的功能。

2:仅将广告 ID 用于用户分析或广告用例。使用广告 ID 时,请始终遵守限制广告跟踪标志,确保标识符无法连接到个人身份信息 (PII),并避免桥接广告 ID 重置。

3:对于除支付欺诈预防和电话之外的所有其他用例,尽可能使用实例 ID 或私人存储的 GUID。对于绝大多数非广告用例,实例 ID 或 GUID 就足够了。

4:使用适合您的用例的 API 以最大程度地降低隐私风险。使用 DRM API API 进行高价值内容保护,使用 SafetyNet API 进行滥用预防。Safetynet API 是确定设备是否正品且不会产生隐私风险的最简单方法。

在绝大多数情况下,Android ID 仍然不是正确的使用方式。