我使用mac地址识别服务器端的iOS设备。使用iOS 7运行我的应用程序时无法检索正确的mac地址。或者我用了
NSUUID *oNSUUID = [[UIDevice currentDevice] identifierForVendor];
[strApplicationUUID setString:[oNSUUID UUIDString]];
属性。但是,每次新安装应用程序后,此值也会更改。现在我想检测服务器端的特定设备?如何在iOS中为每台设备获取一些唯一ID?
答案 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)
在
中获取设备IDSwift 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