我想知道如何使用
Objective-c为iPhone / iPad生成设备的唯一ID
因此,一旦应用程序安装在设备上,我们就应该跟踪该deviceID
>我已经搜索过检索iPhone / iPad的IMEI,但在objective-c中不允许这样做.
>然后我搜索生成iPhone / iPad的UDID,但是每次我在模拟器上启动它时都会生成不同的ID.
解决方法
是的,不推荐使用UDID;由于用户隐私目的,我们不允许获取UDID. Apple不允许获取唯一标识设备的标识符,例如IMEI,MAC地址,UDID等.
UUID是目前最好的方式.但这对每个供应商来说都是独一无二的.每次获得UUID字符串时,您都不确定它是唯一的.最好的办法是将UUID字符串存储到手机的Keychain中,并在需要时使用catch来检索它.当您出厂重置手机时,钥匙串项目将被删除.应该牢记这个限制.
更新 – 在IOS 10.3 BETA’:
似乎Apple对Keychain在iOS 10.3中的工作方式做了一些改动.当卸载特定供应商的所有应用程序时,将删除存储在钥匙串中的钥匙串项目.根据Apple的说法,即使应用程序从设备中消失,应用程序的敏感信息的驻留可能会导致安全风险,因此他们决定禁止这种行为.
即使在卸载应用程序后依赖Keychain存储的开发人员也可以利用此WORKAROUND来继续使用预期的功能.根据此解决方法,任何应用程序都可以访问存储在该特定Keychain访问组中的信息,因此建议为数据添加额外的加密层将以更高的安全性保护它,尽管默认情况下keychain会加密项目.
更新 – IOS 10.3.3(稳定):似乎在iOS 10.3.3的早期测试版中,钥匙串项目删除是一个BUG,并且在稳定版本的后期修复.这可能是在测试期间引起的,因为在该阶段可能会发生奇怪的事情.以后使用钥匙串应该没问题.