【问题标题】:How should I use identifierForVendor during development?在开发过程中我应该如何使用 identifierForVendor?
【发布时间】:2013-09-25 03:39:32
【问题描述】:

Apple 建议使用 [UIDevice currentDevice].identifierForVendor。每次在 iOS 模拟器中运行他们的应用程序时,这个值都会改变。

我的应用程序中的初始功能要求我将设备识别为一种轻度身份验证形式。这使得开发变得乏味,理想情况下我可以在调试/运行会话中保持一个独特的价值。有什么建议可以做到这一点吗?

【问题讨论】:

    标签: ios cocoa-touch ios-simulator


    【解决方案1】:

    很漂亮clearly documented 在模拟器中构建和运行时这个值会改变。在真实设备上,只有当用户从他们的设备中删除您的所有应用并重新安装应用时,它才会发生变化。

    如果您希望模拟器应用在开发过程中使用一致的标识符,您可以定义该 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 字符串。

    【讨论】:

    • 嗨瑞恩。是的,我知道这是模拟器独有的。我在问其他人在开发过程中是如何解决这个问题的。
    • 通常我已经构建了应用程序,以便它们不依赖该属性来处理任何关键问题(通常只是通过设备缓存登录令牌)。如果您绝对需要它,请生成一次 UUID 并在模拟器构建的一些条件编译中使用它(更新我的答案以向您展示这将是什么样子)。
    • 瑞恩,感谢您的更新。我已经实现了类似的东西,我会更新问题以反映,因为它在团队环境中无效。也许我的方法是错误的,或者这就像测试通知一样,这在模拟器中是不可能的。
    • 顺便说一句,你的目标检查显然比我的字符串检查更干净,所以谢谢。
    • 如果您依赖 identifierForVendor 来获得一些关键的东西,而您确实需要它对每个开发人员都不同,那么当应用程序投入生产时,您可能会遇到麻烦。只需重新安装应用程序或从备份中恢复即可重置该标识符。
    猜你喜欢
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2011-01-27
    • 2021-03-24
    • 2021-01-15
    相关资源
    最近更新 更多