我正在开发一个iOS应用程序,它调用web服务进行登录,然后我将登录凭据与供应商标识符(identifierForVendor)一起发送到Web服务器,以便为这些凭证唯一地标识设备.因此用户只能拥有一个设备和一个凭证.
我有了identifierForVendor
NSString *uuid = [[UIDevice currentDevice] identifierForVendor].UUIDString
Run Code Online (Sandbox Code Playgroud)
然后该标识符将存储在Web服务器的数据库中以及设备数据库中.当用户打开应用程序并尝试从Web服务器下载数据时,用户设备上的本地identifierForVendor将与存储在Web服务器上的标识符进行比较.
用户卸载应用程序并重新安装时出现问题,我发现identifierForVendor已更改.因此用户无法继续前进.
我阅读了苹果文档UIDevice Documentation
如前所述,如果来自同一供应商的所有应用程序都从设备卸载,则在从该供应商新安装任何应用程序时将采用新的identifierForVendor.
那么在我的案例中如何处理这个问题呢?
除非供应商的所有应用程序都从设备中删除,否则不应更改identifierForVendor.如果我有一个更新的应用程序会发生什么.identifierForVendor可以改变吗?制定这个问题的另一种方法是:应用程序升级是否与卸载和安装相同(至少在某种意义上)?
我问的原因是,如果我从App Store安装当前版本的应用程序,然后通过XCode"存档"新版本并通过iTunes安装它,则identifierForVendor会发生变化.我不知道这是特殊情况还是"正常"App更新/升级的情况.
我听说过从UIDevice.identifierForVendorApp Store更新应用程序时发生了变化的故事.
这个答案就像"...... 从app store 更新应用程序时,有一个影响identifierForVendor计算的错误 ......".请参阅rdar:// 22677034上的相应重要报告.
你有经历过这样的问题吗?
这是一个已修复的错误吗?
我们目前正在使用identifierForVendoriOS6引入的.现在iOS7发布了,我想知道在更新过程之后这个标识符对于我的应用程序是否保持不变.
如果我用iOS7恢复我的设备,那么它将明显改变,因为它将是一个新的开始.
通过iTunes/OTA更新怎么样?