如何唯一地识别iOS设备,而不使用UUID和UDID?

11
在我的iOS应用中,我需要限制用户在每个设备上使用iOS应用。为了做到这一点,我找到了一个解决方案,可以使用UUID(通用唯一识别码)UDID(唯一设备标识符)。但是根据这个回答,我不能使用UUID,因为如果应用程序被删除或重新安装,UUID会发生更改,我不想这样。此外,如果应用程序使用UDID,苹果将拒绝该应用程序。
有没有办法唯一地识别iOS设备?

@Can ATAC,感谢您的评论。我不想存储任何数据,实际上我想从设备中获取一些唯一值。是否有其他方法可以做到这一点? - Kirti Nikam
UUID是一种方式...并且取决于您的应用程序设计。 - Srinivasan N
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Kirti Nikam
你可以绕过它,但是苹果不会让你从物理上识别设备。但正如Srinivasan N所说的那样,从逻辑上讲,你可以通过后端服务器将用户与其数据关联起来。 - Jan ATAC
是的,我的应用程序有服务器数据库。但是第一次登录时,如果我使用新生成的UUID并将其存储在后端中。下一次,如果他再次删除并重新安装应用程序,则UUID将发生更改。很难识别新用户或现有用户。 - Kirti Nikam
显示剩余4条评论
2个回答

15

Apple已经放弃使用UDIDs的方法,并将拒绝使用此方法进行唯一设备识别的应用程序。 来源:TNW

您需要的是供应商ID


@Vijayts,感谢您的回答。我还有一个疑问,是否有可能两个设备具有相同的VenderID?有什么想法吗? - Kirti Nikam
3
@iOSDev 两个设备不可能拥有相同的厂商ID,每个特定应用程序组的安装都有唯一的厂商ID。例如,同一个应用程序供应商下的许多应用在设备上将具有相同的厂商ID,直到该供应商的所有应用被卸载并再次安装在该设备上。只有在这种情况下,该设备才会为同一应用程序组的应用提供新的厂商ID。因此得名“VendorID(厂商ID)”。 - Vijay Tholpadi
@VijayTholpadi 你确定在不同的设备上会有所不同吗?尽管文档中说:“对于来自不同供应商的同一设备上的应用程序以及来自不同设备的应用程序,返回不同的值。”那么vendorId就是解决方案。如果我想让每个应用程序都不同,那么我们可以使用vendorId和bundle名称生成哈希值。而且vendorID不像advertisingId一样会被重置,对吧? - karim
@karim 是的,对于不同的设备来说会有所不同。可以将其视为应用程序组中某个设备上安装的应用程序的ID。如果您卸载该应用程序组中的所有应用程序,则它将被重置。 - Vijay Tholpadi
DeviceCheck 是一种新的选项,用于唯一标识设备,请查看我的答案:https://dev59.com/lGAf5IYBdhLWcg3wVxjh#45711623 - Muhammad Umair
显示剩余2条评论

1

我在我的项目中使用这个库,它非常好用,请尝试:

https://github.com/blackpixel/BPXLUUIDHandler

易于使用:

导入BPXLUUIDHandler.h文件 使用以下代码检索UUID:

[BPXLUUIDHandler UUID]

这就是全部内容...

以下是来自项目Github页面的一些信息:

从iOS 5开始,苹果已经弃用了设备唯一标识符API,并且没有提供友好的Obj-C替代方案,而是推荐使用CFUUIDCreate和NSUserDefaults。

CFUUIDCreate并不是很复杂,NSUserDefaults也是如此,但这种解决方案有几个不同的问题:

  • 获取UUID不是快速的一次性调用;你必须编写自己的包装器以使其更加友好
  • 它不会持久化;删除应用程序将清除UUID(如果存储在钥匙串中,则可以持久化)
  • 没有办法在应用程序之间共享它

@iOSDev 这解决了你的问题吗? - mgyky
#gyer 感谢您的回答。但是我在使用UUID时遇到了问题。您有其他解决方法吗? - Kirti Nikam
欢迎 @iOSDev。你写道:“我不能使用UUID,因为如果应用程序被删除或重新安装,则UUID会发生更改,而我不希望这样”,但是我建议的(BPXLUUIDHandler)在用户重新安装应用程序时不会更改。这将在进行完整恢复时更改,但对于大多数用户而言,直到他们获得新设备之前都不会更改。请阅读此文:https://blackpixel.com/writing/2012/03/unique-identifier-is-dead-long-live-unique-identifier.html - mgyky
1
在钥匙串中保存UUID的问题是,从iCloud同步的两个设备会得到相同的UUID,你有注意到这个问题吗? - karim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接