限制设备数量 vs UIDevice.current.identifierForVendor

limit device number vs UIDevice.current.identifierForVendor

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

根据 identifierForVendor 文档:

The value in this property remains the same while the app (or another app from the same vendor) is installed on the iOS device. The value changes when the user deletes all of that vendor’s apps from the device and subsequently reinstalls one or more of them.

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

根据文档的另一部分:

Normally, the vendor is determined by data provided by the App Store. If the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app’s bundle ID.

我有两个问题:

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

PS。我知道,已经有一些类似的问题,但我认为答案并不详尽,那是几年前的事了:)

您可以尝试使用 Keychain:

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

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