首页 > 解决方案 > 如果我从 AppStore 安装并重新安装应用程序,identifierForVendor 会发生变化吗?

问题描述

这是我根据客户需求为我的 iOS 应用程序实现一个设备和一个凭证的逻辑

逻辑

我正在开发一个调用 Web 服务进行登录的 iOS 应用程序,当时我将登录凭据连同供应商标识符 (identifierForVendor) 一起发送到 Web 服务器,以便为这些凭据唯一标识设备。因此用户只能拥有一个设备和一个凭据.

然后,此标识符将存储在 Web 服务器的数据库和设备数据库中。下次当用户打开应用程序并尝试从 Web 服务器下载数据时,用户设备上的本地 identifierForVendor 将与存储在 Web 服务器上的标识符进行比较。

忧虑

如果我从 Appstore 下载应用程序并通过删除应用程序从 Appstore重新安装,我担心 identifierForVendor 是否会更改?

这是以下场景:

  1. 从 AppStore 下载了一个名为“ABCDApp”的应用程序。使用我的凭据登录。例如,我有一个 identifierForVendor:“1234”</p>

  2. 我从手机中删除了该应用程序,然后再次从 AppStore 重新安装了相同的应用程序 我会得到相同的供应商 ID“1234”吗?或者如果我从 AppStore 重新安装,我会得到不同的供应商 ID?请注意此供应商只有一个应用程序,没有其他应用程序

我从几个链接中得知,如果我从 APPSTORE 更新应用程序,它不会改变。以下链接是从 Appstore 更新应用程序时供应商 ID 不会更改。但是重新安装案例呢?

这是代码:

NSString *uuid = [[UIDevice currentDevice] identifierForVendor].UUIDString

我担心的是:如果我再次从 Appstore 卸载并重新安装应用程序怎么办?它会改变吗?如果它改变了我如何处理一个设备,一个我计划为我的应用程序实现的凭证逻辑?

标签: iosobjective-ciphonexcodeuuid

解决方案


文档中:

当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。

因此,除非用户安装了来自同一供应商的另一个应用程序,否则此 ID 将在删除并重新安装后更改。在您的情况下,如果同一供应商没有其他应用程序,这意味着 ID更改,因此可能不适合您的情况。

一种替代方法是将本地创建的 UUID 存储在钥匙串中,因为钥匙串条目目前在删除和重新安装应用程序后仍然存在。但是,这是一个未记录的(错误)功能,可能随时中断。


推荐阅读