唯一标识iOS设备的最佳方法?

唯一标识iOS设备的最佳方法?,ios,mac-address,udid,identify,Ios,Mac Address,Udid,Identify,我知道以下方法是否都有缺陷 乌迪德 广告标识符 供应商ID UDID的问题是,它已被弃用,甚至在ios7之前无法工作,而另外两个UDID的问题是,用户可以通过手机软件重置或重新安装应用程序来更改它们 我发现的另一个有趣的解决方案是自己随机生成一个,然后保存到keychain,以避免在重新安装应用程序时删除。但是,这会在软件重置时起作用吗?当然,两台设备随机生成相同ID的可能性很小 我认为最好的选择可能是使用UDID,但我想知道,即使UDID在ios7中是不正确的,它是否仍然是唯一的 还有一个

我知道以下方法是否都有缺陷

  • 乌迪德
  • 广告标识符
  • 供应商ID
UDID的问题是,它已被弃用,甚至在ios7之前无法工作,而另外两个UDID的问题是,用户可以通过手机软件重置或重新安装应用程序来更改它们

我发现的另一个有趣的解决方案是自己随机生成一个,然后保存到keychain,以避免在重新安装应用程序时删除。但是,这会在软件重置时起作用吗?当然,两台设备随机生成相同ID的可能性很小

我认为最好的选择可能是使用UDID,但我想知道,即使UDID在ios7中是不正确的,它是否仍然是唯一的

还有一个选择是MAC地址,但据我所知,这些地址没有API


请告知最佳选项

无法启动iOS 7推断MAC地址。但是,您可以使用以下命令:

[[[UIDevice currentDevice] identifierForVendor] UUIDString]
Per:

当用户从中删除该供应商的所有应用程序时,该值会更改 然后重新安装一个或多个设备。价值 也可以在使用Xcode安装测试生成或安装 使用临时分发的设备上的应用程序。因此,如果你的应用程序 将此属性的值存储在任何位置,您应该 处理标识符更改的情况


根据这个答案,有一个获取MAC地址@egor.zhdan的API,答案和评论表明它在ios7及以上版本上不起作用,就像udidt一样,有一些商业供应商使用设备指纹识别技术来识别设备。你有什么理由不想让用户在第一次打开应用程序时创建帐户吗?@Aabglov我就是这么做的。我计划支持用户在一个帐户上拥有多个设备,因为我的应用程序的结构,它要求设备具有唯一的标识。改变价值会破坏这一想法。我可以将价值存储在keychain中,但随后它会与其他设备同步,这样它就不会是唯一的