Я использовал SSKeychain библиотеку с открытым исходным кодом для безопасного хранения данных в приложении iOS. Вчера я столкнулся с проблемой, SSKeychain не смог сохранить свои данные, когда я обновлял свое приложение с версии 1.0 до версии 2.0 из iTunes.Keychain не сохраняет данные после того, как приложение получает обновление от iTunes
Код для UUID поколения:
- (NSString *)createNewUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
Здесь, я создал уникальную строку устройства и использовать keychain
хранить то же самое, и приложение сильно зависит от уникального идентификатора строки/устройства, так как от iOS5 к iOS7 существует множество преобразований, сделанных Apple в отношении Unique Device Identifier
, поскольку методы стали устаревшими.
Справиться сниппет для магазина & Retrive:
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, который может предоставить мне ту же самую идентификатор устройства/уникальную строку при ее создании, поэтому вам нужно сохранить уникальную строку?
Примечание: Приложение должно поддерживать iOS 4.3 и выше.
Концептуально брелка элементы сохранялись после обновления приложения, так что это, вероятно, будет ошибка в использовании SSKeychain. Он просто исчезает один раз после обновления, или пароль не будет сохраняться каждый раз после обновления? Где в коде вы выполняете Store & Retrieve? – WDUK
Почему вы проверяете код ошибки «NotFound» при настройке пароля? Он должен вернуть BOOL для успеха или нет. Я также не могу найти документацию для 'SSKeychainErrorNotFound', это расширение, которое вы (или кто-то еще) сделали? – WDUK
Что я должен проверить, это файл с правами. Удостоверьтесь, что групп ключей-ключей имеет такое же значение как в файле прав старой версии App Store, так и в новом. – almas