ios-获取唯一的标识符,该标识符在重新安装应用后必须相同

时间:2019-01-23 05:58:36

标签: ios

我有一个用例,希望将用户与特定设备ID绑定。因此,我需要一个唯一的设备标识符。

搜索此问题时,我发现了

之类的解决方案
  • 创建一个UUID,但是每次我卸载UUID时都会更改 应用并重新安装。
  • 创建UUID 在用户默认值或KeyChain中存储ID ,但最新版本的iOS 在卸载应用时删除了KeyChain和UserDefaults
  • 也不建议使用获取Mac ID的方法,因为它们总是返回一个模拟值 MAC地址02:00:00:00:00:00

所以我的问题是可以读取任何唯一标识符吗? 如果是,那我怎么用swift或Objective-c读它?

3 个答案:

答案 0 :(得分:1)

至少iOS 12.1不会在应用卸载时删除钥匙串。

此删除行为曾经在iOS10.3 Beta 2中引入,但稍后又恢复。


在某些情况下,Apple官方提供的DeviceCheck API可以作为解决方案。

如果满足您的要求,这似乎是最可靠和体面的方式。

c.f。 https://developer.apple.com/documentation/devicecheck

  

结合使用DeviceCheck API和服务器到服务器API,您可以在保持用户隐私的同时为每个设备设置和查询两位数据。您可能会使用此数据来识别已经利用您提供的促销优惠的设备,或者标记您确定为欺诈的设备。通过DeviceCheck API,您还可以验证收到的令牌来自已下载应用程序的真实Apple设备。

答案 1 :(得分:0)

在用户卸载应用程序后,不再有一种唯一标识设备的方法。该文档说:

  

在应用(或其他应用)   来自同一供应商的应用)安装在iOS设备上。价值   当用户从中删除该供应商的所有应用程序时,更改   设备,然后重新安装其中的一个或多个。

参考:https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor

答案 2 :(得分:0)

我的建议是将UUID和用例与用户绑定在一起,然后在用户当时注册后存储用例和UUID并为此创建唯一的userId。如果用户注销并再次登录您可以检查userID并使用诸如userEmail或contact这样不存在的唯一参数?如果存在,则将用例替换为new(如果您每次使用的用例)。

我希望它将对您有所帮助。 谢谢