以编程方式获取IOS设备的UDID?

Nis*_*sal 18 iphone objective-c udid ios

我想以编程方式获取iOS设备的UDID.我使用以下代码来获取iOS设备的UDID.

NSUUID *uuid = [NSUUID UUID];
NSString *uuidString = uuid.UUIDString;
Run Code Online (Sandbox Code Playgroud)

但我得到的输出与我的设备的实际UDID不同.

Anb*_*hik 53

NSString* identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; // IOS 6+
NSLog(@"output is : %@", identifier);
Run Code Online (Sandbox Code Playgroud)

Swift 2.X(此处所有版本均为2.0以上版本)

let identifier: String = UIDevice.currentDevice().identifierForVendor().UUIDString()
NSLog("output is : %@", identifier)
Run Code Online (Sandbox Code Playgroud)

Swift3

let identifier = UIDevice.current.identifierForVendor?.uuidString

NSLog("output is : %@", identifier! as String)
Run Code Online (Sandbox Code Playgroud)

额外的参考

Apple显然已开始删除iOS5中对UDID(Unique Device IDentifier)的访问权限.无论如何,您现在可以做的最好的识别是使用UUID(通用唯一标识符).这必须基于每个应用程序.也就是说,无法再识别设备,但您可以识别设备上的应用程序.只要用户没有完全删除应用程序,那么此标识符将在应用程序启动之间保持不变,至少让您使用设备上的特定应用识别同一用户.不幸的是,如果用户完全删除然后重新安装应用程序,那么ID将会改变,但这是任何人都可以做的最好的事情.