ios - ios-获取重新安装应用程序后必须相同的唯一标识符
问题描述
我有一个用例,我想将用户绑定到特定的设备 ID。因此,我需要一个唯一的设备标识符。
当我搜索此问题时,我发现了一些解决方案,例如
- 创建一个 UUID,但每次我卸载应用程序并重新安装时都会更改它。
- 在 User Defaults 或 KeyChain 中创建 UUID 存储 id,但最新版本的 iOS在卸载应用程序时会删除 KeyChain 和 UserDefaults。
- 获取 mac id 也被弃用,它们总是返回一个模拟值 MAC 地址 02:00:00:00:00:00。
所以我的问题是可以读取任何唯一标识符吗?如果是,那么我如何使用 swift 或 Objective-c 来阅读它?
解决方案
至少 iOS 12.1 不会在应用程序卸载时删除 Keychain。
这种移除行为曾经在 iOS10.3 Beta 2 中引入,但后来又恢复了。
在某些情况下,Apple 官方提供的 DeviceCheck API 可以作为解决方案。
如果它满足您的要求,这似乎是最可靠和体面的方式。
cf https://developer.apple.com/documentation/devicecheck
使用 DeviceCheck API,结合服务器到服务器 API,您可以设置和查询每台设备的两位数据,同时维护用户隐私。您可以使用这些数据来识别已经利用您提供的促销优惠的设备,或者标记您确定为欺诈的设备。DeviceCheck API 还允许您验证您收到的令牌是否来自下载了您的应用程序的真实 Apple 设备。
推荐阅读
- sql-server - SQL Server 多数据库安全问题
- python - 从 main 中的类调用函数
- scala - 使用带有子类型参数的超级方法
- python - 将python输出放入数据框中的问题
- matlab - 上下分屏实验
- node.js - 我想在运行 nightmare.js 后获取 gig 中的所有数据,但我不断得到 gig 未定义
- javascript - 将鼠标悬停在 Javascript 和/或 CSS 列表中的相应单词上时,如何显示不同的图像?
- python - 训练和验证的不同 Keras 增强
- oracle - 在 SQL Server 中有一个我想在 Oracle 中复制的计数器
- android - 旋转屏幕时可用蓝牙设备的 ListView 变为空白