【问题标题】:How can I get identification string look like IMEI in IOS如何在 IOS 中获得类似于 IMEI 的标识字符串
【发布时间】:2018-06-03 15:56:16
【问题描述】:

我的项目有一个案例:一个账号用户只能登录一台设备(如果用户登录设备A中的应用程序,用户无法登录设备B中的应用程序)。我的想法是:当用户登录时,我会得到imei Iphone(如android)并将其与请求登录一起发送到服务器。但我无法获得imei。我尝试使用 UUID,但重新安装应用程序时 UUID 会更改。钥匙串不能解决问题。请帮帮我。

【问题讨论】:

  • @rmaddy UUID 将在重新安装应用程序时更改。我无法使用它。
  • 您需要让它工作,因为 Apple 故意阻止 3rd 方开发人员拥有设备级唯一标识符。这对用户来说是件好事。
  • 当用户在新设备上登录时,您应该使所有现有会话无效,而不是阻止用户登录设备 B。最好尊重最后一次登录而不是第一次登录。这样,如果用户获得了新设备,他们就不需要经历任何“注销”过程。他们可能无法退出旧设备,因为他们可能丢失了旧设备。如果供应商标识符由于重新安装而发生更改,那么您只需使旧会话无效。

标签: ios swift


【解决方案1】:

你必须使用 Keychain 来存储 Unique Id ,即使用户删除应用程序也不会改变

您可以使用任何包装器源代码来执行此操作

这是一个例子 https://github.com/Joe0708/KeychainUUID

【讨论】:

  • 如果用户删除钥匙串或不与 Icloud 同步。我认为它不起作用
  • 钥匙串目前在应用重新安装时仍然存在,但如果设备被擦除则不会。这种行为可能会改变;它在 iOS 10 测试版之一中实现了,但我认为 Apple 认为它对依赖钥匙串持续存在的现有应用程序的破坏性太大。这并不是说这种行为将来不会改变。
【解决方案2】:

一开始我想提一下,我不知道有什么方法可以直接回答你的问题,尤其是苹果出于隐私考虑不允许你阅读 IMEI 和其他类似的东西。已回复here.

解决方法可能如下

查看UIDevice 类,尤其是identifierForVendorProperty,它为您(根据documentation)提供设备特定值。

对于来自同一供应商并在同一设备上运行的应用,此属性的值相同。对于来自不同供应商的同一设备上的应用以及不同设备上的应用,无论供应商如何,都会返回不同的值。

据我所知,一些金融应用程序以这种方式受到保护,只允许一台设备访问该帐户。但是,这需要在每次重新安装应用程序时注册设备。

或者,您可以使用在应用中生成的 UUID(首次运行),然后将其分配给在线用户。它可能采用类似于两步验证过程的形式。但请注意,由于此类限制,用户必须始终在线才能使用您的应用。

【讨论】:

  • 非常感谢。我知道,但我只是想看看有没有其他方法。
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多