如何设计选择 SIM 卡并在验证时获得 iOS 中的唯一 ID?

How to design choose the SIM and get a unique id in iOS while authentication?

A) 在 android 中,我可以获得 SIM 卡的详细信息,并且可以专门选择用于从该 SIM 卡发送 OTP 的 SIM 卡。我有一个示例屏幕,可以在 Android.

中实现

我按照 link ios

https://developer.apple.com/forums/thread/9171 此 link 声明我们无法从设备获取 SIM Phone 号码,因为 Apple 隐私政策

如何在iOS中实现同屏?任何替代想法或帮助表示赞赏

B) 如何获取用于身份验证的唯一标识?

在Android中我们可以得到(IMEI+SIM Serial number)可用于身份验证,但在iOS中所有这些都因隐私而受到限制。相反,不可能获得每个设备唯一的 UDID。我知道我可以为此使用供应商 ID:

UIDevice.current.identifierForVendor!.uuidString

但是正如文档所说: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.

由于当用户卸载应用程序时供应商 ID 会发生变化。那么是否有任何方法可以获取除供应商 ID 之外的唯一 ID 来进行身份验证,该 ID 不会更改并且始终是唯一的?

如何获取 SIM phone 号码?

正如问题中所述,由于安全原因,无法获得 phone 号码。我建议你有一个文本框,让用户输入数字,这样你就可以发送短信来验证它

如何获取用于身份验证的唯一标识?

根据您的部署目标需求,这里有两个选项:

  1. Apple 在 iOS 11 中提出了 DeviceCheck 框架。您的应用程序应使用 DeviceCheck API 生成标识设备的临时令牌。您关联的服务器将此令牌与您从 Apple 收到的身份验证密钥结合起来,并使用结果请求访问 per-device 位。 Apple 有意为之,DeviceCheck 令牌不能用于识别特定设备。 但是您可以尝试播放以获取 iOS 设备状态

    的唯一标识符
  2. 创建您自己的唯一 ID 并将其保存在 keychain

参考资料