问题:不推荐使用UDID - 我们不能再使用它了。 网上有一些解决方案:生成GUID并将其存储在“安全位置”,iCloud,IdentifierForVendor,从iOS6开始,OpenUID,SecuredID等等......
请求: 我需要有一个唯一的设备标识符来存储用户数据。
问题: 我可以使用推送通知的deviceToken作为唯一标识符吗?
这个想法的优点和缺点是什么?
答案 0 :(得分:2)
这是一个可怕的想法,如果用户更改设备或其他一些未知原因,令牌可能会更改。
最重要的是:You are identifying devices not users!
一种解决方案是生成UUID并将其保存在用于检索它的用户密钥链中。但是,如果用户清除设备,也可以删除它。
您最好的选择是允许用户使用可以创建的帐户登录。然后,您可以将其与钥匙串中的UUID结合使用。
答案 1 :(得分:0)
您应该使用identifierForVendor
。推送通知的deviceToken
是唯一的,但CAN可以更改。
答案 2 :(得分:0)
The token can change if the user reset the device, for unique device identifying you can use the following code
float currentVersion = 6.0;
NSString *udid = nil;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion)
{
//below code is taken from the Apple Sample code, to check you can download the files
https://developer.apple.com/library/ios/releasenotes/StoreKit/IAP_ReceiptValidation
// OR
http://developer.apple.com/library/ios/releasenotes/StoreKit/IAP_ReceiptValidation/VerificationController.zip (line number 319)
udid = [UIDevice currentDevice].identifierForVendor.UUIDString;
}
else
{
//may cause apple rejection
udid = [UIDevice currentDevice].uniqueIdentifier;
//i think we can use the below link for ios5 or below but not sure it may accept or reject
https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5
}
//just saw a link which may help you better and have a look at image
http://www.doubleencore.com/2013/04/unique-identifiers/
即使在重新安装应用,删除应用或系统重启或系统启动或恢复出厂设置后,有人会建议保留唯一ID的最佳方法