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

时间:2013-10-16 11:34:50

标签: ios

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

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

属性。但是,每次新安装应用程序后,此值也会更改。现在我想检测服务器端的特定设备?如何在iOS中为每台设备获取一些唯一ID?

6 个答案:

答案 0 :(得分:43)

您无法再为每台设备获取唯一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
}

N.B。 Apple建议此代码仅供构建广告框架的公司使用,而不是应用程序开发人员自己使用。如果您在代码中使用此功能用于非广告相关目的,请准备好拒绝您的应用。

答案 1 :(得分:41)

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

UIDevice *device = [UIDevice currentDevice];

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

答案 2 :(得分:24)

中获取设备ID

Swift 3

let device_id = UIDevice.currentDevice().identifierForVendor?.UUIDString
斯威夫特4:

let device_id = UIDevice.current.identifierForVendor!.uuidString

答案 3 :(得分:7)

在Swift 3.x中获取设备ID

let deviceId = UIDevice.current.identifierForVendor?.uuidString

答案 4 :(得分:1)

您可以使用以下库:https://github.com/fabiocaccamo/FCUUID

请在“持久性”部分的表上查看。 uuidForDevice将涵盖大多数情况,这是从旧版本的iOS中研究得出的最佳替代方案。

Readme中的示例在Objective-C中,但它也适用于Swift。自Swift首次发布至今(Swift 4.1),我一直使用它。

答案 5 :(得分:1)

对于Swift 5

let deviceId = UIDevice.current.identifierForVendor?.uuidString