8

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

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

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

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

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

谷歌搜索我发现使用 android ID 存在一些问题,但都是旧东西。早在 Froyo 时代,就有一家手机供应商为他们的所有手机制作了相同的 ID,但这就是我所看到的。

有人知道使用 Android ID 有什么问题吗?谢谢,院长

4

1 回答 1

4

您选择使用什么唯一标识符在很大程度上取决于您需要标识符的特定用例。唯一标识符培训的最佳实践涵盖了许多常见用例以及要使用的标识符。他们确实有许多使用 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 仍然不适合使用。

于 2016-08-20T23:35:47.290 回答