如何在 iOS 设备中获取唯一 ID?

Posted

技术标签:

【中文标题】如何在 iOS 设备中获取唯一 ID?【英文标题】:How to get unique id in iOS device? 【发布时间】:2013-10-16 11:34:49 【问题描述】:

我已经使用 mac 地址来识别服务器端的 ios 设备。当使用 iOS 7 运行我的应用程序时,无法检索正确的 mac 地址。或者我使用了

NSUUID *oNSUUID = [[UIDevice currentDevice] identifierForVendor];
[strApplicationUUID setString:[oNSUUID UUIDString]];

属性。但是在每次新安装应用程序后,这个值也会发生变化。现在我想在服务器端检测特定设备?如何在 iOS 中获取每个设备的唯一 ID?

【问题讨论】:

【参考方案1】:

您无法再为每台设备获取唯一 ID。 identifierForVendor 是您将得到的最好的。 Apple 系统性地禁止识别特定设备,以便营销人员无法传递用户 ID。

要将标识符ID作为字符串获取,可以使用

let deviceId = UIDevice.current.identifierForVendor?.uuidString

更新

如果您想要一个通用 ID,那么您可以选择使用 advertisingIdentifier。但是,如果用户在其设备设置中限制了广告跟踪,则该值将简单地返回全零。

import AdSupport

let identifierManager = ASIdentifierManager.shared()
if identifierManager.isAdvertisingTrackingEnabled 
    let deviceId = identifierManager.advertisingIdentifier.uuidString

注意 Apple 建议此代码仅供构建广告框架的公司使用,而不是应用程序开发人员自己使用。如果您在代码中将其用于与广告无关的目的,请准备好拒绝您的应用。

【讨论】:

通过***.com/questions/19402327/…快速获取设备ID 如果有其他人像我一样从 libgdx/robovm 土地来寻找用 Java 执行此操作的方法:UIDevice device = UIDevice.getCurrentDevice(); String id = device.getIdentifierForVendor().asString();【参考方案2】:

获取设备ID的最佳方式是identifierForVendor

UIDevice *device = [UIDevice currentDevice];

NSString  *currentDeviceId = [[device identifierForVendor]UUIDString];

更新

对于 Swift 4.1 使用

UIDevice.current.identifierForVendor?.uuidString

【讨论】:

【参考方案3】:

获取设备ID

斯威夫特 3

let device_id = UIDevice.currentDevice().identifierForVendor?.UUIDString

斯威夫特 4:

let device_id = UIDevice.current.identifierForVendor!.uuidString

【讨论】:

嗨..在我的应用程序中,我需要获取设备 ID。苹果支持获取设备ID吗?我们可以将应用提交到应用商店 嗨@hardik 感谢您的回复。在设备上进行测试时,我开始知道如果我每次都卸载并重新安装应用程序,我会得到不同的 UUID。一旦用户删除我们的应用程序,我们就无法获得相同的 ID。 嗨@hardik 有没有办法获得相同的UDID? @Jayesh 使用哪种语言 swift 或 Obj- c 如果 swift 比这种方法更直接,否则你可以获得 1) let UUID = NSUUID().UUIDString swift 3.0 更新:let deviceID = UIDevice.current.identifierForVendor?.uuidString【参考方案4】:

在 Swift 3.x 中获取设备 ID

let deviceId = UIDevice.current.identifierForVendor?.uuidString

【讨论】:

【参考方案5】:

你可以使用这个库:https://github.com/fabiocaccamo/FCUUID

请查看持久性部分的表格。 uuidForDevice 将涵盖大部分需要的案例,它是旧版本 iOS udid 的最佳替代品。

Readme 中的示例在 Objective-C 中,但它也适用于 Swift。从 Swift 第一次发布到现在(Swift 4.1),我一直在使用它。

【讨论】:

【参考方案6】:

对于 Swift 5

let deviceId = UIDevice.current.identifierForVendor?.uuidString

【讨论】:

以上是关于如何在 iOS 设备中获取唯一 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 中获取设备或 iPad 的唯一编号?

如何在 android 10 中获取唯一的设备 ID?

如何获取Android唯一标识

如何在 Apple 设备上获取唯一且一致的设备 ID

Android能够获取到唯一的设备ID吗

如何生成唯一的Android设备ID