-[UIDevice uniqueIdentifier]
根据文档,官方的替代品是identifierForVendor
:
对于来自同一供应商并在同一设备上运行的应用,此属性的值相同。对于来自不同供应商的同一设备上的应用程序以及不同设备上的应用程序(无论供应商)返回不同的值。
显然这对您来说不是问题,因为您只是在创建一个应用程序。但是,此属性确实有一些限制:
当应用程序(或来自同一供应商的另一个应用程序)安装在 iOS 设备上时,此属性中的值保持不变。当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。因此,如果您的应用程序将此属性的值存储在任何地方,您应该优雅地处理标识符更改的情况。
换句话说,这个标识符几乎就像一个 UDID,有一个限制,当用户从他们的设备上删除你制作的所有应用程序时,这个标识符将被重置。但老实说,我看不出这对于普通应用程序来说不够好的任何理由。identifierForVendor
只有在删除并重新安装应用程序时才会重置的唯一情况。它会在重新启动、软件更新等过程中持续存在,因此它不应该成为真正的问题。
TL;DR如果不违反 Apple 的规则,您所要求的目前在技术上是不可能的,但identifierForVendor
确实应该是一个足够好的替代品。我想不出一个合理的理由,为什么您需要一个在应用程序删除和设备重置时仍然存在的标识符。