如何唯一识别iOS设备而不是使用UUID和UDID [重复]

Posted

技术标签:

【中文标题】如何唯一识别iOS设备而不是使用UUID和UDID [重复]【英文标题】:How to identify iOS device uniquely instead of using UUID and UDID [duplicate] 【发布时间】:2015-06-19 10:54:54 【问题描述】:

在我的 ios 应用中,我必须限制用户在每台设备上使用 iOS 应用。为此,我找到了一个解决方案,我们可以使用 UUID (Universally Unique Identifier)UDID (Unique Device Identifier)。但是根据this answer,我不能使用UUID,因为如果应用程序被删除或重新安装,UUID 已经被改变了,我不想要这个。如果应用使用 UDID,Apple 也会拒绝应用。

有没有办法唯一识别iOS设备。

【问题讨论】:

你不能。出于保密考虑,Apple 不允许这样做。但是您可以使用钥匙串访问来存储一些有用的数据。但请查看 Apple 指南。 @Can ATAC,感谢您的评论。我不想存储任何数据,实际上我想从设备中获得一些独特的价值。有没有其他方法可以做到这一点? UUID 是一种方式......并且取决于您的应用设计。 @SrinivasanN,感谢您的评论。正如我在问题中提到的,如果应用程序被删除或重新安装,UUID 会发生变化。 你的应用有服务器数据库吗?..如果有的话,你总是可以为那个用户发回新的 UUID 吗? 【参考方案1】:

Apple 已经取消了 UDID 的方法,并将拒绝使用 UDID 进行唯一设备标识的应用程序。 来源:TNW

你要找的是Vendor ID

【讨论】:

@Vijayts,感谢您的回答。我还有一个疑问,两台设备是否有可能具有相同的 VenderID。有什么想法吗? @iOSDev 两台设备不可能拥有相同的 vendorID。它对于您设备上特定应用程序组的每次安装都是独一无二的。例如,同一应用程序供应商下的许多应用程序将在设备上具有相同的供应商 ID,直到该供应商的所有应用程序都被卸载并再次安装在该设备上。只有在这种情况下,设备才会为同一应用组的应用提供同一设备的新供应商 ID。因此名称为 VendorID。 @VijayTholpadi 你确定它在不同的设备上会有所不同吗?尽管在文档中它说,“对于来自不同供应商的同一设备上的应用程序以及不同设备上的应用程序,无论供应商如何,都会返回不同的值。”那么 vendorId 就是解决方案。如果我希望每个应用程序都不同,那么我们可以使用 vendorId 和包名称进行哈希处理。而且 vendorID 不会像 adsId 那样被重置,对吧? @karim 是的,不同的设备会有所不同。将其视为从设备的应用程序组安装应用程序的 ID。如果您卸载该应用程序组中的所有应用程序,它将被重置。 DeviceCheck 是唯一标识设备的新选项,请在此处查看我的答案:***.com/questions/24753537/…【参考方案2】:

我在我的项目中使用这个库,它就像一个魅力,请尝试:

https://github.com/blackpixel/BPXLUUIDHandler

易于使用:

导入 BPXLUUIDHandler.h 使用

检索 UUID
[BPXLUUIDHandler UUID]

就是这样……

这是来自项目 github 页面的一些信息:

从 iOS 5 开始,Apple 已弃用设备唯一标识符 api 和 没有提供友好的 Obj-C 替代品,而是推荐 CFUUIDCreate 和 NSUserDefaults。

CFUUIDCreate 和 NSUserDefaults 都不是很复杂,但是 此解决方案以几种不同的方式失败:

获取 UUID 不是快速的一次性调用;您必须编写自己的包装器以使其友好 它不会持续存在;删除应用程序会清除 UUID(如果存储在钥匙串中,则可以保留) 无法在应用之间共享它

【讨论】:

@iOSDev 能解决你的问题吗? #gyer 感谢您的回答。但是我在使用 UUID 时遇到了问题。有没有别的办法解决。 不客气@iOSDev。你写了“我不能使用 UUID,因为如果应用程序被删除或重新安装,UUID 已经改变,我不想要这个”,但我建议(BPXLUUIDHandler)当用户重新安装应用程序时它并没有改变。如果他们进行完全恢复,这将会改变,但对于大多数用户来说,直到他们获得新设备才会改变。请阅读:blackpixel.com/writing/2012/03/… 在钥匙串中保存 UUID 的问题是,从 iCloud 同步的两台设备得到相同的 UUID,不是吗?你注意到这个问题了吗?

以上是关于如何唯一识别iOS设备而不是使用UUID和UDID [重复]的主要内容,如果未能解决你的问题,请参考以下文章

iOS----------关于UDID和UUID的一些理解

iOS开发中的UDID和UUID详解

ios堆栈溢出中的uuid,udid和设备令牌有啥区别

UDID是啥 如何获取iOS设备UDID

查看UDID的两种方式,连手机查看,不用Mac连接iPhone手机,获取UDID, iOS 设备的一个唯一识别码

iOS设备UUID的获取方法(不变的唯一值)