我的应用程序要求每个用户只能注册一个帐户。即每个移动设备一个帐户。我知道不再可以使用UDID来识别设备。有没有替代方案?当用户第一次注册时,我想将某种唯一ID保存到服务器,因此如果他们尝试再次执行,则应用程序将不允许这样做。任何指针都会非常有用。
答案 0 :(得分:1)
虽然较旧的UDID不可用,但您仍然可以使用identifierForVendor在应用内识别设备。
这为所有“您的”(每个开发者)应用程序唯一标识每个设备。请阅读关于矿石详细信息的链接上的apple文档。
然而,Apple因某种原因停止使用UDID。您应该跟踪用户而不是设备。随着其他人的说法,设备可能会丢失或损坏或更换。所以 我仍然会建议重新考虑应用程序设计以避免使用设备标识符。 但经过仔细考虑后,如果您决定这样做,则可以使用identifierForVendor。
修改强>
正如@rckoenes所说,您的所有应用都将拥有相同的供应商标识符。因此,要唯一标识设备上安装的特定应用程序,您可以使用identifierForVendor和bundle标识符的组合,或者在应用程序代码中添加的随机常量,您可以在登录或注册期间将其与identifierForVendor一起发送到服务器。
编辑2:
@rckoenes的另一个重要观察:
当用户从设备中删除所有该供应商的应用程序并随后重新安装其中一个或多个应用程序时,该值会更改。
因此,只有当您对每个应用安装的唯一标识用户/设备组合以及Apple建议的其他人感到满意时,才能使用identifierForVendor:
如果您的应用将该属性的值存储在任何位置,则应优雅地处理标识符更改的情况。
答案 1 :(得分:0)
Apple提出了DeviceCheck框架
使用DeviceCheck API以及服务器到服务器API,开发人员可以为每个设备设置和查询两位数据。通过不透露任何用户或设备信息,它还将维护用户隐私。
浏览this video from Apple以获得更多信息。如果您没时间了,请从24分钟开始观看视频。
答案 2 :(得分:-3)
您应该使用advertisingIdentifier
ASIdentifierManager
每个设备唯一的字母数字字符串,仅用于提供服务 广告。 (只读)
与
identifierForVendor
的{{1}}属性不同,所有供应商都返回相同的值。此标识符可能会更改 - 例如,如果用户删除了设备 - 因此您不应该对其进行缓存。
此外,您可以使用UIDevice
提供的identifierForVendor
,但每个供应商的价值都会发生变化。
对于来自同一设备上运行的同一供应商的应用,此属性的值相同。对于来自不同供应商的同一设备上的应用程序以及不同供应商的不同设备上的应用程序,将返回不同的值。
这取决于你想要做什么,因为@FilipRadelic说。 advertisingIdentifier应仅用于广告功能
自iOS5起,禁止每台设备获取唯一标识符,因此您应该使用此ID