即使在手机被擦除后也能跟踪 iOS 设备
Posted
技术标签:
【中文标题】即使在手机被擦除后也能跟踪 iOS 设备【英文标题】:Keep track of an iOS Device even after phone is wiped 【发布时间】:2014-03-25 21:00:14 【问题描述】:我一直在寻找唯一标识 ios 设备的方法,并确保我们的应用在与手机被擦除之前相同的设备上使用。
我知道查询 UDID 已被弃用,并且有一种将设备映射到应用程序的新方法:CFUUID 但这种方法的问题是 CFUUID 给出的 UUID 在每次新安装的应用程序。
编辑:其实我的意思是
[[UIDevice currentDevice] identifierForVendor]
而不是 CFUUID。 抱歉,我指的是这个标识符ForVendor,每次卸载应用程序时都会有所不同。这是我在应用程序中不想要的。一定有办法,因为我擦了手机,Testflight 能够将其识别为同一设备。我想知道他们是怎么做到的。
即使在查询 MAC 地址(现在为所有设备返回相同的数字)并且 UDID 已被弃用之后,像 testflight 之类的服务以及可能所有分析服务仍然能够唯一地识别设备和用户。有人可以告诉我一种唯一识别 iOS 设备的机制,以便即使在手机擦除后也可以识别它。
我已经查看了Apple OTA Configuration,但我不确定这是否有助于以某种方式仅跟踪设备,而不是为登录到我们服务的用户发回任何配置文件。
【问题讨论】:
@StephenDarlington 无法透露,但主要功能是我们的应用程序在设备上运行以进行一些测试,我们需要确保他下次在同一设备上运行它。两者之间可以进行应用程序卸载/完整的手机擦除。 郑重声明,CFUUID 不是也从来不是映射设备的一种方式——它只是一种生成唯一标识符的方式。 UDID 和 UUID 可能共享相似的字母,但它们是完全不同的两个东西。 @hsoi 感谢您提醒我这一点,我在这个问题上错了。我指的不是 CFUUID 每次安装时的更改。 不客气。这是一个容易犯的错误(鉴于类似的字母)。我希望我有一个对你更有用的答案,因为 AFAIK,Apple 删除了你所追求的方法。 :-( 听起来很邪恶和不道德。 【参考方案1】:在 iOS 7 上没有您想要的经过批准的、可公开访问的 API。
与您正在寻找的最接近的选项是
[[UIDevice currentDevice] identifierForVendor]
来自 Apple 的文档:
对于来自同一供应商并在同一设备上运行的应用,此属性的值相同。对于来自不同供应商的同一设备上的应用程序以及不同设备上的应用程序(无论供应商)返回不同的值。
当应用程序(或来自同一供应商的另一个应用程序)安装在 iOS 设备上时,此属性中的值保持不变。当用户从设备中删除该供应商的所有应用并随后重新安装其中一个或多个时,该值会发生变化。
【讨论】:
iPhone“擦除”的性质意味着所有供应商的所有应用程序都将被删除。那不是说identifierForVendor
不适合OP 的需求吗?【参考方案2】:
不管是好是坏,Apple 已经弃用了几乎所有可以在这里提供帮助的东西(如果您尝试解决方法,Apple Store 会拒绝您的应用程序,尽管您可能不打算在 App Store 分发)。他们的理由是,用户应该能够随意更换/升级手机,只要他们的 Apple ID 保持不变,他们就可以继续使用他们之前拥有的任何资产。
当然我可以想象他们的逻辑有缺陷并且设备很重要的情况,但这不取决于我......
有没有办法将事物与用户登录而不是设备联系起来?如果没有,您可以做的是在设备上生成并存储一个随机数。
【讨论】:
我可以使用钥匙串访问来确定用户,甚至是他们的登录名。当用户删除我们的应用程序并稍后再次安装时,生成随机数并将其存储在设备上将不起作用。用例是这样的,当用户在同一设备上再次运行应用程序时,我们能够确认(不仅确定)它与我们数据库中的设备是同一设备。【参考方案3】:没有公开的(即 Apple 批准的)方法来识别跨擦除的设备。如果设备被擦除/恢复,identifierForVendor
和 advertisingIdentifier
都会发生变化。
TestFlight 之类的服务能够识别设备,因为它们安装了特殊的配置文件,为它们提供了一些额外的能力,例如获取实际的 UDID。
如果您的目标不是 AppStore(即尝试从 AdHoc 应用程序或越狱设备上执行此操作),那么可以使用私有 API 实现此目的。
【讨论】:
感谢您的回复我想知道 Testflight 到底是做什么的,并且应用商店中没有 testflight 应用,所以他们使用的机制不适用于我认为的 iOS 应用? 他们没有应用程序,真的。他们正在设备上安装 Web Clip 和配置文件(您可以在设置 - 常规 - 配置文件下找到)。很抱歉,我对他们在做什么没有更深入的了解,但他们肯定是通过某种配置文件诡计获取 UDID。以上是关于即使在手机被擦除后也能跟踪 iOS 设备的主要内容,如果未能解决你的问题,请参考以下文章
SharedPrefs 似乎已被擦除,即使我使用它们来自动登录
当应用程序未在后台运行时,使用 startmonitoringsignfiicantlocationchanges 跟踪设备位置