如何在身份验证时在iOS中设计、选择SIM卡并获取唯一id?

如何在身份验证时在iOS中设计、选择SIM卡并获取唯一id?,ios,objective-c,swift,iphone,xcode,Ios,Objective C,Swift,Iphone,Xcode,A) 在安卓系统中,我可以获得SIM卡的详细信息,并可以专门选择从该SIM卡发送OTP的SIM卡。我有一个可以在Android中实现的示例屏幕 我跟踪了ios的链接 此链接表示,由于苹果的隐私政策,我们无法从设备中获取SIM卡电话号码 如何在iOS中实现相同的屏幕?任何其他想法或帮助都将不胜感激 B) 如何获取用于身份验证的唯一id 在Android中,我们可以使用(IMEI+SIM序列号)进行身份验证,但在iOS中,由于隐私问题,所有这些都受到限制。取而代之的是,不可能获得每个设备都唯一的UD

A) 在安卓系统中,我可以获得SIM卡的详细信息,并可以专门选择从该SIM卡发送OTP的SIM卡。我有一个可以在Android中实现的示例屏幕

我跟踪了ios的链接

此链接表示,由于苹果的隐私政策,我们无法从设备中获取SIM卡电话号码

如何在iOS中实现相同的屏幕?任何其他想法或帮助都将不胜感激

B) 如何获取用于身份验证的唯一id

在Android中,我们可以使用(IMEI+SIM序列号)进行身份验证,但在iOS中,由于隐私问题,所有这些都受到限制。取而代之的是,不可能获得每个设备都唯一的UDID。我知道我可以为此使用供应商id:

UIDevice.current.identifierForVendor!.uuidString
但正如文档所述:
当应用程序(或来自同一供应商的其他应用程序)安装在iOS设备上时,此属性中的值保持不变。当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值将发生变化。


由于供应商id在用户卸载应用程序时会发生变化。因此,除了供应商id之外,是否有其他方法可以获取唯一的id进行身份验证,而供应商id不会发生变化且始终是唯一的?

如何获取SIM卡电话号码?

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

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

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

  • 苹果已经在iOS 11中提出了这个框架。您的应用程序应该使用DeviceCheck API生成标识设备的临时令牌。您的关联服务器将此令牌与您从Apple收到的身份验证密钥相结合,并使用结果请求访问每设备位。 苹果非常有意地使用DeviceCheck令牌来识别特定设备。 但您可以尝试播放以获取iOS设备状态的唯一标识符

  • 创建自己的唯一ID并将其保存在中

  • 参考资料

    • WWDC 2017——iOS、macOS、tvOS、watchOS
    • -访问关联服务器可在其业务逻辑中使用的每个设备、每个开发人员的数据

    a)是否可以重新设计屏幕,让用户自己输入电话号码?b) 没有合法的方法跟踪其唯一的设备是否跨越installations@NeilGaliaskarov你能把这个作为答案贴出来吗?这样我就可以投票了?谢谢你的评论。。请解释更多关于你的b)评论谢谢你的详细回答,那么现在使用vendorIdentifier更好吗?因为我的应用程序也需要支持低于iOS 11的iOS版本,并且设备检查框架仅适用于iOS 11+
    vendoridentier
    非常不稳定,我强烈建议您不要使用它。在我的实践中,它甚至在应用程序更新过程中也发生了更改。因此,您建议使用什么来代替供应商标识?我们将非常感谢您的帮助。是NSString*UUID=[[NSUID UUID]UUIString];仍然可用,而不是供应商标识?我用第二个选项更新我的答案,这可能会帮助您