【问题标题】:iOS device specific unique identifieriOS 设备特定的唯一标识符
【发布时间】:2017-11-09 18:42:21
【问题描述】:

有没有办法为 IOS 设备生成唯一的 id?

我有一个框架可以帮助应用程序从中获取登录令牌,我使用 identifierForVendor 没有问题,因为所有消费者应用程序都是从同一供应商发布的,但我想从不同的发布者添加另一个应用程序并将该应用程序添加到链,identifierForVendor 已经不行了,

我也不能使用钥匙串,因为他们使用不同的团队 ID,

如果还有其他方法可以做到这一点,请告诉我?

【问题讨论】:

  • this线程中查看解决方案
  • Apple 一直在努力防止设备跟踪。您可以出于安全目的使用 IDFA,但请注意,用户可以随时重置此设置。

标签: ios swift keychain


【解决方案1】:

如果我没记错的话,Apple 已经撤销了对真实设备标识符 (UDID) 的访问权限,而是提供了一个伪标识符来限制其恶意使用。

参考这个之前的回答https://stackoverflow.com/a/19402414/28305

【讨论】:

  • 是的,我知道,但我正在询问任何解决方法,可能会收集一些硬件信息并创建一个散列值。
  • 鉴于 Apple 由于滥用而撤销了对 UDID 的访问权限,我认为他们不会善待任何试图击败它的人。如果您在供应商应用程序之间有一个共同的后端服务,也许您可​​以使用外部服务将其存储在设备上的每个供应商应用程序上。
【解决方案2】:

UDID 不再可用,因此您可以使用

UIDevice.currentDevice().identifierForVendor?.UUIDString

更多here

或者您可以使用 iOS 11 中提供的 DeviceCheck framework

只需在 Apple Developer 帐户中创建一个新密钥并生成一个令牌

DCDevice.current.generateToken(completionHandler:)

注意:您必须仅使用真实设备来接收令牌。

你可以找到很好的教程here

【讨论】:

  • 提到,从 iOS 11 开始提供 DeviceCheck 框架,应该是正确的答案。
【解决方案3】:

简短回答:不,因为数据隐私问题(至少在官方声明中)。

Apple 阻止了对“标识符”(例如 UDID)和硬件数据(例如 MAC 地址等)的访问。即使目前有这样的领域,一旦被一定数量的人利用,很快就会被删除或混淆。

在一段时间内唯一可行的方法是尝试获取当前设备的browser fingerprint

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2013-10-07
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2011-11-13
    相关资源
    最近更新 更多