HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 应用程序从iTunes更新后,Keychain不会保留数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在使用 SSKeychain开源库在我的iOS应用程序中安全地存储数据.昨天,我遇到了@L_801_1@问题,当我从iTunes将v1.0从v1.0更新到v2.0时,SSKeychain无法保留其数据.

UUID生成代码

- (NSString *)createNewUUID
{
    CFUUIDRef theUUID = CFUUIDCreate(null);
    CFStringRef String = CFUUIDCreateString(NULL,theUUID);
    CFRelease(theUUID);
    return (__bridge NSString *)String;
}

在这里,我生成了@L_801_1@独特的设备字符串,并使用钥匙串存储相同的应用程序和应用程序在很大程度上取决于唯一的字符串/设备标识符,因为从iOS5到iOS7,Apple在与唯一设备标识符有关的过程中进行了大量的转换,因为方法已被弃用.

适用于Store&amp ;;的Cope代码回复

NSString *retrieveuuid = [SSKeychain passwordForservice:@"com.name.appname" account:@"AppName"];
if (retrieveuuid == nil) {
    NSString *uuid  = [self createNewUUID];

    //Store the password in Keychain
    NSError *error = nil;
    [SSKeychain setpassword:uuid forservice:@"com.name.appname" account:@"AppName" error:&error];

    if ([error code] == SSKeychainErrorNotFound) {
        NSLog(@"ID not found");
    }
}

因此,当应用程序从Apple更新时,钥匙串将无法保留其值/标识符,或者我在某些时候错过了.请帮助将标识符永久存储在设备中,与安装,卸载,重置和更新应用程序无关.

或者,是否有任何API,它可以在生成时为我提供相同的deviceid /唯一字符串,因此需要存储唯一字符串?

注意:App必须支持iOS 4.3及更高版本.

解决方法

你应该看看 this answer.你现在面临的问题实际上是失去了对你的捆绑种子ID(你的捆绑ID之前的10个符号的字母数字代码)绑定的钥匙串组的访问权限,这是你的团队标识符.因此,基本上,应用更新后访问钥匙串取决于您使用的分发证书,而不是像@ PF1中提到的配置文件.
为了证明我的观点,我建议你尝试以下步骤:

>在iTunes Connect中为您的应用添加新版本.>使其“准备上传”.>在会员中心向自己发放新的分发证书.>创建两个新的appstore配置文件 – @L_801_1@包含您的旧/第二个新证书.>创建两个档案,就像您通常所做的那样将应用程序提交到App Store – @L_801_1@带有旧/秒的新证书.>验证两者.具有新证书的证书将提供验证警告,即此版本将丢失对钥匙串组的访问权限.

大佬总结

以上是大佬教程为你收集整理的ios – 应用程序从iTunes更新后,Keychain不会保留数据全部内容,希望文章能够帮你解决ios – 应用程序从iTunes更新后,Keychain不会保留数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。