设备指纹识别(Android 和 iOS)
Device fingerprinting (Android and iOS)
我需要一种方法来唯一标识 android 和 iOS 设备,即使在我的应用程序被卸载并重新安装后也是如此。
ANDROID_ID 和 UUID 都不起作用。
也许有一些库专门用于此任务?
关于iOS方面,如this thread所述:
爱斯基摩人的回答:
"iOS 出于隐私方面的考虑,对唯一持久标识符施加了严格的限制。有几个 WWDC 会议讨论了这个问题,我强烈建议您观看它们:
- WWDC 2012 Session iOS 和 OS X
中的 710 隐私支持
- WWDC 2013 Session 714 保护用户隐私
- WWDC 2014 Session 715 iOS 和 OS X
中的用户隐私
- WWDC 2015 Session 703 隐私和您的应用程序
- WWDC 2016 Session 709 用户的工程隐私
鉴于以上所述,没有任何单一值可以在不相关的应用程序中唯一标识 iOS 设备,从现在到永远。相反,有一套选项可供您使用,您使用哪个选项取决于您的要求。"
这里是 another thread iOS,其中 Eskimo1 描述了您可以做什么:
- 使用MDM获取设备的UDID和IMEI
- 使用该信息在您的设备数据库中创建一条记录
- 生成一个随机的唯一 ID 并将其添加到您的设备数据库
- 使用受管理的应用首选项将该唯一 ID 推送到您的应用
- 然后您的应用可以将该唯一 ID 添加到请求中,您可以根据该 ID 查找所需的信息
在我前段时间做的应用中,我们使用了第三个选项。
至于Android方面:
如'Best practices for unique identifiers'所述:
"1:避免使用硬件标识符。在不限制所需功能的情况下,大多数 use-cases 都可以避免使用硬件标识符,例如 SSAID(Android ID)和 IMEI。
2:仅将广告 ID 用于用户分析或广告 use-cases。使用广告 ID 时,请始终尊重限制广告跟踪标志,确保标识符不会与个人身份信息 (PII) 相关联,并避免桥接广告 ID 重置。
3:对于除支付欺诈预防和电话之外的所有其他 use-cases,尽可能使用实例 ID 或私人存储的 GUID。对于绝大多数 non-ads use-cases,实例 ID 或 GUID 应该足够了。
4:使用适合您的 use-case 的 API 以尽量减少隐私风险。使用 DRM API API 保护高价值内容,使用 SafetyNet API 防止滥用。 Safetynet API 是确定设备是否为正品且不会引发隐私风险的最简单方法。"
此外,我建议您阅读 this article,其中描述了 Android 的所有方法。
我需要一种方法来唯一标识 android 和 iOS 设备,即使在我的应用程序被卸载并重新安装后也是如此。 ANDROID_ID 和 UUID 都不起作用。 也许有一些库专门用于此任务?
关于iOS方面,如this thread所述:
爱斯基摩人的回答:
"iOS 出于隐私方面的考虑,对唯一持久标识符施加了严格的限制。有几个 WWDC 会议讨论了这个问题,我强烈建议您观看它们:
- WWDC 2012 Session iOS 和 OS X 中的 710 隐私支持
- WWDC 2013 Session 714 保护用户隐私
- WWDC 2014 Session 715 iOS 和 OS X 中的用户隐私
- WWDC 2015 Session 703 隐私和您的应用程序
- WWDC 2016 Session 709 用户的工程隐私
鉴于以上所述,没有任何单一值可以在不相关的应用程序中唯一标识 iOS 设备,从现在到永远。相反,有一套选项可供您使用,您使用哪个选项取决于您的要求。"
这里是 another thread iOS,其中 Eskimo1 描述了您可以做什么:
- 使用MDM获取设备的UDID和IMEI
- 使用该信息在您的设备数据库中创建一条记录
- 生成一个随机的唯一 ID 并将其添加到您的设备数据库
- 使用受管理的应用首选项将该唯一 ID 推送到您的应用
- 然后您的应用可以将该唯一 ID 添加到请求中,您可以根据该 ID 查找所需的信息
在我前段时间做的应用中,我们使用了第三个选项。
至于Android方面: 如'Best practices for unique identifiers'所述:
"1:避免使用硬件标识符。在不限制所需功能的情况下,大多数 use-cases 都可以避免使用硬件标识符,例如 SSAID(Android ID)和 IMEI。
2:仅将广告 ID 用于用户分析或广告 use-cases。使用广告 ID 时,请始终尊重限制广告跟踪标志,确保标识符不会与个人身份信息 (PII) 相关联,并避免桥接广告 ID 重置。
3:对于除支付欺诈预防和电话之外的所有其他 use-cases,尽可能使用实例 ID 或私人存储的 GUID。对于绝大多数 non-ads use-cases,实例 ID 或 GUID 应该足够了。
4:使用适合您的 use-case 的 API 以尽量减少隐私风险。使用 DRM API API 保护高价值内容,使用 SafetyNet API 防止滥用。 Safetynet API 是确定设备是否为正品且不会引发隐私风险的最简单方法。"
此外,我建议您阅读 this article,其中描述了 Android 的所有方法。