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

Gow*_*m R 41 ios

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

NSUUID *oNSUUID = [[UIDevice currentDevice] identifierForVendor];
[strApplicationUUID setString:[oNSUUID UUIDString]];
Run Code Online (Sandbox Code Playgroud)

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

Guy*_*gus 47

您无法再为每台设备获取唯一ID.identifierForVendor是你最好的.Apple系统地禁用了识别特定设备的功能,因此营销人员无法传递用户的ID.

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

let deviceId = UIDevice.current.identifierForVendor?.uuidString
Run Code Online (Sandbox Code Playgroud)

UPDATE

如果您想要通用ID,那么您可以选择使用advertisingIdentifier.但是,如果用户在其设备设置中的广告跟踪数量有限,则此值将仅返回全零.

import AdSupport

let identifierManager = ASIdentifierManager.shared()
if identifierManager.isAdvertisingTrackingEnabled {
    let deviceId = identifierManager.advertisingIdentifier.uuidString
}
Run Code Online (Sandbox Code Playgroud)

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


Raj*_*Ram 43

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

UIDevice *device = [UIDevice currentDevice];

NSString  *currentDeviceId = [[device identifierForVendor]UUIDString];
Run Code Online (Sandbox Code Playgroud)


har*_*bar 24

获取设备ID

斯威夫特3

let device_id = UIDevice.currentDevice().identifierForVendor?.UUIDString
Run Code Online (Sandbox Code Playgroud)

斯威夫特4:

let device_id = UIDevice.current.identifierForVendor!.uuidString
Run Code Online (Sandbox Code Playgroud)

  • 嗨@hardik 感谢您的回复。在设备上进行测试时,我了解到一件事,如果我每次都卸载并重新安装应用程序,我会得到不同的 UUID。一旦用户删除我们的应用程序,我们就无法获得相同的 ID。 (2认同)
  • 更新swift 3.0:`let deviceID = UIDevice.current.identifierForVendor?.uuidString` (2认同)

小智 7

在Swift 3.x中获取设备ID

let deviceId = UIDevice.current.identifierForVendor?.uuidString
Run Code Online (Sandbox Code Playgroud)