如何在iOS中获取用户设备ID?

3

我想要获取用户移动设备的ID,因为我想在提交表单时将其存储在数据库中,这样每当用户卸载并重新安装应用程序时,他将获得之前提交的所有记录,因此无需再次提交数据。我使用了库,但它会为所有设备返回相同的ID。请帮忙解决。谢谢。


1
这已经不再可能了。苹果在iOS 7中禁用了它,以避免广告机构跟踪用户。 - EmilioPelaez
2个回答

2

官方文档回答

@property(nonatomic, readonly, retain) NSUUID *identifierForVendor

该属性返回一个NSUUID对象,用于标识设备。该标识符在应用程序被删除后仍然有效,并且相同的供应商ID可以在不同的应用程序中使用。

NSString *identifier = [[UIDevice currentDevice].identifierForVendor UUIDString];

该属性的值对于来自同一供应商并在同一设备上运行的应用程序相同。对于来自不同供应商的同一设备上的应用程序以及来自不同设备的应用程序,将返回不同的值。
通常,供应商是由 App Store 提供的数据确定的。如果应用程序未从应用商店安装(例如企业应用程序和仍处于开发中的应用程序),则根据应用程序的 bundle ID 计算供应商标识符。bundle ID 假定为反 DNS 格式。
在 iOS 6 上,使用 bundle ID 的前两个组件生成供应商 ID。如果 bundle ID 只有一个组件,则使用整个 bundle ID。
在 IOS 7 上,除最后一个组件外,使用 bundle 的所有组件生成供应商 ID。如果 bundle ID 只有一个组件,则使用整个 bundle ID。
如果该值为 nil,请稍后再次获取该值。例如,在设备重新启动但用户尚未解锁设备时会发生这种情况。 只要应用程序(或来自同一供应商的另一个应用程序)安装在 iOS 设备上,此属性中的值将保持不变。 当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值将更改。 当使用 Xcode 安装测试构建或使用 ad-hoc 分发在设备上安装应用程序时,该值也可能更改。因此,如果您的应用程序将此属性的值存储在任何位置,则应优雅地处理标识符更改的情况。

有没有其他解决方案适用于我的问题?我想要适用于所有设备的解决方案,如果有相关的库,请告诉我。谢谢。 - Dhaval Umraliya

1
你可以使用唯一设备 ID 来获取 iOS6+ 设备的信息。
NSString *identifier = [[UIDevice currentDevice].identifierForVendor UUIDString];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接