ios的唯一设备标识

Posted

技术标签:

【中文标题】ios的唯一设备标识【英文标题】:Unique device identification for ios 【发布时间】:2015-05-04 10:03:07 【问题描述】:

我有一个 html/JS/CSS 应用程序,我希望使用 phonegap 将其转换为 ios 应用程序。在我的应用程序中,我需要唯一标识每个设备。从 iOS 7 Apple 不接受获取 UDID 的应用程序。我想为最新的 ios4+ 实现这一点。我在https://build.phonegap.com/plugins/1112 看到了一个插件。与此插件相关的另一个问题是,如果我使用依赖于钥匙串的插件,那么风险因素是什么,即在什么情况下会重置或清除钥匙串?

【问题讨论】:

【参考方案1】:

这不是常见的方法,但它可能会有所帮助。

您可以使用服务http://get.udid.io 获取设备的真实UDID。

这里是使用示例的 repo https://github.com/vladignatyev/udidio-example

【讨论】:

顺便说一句,UDID.io 现在有用于连接第三方服务的 API。看看github.com/vladignatyev/udidio-example【参考方案2】:

很快,我最近的做法是:

var vendorDeviceId = UIDevice.currentDevice().identifierForVendor.UUIDString

这是正确的,UUID 现在对于每个应用安装是唯一的,而不是设备。如果用户重新安装您的应用,他将被分配一个新的唯一标识符(不同于上一个)。

【讨论】:

换句话说,它们对于设备来说不是唯一的,它们只是在您安装/更新/重新安装应用程序时随机生成的:这意味着它是一个完全无用的 ID。【参考方案3】:

根据Cordova documentation这里是获取设备UUID的方法

var string = device.uuid;

请注意,对于 iOS,设备的 UUID 与每个应用程序不同。此 UUID 在您的应用程序首次运行时创建,并在您删除并重新安装应用程序时更改。

iOS Quirk

iOS 上的 uuid 使用 identifierForVendor 属性。它对于同一供应商的设备是唯一的,但对于不同的供应商会有所不同,并且如果供应商的所有应用程序都被删除然后重新安装,它就会发生变化。如果应用程序从备份或 iCloud 中恢复,则 UUID 将与保存在首选项中的相同。使用此插件旧版本的用户仍会收到通过其他方式生成的相同的先前 UUID,因为它将从首选项中检索。

【讨论】:

【参考方案4】:

您可以将我的标识符用于供应商插件 https://github.com/jcesarmobile/IDFVPlugin

它使用供应商https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor的本机标识符

【讨论】:

以上是关于ios的唯一设备标识的主要内容,如果未能解决你的问题,请参考以下文章

2020-09-07 手机设备唯一标识

ios的唯一设备标识

iOS开发:设备唯一标识与全局变量

在 64 位 iOS 设备上更改唯一标识符

iOS 和 Android 无需连接即可访问的蓝牙设备是不是有唯一标识符?

Swift:如何以编程方式获取iOS设备的唯一标识符?