xcode 在iOS 10.2版中在同一设备上获取不同的UUID

sbdsn5lh  于 2023-05-30  发布在  iOS
关注(0)|答案(2)|浏览(161)

我正在使用下面的代码来获取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.我认为它应该是相同的,每次当我重新安装相同的应用程序。

vjhs03f7

vjhs03f71#

我觉得你应该试试这个

NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
sc4hvdpw

sc4hvdpw2#

您需要深入研究 * 为什么 * 您对passwordForService:的调用返回nil(这显然是您的症状)。如果SSKeychain没有提供错误,则需要在代码中放置日志记录或断点,以查看实际的错误代码。
如果没有找到,那么您需要确保成功写入(您没有检查setPassword:...中的错误)。如果成功写入,但下次安装时无法读取,则需要检查是否未更改访问组或签名密钥。如果由于权限问题而无法阅读(或写入),则需要确保在设备锁定时没有尝试读取/写入(除非您已为此正确设置了权限)。
基本上,检查你的错误,然后从那里开始。

相关问题