我使用下面的代码来获取UUID。
-(NSString *)updateUserPhoneDetails{
NSString *retrieveuuid = [SSKeychain passwordForService:@"com.testUser" account:@"testUser"];
NSString *uniqueID;
if (retrieveuuid == nil) {
NSString *uuid = [[NSUUID UUID] UUIDString];
uniqueID=[uuid stringByReplacingOccurrencesOfString:@"-" withString:@""];
NSLog(@"Create new uuid : %@",uniqueID);
//Store the password in Keychain
NSError *error = nil;
[SSKeychain setPassword:uuid forService:@"com.testUser" account:@"testUser" error:&error];
}else{
uniqueID=[retrieveuuid stringByReplacingOccurrencesOfString:@"-" withString:@""];
NSLog(@"uniqueID : %@",uniqueID);
}
return uniqueID;
}
上面的代码在iOS 10.0之前正常运行。 我已经在iPhone 7,iPhone 5s中进行了测试,但获得了一些不同的UUID。 我认为每次重新安装相同的应用程序时都应该是相同的。 请帮帮我。
答案 0 :(得分:0)
我认为你应该试试这个,
NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
答案 1 :(得分:0)
您需要深入研究为什么您对passwordForService:
的回复nil
(显然是您的症状)。如果SSKeychain
未提供错误,则需要在代码中放置日志记录或断点以查看实际的错误代码。
如果找不到,那么你需要确保你成功写作(你没有检查setPassword:...
中的错误)。如果它已成功写入,但您下次安装时无法阅读,则需要检查您是否未更改访问组或签名密钥。如果由于权限而无法读取(或写入),则需要确保在设备锁定时不尝试读/写(除非您为此正确设置权限)。
基本上,检查你的错误,然后从那里开始。