UDID被弃用,使用UUID来作为设备的唯一标识。获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了。使用keychain存储可以保证程序卸载重装时,UUID不变。但当刷机或者升级系统后,UUID还是会改变的。但这仍是目前为止最佳的解决办法了。
1、Target - Capabilities - KeychainSharing - ON 开启 KeychainSharing
开启 KeychainSharing
开启后,会自动生成Entitlements文件
代码如下:
//程序运行,获取UUID
NSString *strUUID = (NSString *)[KeyChainStore load:@"xxx.xxx.xxx”];
//首次执行该方法时,uuid为空
//生成一个uuid的方法
CFUUIDRef uuidRef= CFUUIDCreate(kCFAllocatorDefault);
strUUID = (NSString *)CFBridgingRelease(CFUUIDCreateString (kCFAllocatorDefault,uuidRef));
//将该uuid保存到keychain
[KeyChainStore save:KEY_USERNAME_PASSWORD data:strUUID];