我正在使用下面的代码来获取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.我认为它应该是相同的,每次当我重新安装相同的应用程序。
2条答案
按热度按时间vjhs03f71#
我觉得你应该试试这个
sc4hvdpw2#
您需要深入研究 * 为什么 * 您对
passwordForService:
的调用返回nil
(这显然是您的症状)。如果SSKeychain
没有提供错误,则需要在代码中放置日志记录或断点,以查看实际的错误代码。如果没有找到,那么您需要确保成功写入(您没有检查
setPassword:...
中的错误)。如果成功写入,但下次安装时无法读取,则需要检查是否未更改访问组或签名密钥。如果由于权限问题而无法阅读(或写入),则需要确保在设备锁定时没有尝试读取/写入(除非您已为此正确设置了权限)。基本上,检查你的错误,然后从那里开始。