首页 > 解决方案 > 限制设备号与 UIDevice.current.identifierForVendor

问题描述

我是一名初级专业软件开发人员。我正在开发具有每个用户设备限制的应用程序,我们使用 UIDevice.current.identifierForVendor 来识别设备。不幸的是,我们在安装和重新安装应用程序时遇到了“达到设备限制”的问题。

根据 identifierForVendor 文档:

当应用程序(或来自同一供应商的另一个应用程序)安装在 iOS 设备上时,此属性中的值保持不变。当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。

问题很明显——删除并重新安装应用程序后,我们有一个新的标识符ForVendor,我们将其视为新设备。

根据文档的另一部分:

通常,供应商由 App Store 提供的数据确定。如果应用程序不是从应用程序商店安装的(例如企业应用程序和仍在开发中的应用程序),则会根据应用程序的捆绑 ID 计算供应商标识符。

我有两个问题:

  1. 当我们从 Xcode 或 TestFlight 安装应用程序时会出现问题。当我们从 AppStore 安装应用程序时,它也会出现吗?
  2. 有没有其他方法可以限制设备数量和确定设备?

PS。我知道,已经有一些类似的问题,但在我看来,答案并不详尽,而且是几年前的事了 :)

标签: iosswiftiphoneipad

解决方案


您可以尝试使用Keychain来做到这一点:

  1. 产生UUID().uuidString
  2. 使用密钥“UniqueDeveiceID”或其他东西将其保存到带有一些钥匙串包装器(例如KeychainAccess )的钥匙串。
  3. 将生成的 UUID 发送到服务器(或其他)

总结:应用程序启动后,只需检查键的值是否UniqueDeveiceID存在。重新安装后钥匙串没有清理,因此您必须有机会检查它是重新安装还是新注册的设备。


推荐阅读