iOS 개발에 익숙합니다. 초보자 용 질문 인 경우 용서해주세요. 사용자의 이메일 주소와 비밀번호를 사용하는 앱의 간단한 인증 메커니즘이 있습니다. 또한 '기억하기'라는 스위치가 있습니다. 사용자가 해당 스위치를 토글하면 이메일/비밀번호를 유지하여 나중에 해당 필드가 자동으로 채워지도록 할 수 있습니다.iOS의 키 체인에 이메일/비밀번호 저장하기
나는 이것을 plist 파일에 저장하는 방법을 알고 있지만 암호가 암호화되지 않았기 때문에 이것이 최선의 방법은 아니라는 것을 알고 있습니다. 키 체인에 저장하기위한 샘플 코드를 찾았지만, 솔직히 말해서 나는 조금 잃어 버렸습니다. 아래 함수에 대해서는 어떻게 호출 할 지 모르며 이메일 주소도 저장하도록 수정하는 방법을 설명합니다.
가 나는 것입니다 전화 같은데요 : saveString(@"passwordgoeshere");
어떤 도움 주셔서 감사합니다!
+ (void)saveString:(NSString *)inputString forKey:(NSString *)account {
NSAssert(account != nil, @"Invalid account");
NSAssert(inputString != nil, @"Invalid string");
NSMutableDictionary *query = [NSMutableDictionary dictionary];
[query setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
[query setObject:account forKey:(id)kSecAttrAccount];
[query setObject:(id)kSecAttrAccessibleWhenUnlocked forKey:(id)kSecAttrAccessible];
OSStatus error = SecItemCopyMatching((CFDictionaryRef)query, NULL);
if (error == errSecSuccess) {
// do update
NSDictionary *attributesToUpdate = [NSDictionary dictionaryWithObject:[inputString dataUsingEncoding:NSUTF8StringEncoding]
forKey:(id)kSecValueData];
error = SecItemUpdate((CFDictionaryRef)query, (CFDictionaryRef)attributesToUpdate);
NSAssert1(error == errSecSuccess, @"SecItemUpdate failed: %d", error);
} else if (error == errSecItemNotFound) {
// do add
[query setObject:[inputString dataUsingEncoding:NSUTF8StringEncoding] forKey:(id)kSecValueData];
error = SecItemAdd((CFDictionaryRef)query, NULL);
NSAssert1(error == errSecSuccess, @"SecItemAdd failed: %d", error);
} else {
NSAssert1(NO, @"SecItemCopyMatching failed: %d", error);
}
}
KeychainUserPass.m (나는이 대답에 연결하고 두 파일에 사용자를 언급,하지만 당신은 더 속성을 원하는 경우 알려 주시기 바랍니다). 또한 포맷팅을 약간 변경하여 메소드 이름을 좀 더 일반적인 것으로 변경했습니다. https://github.com/jeremangnr/JNKeychain – jere