Ios 在开发过程中,我应该如何使用identifierForVendor?

Ios 在开发过程中,我应该如何使用identifierForVendor?,ios,cocoa-touch,ios-simulator,Ios,Cocoa Touch,Ios Simulator,苹果公司建议使用[UIDevice currentDevice]。供应商标识。每次在iOS模拟器中运行应用程序时,此值都会发生变化 我的应用程序中的初始功能要求我将设备识别为灯光身份验证的一种形式。这使得开发变得单调乏味,理想情况下,我可以在调试/运行会话中保持一个唯一的值。对于实现这一点有什么建议吗 在模拟器中构建和运行时,该值会发生变化,这一点很不错。在真实设备上,只有当用户从其设备上删除您的所有应用程序并重新安装应用程序时,才会更改 如果您希望模拟器应用程序在开发过程中使用一致的标识符,则

苹果公司建议使用[UIDevice currentDevice]。供应商标识。每次在iOS模拟器中运行应用程序时,此值都会发生变化

我的应用程序中的初始功能要求我将设备识别为灯光身份验证的一种形式。这使得开发变得单调乏味,理想情况下,我可以在调试/运行会话中保持一个唯一的值。对于实现这一点有什么建议吗

在模拟器中构建和运行时,该值会发生变化,这一点很不错。在真实设备上,只有当用户从其设备上删除您的所有应用程序并重新安装应用程序时,才会更改

如果您希望模拟器应用程序在开发过程中使用一致的标识符,则可以定义该UUID并仅将其用于模拟器构建:

NSUUID *devId;
#if TARGET_IPHONE_SIMULATOR
devId = [NSUUID initWithUUIDString:@"SOME-STATIC-UUID-STRING"];
#else
devId = [UIDevice currentDevice].identifierForVendor;
#endif

请注意,您需要将SOME-STATIC-UUID-STRING替换为真实的UUID字符串。

Hi Ryan。是的,我知道这是模拟器所独有的。我在问其他人在开发过程中是如何解决这个问题的。通常我会构建应用程序,这样他们就不会依赖这个属性来处理任何关键的事情(通常只是通过设备缓存登录令牌)。如果您确实需要它,请生成一次UUID,并在模拟器构建的条件编译中使用它(更新我的答案以向您展示这将是什么样子)。Ryan,感谢您的更新。我已经实现了类似的东西,我将更新这个问题以反映出来,因为它在团队环境中是无效的。也许我的方法是错误的,或者这就像测试通知一样,这在模拟器中是不可能的。顺便说一句,你的目标检查显然比我的字符串检查更干净,所以谢谢。如果你依赖identifierForVendor来做一些重要的事情,你真的需要它对每个开发人员都不同,当应用程序投入生产时,您可能会感觉很糟糕。只需重新安装应用程序或从备份中恢复即可重置该标识符。