Developer/iOS

[iOS]Keychain 이용해서 데이터(UUID) 저장하기 - WrapperClass제공

블로blow 2016. 5. 2. 16:02
728x90

KeyChain 이란?

KeyChain은 iOS의 다양한 응용 프로그램에서 비밀번호나 계정등을 저장하는 암호화 되어있는 저장소입니다.

안전한 앱을 만들기 위해서 보안이 필요한 요소들을 분리하고 암호화 하는 노력이 필요합니다.

여기에서는 안전하게 데이터를 저장하기 위한 장소인 Keychain에 대해서 설명하고 어떻게 사용하는지 알아보겠습니다.


KeychainItemWrapper 클래스 사용하기

Keychain의 API들은 Security.framework에 정의되어 있는데 C함수로 정의되어 있습니다. 이들을 사용하기 위해 애플에서 제공해주는 KeychainItemWrapper를 사용하는 경우가 많습니다. (https://developer.apple.com/library/ios/samplecode/GenericKeychain/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007797-Intro-DontLinkElementID_2)

하지만 arc가 적용되어 있지 않기 때문에 arc가 적용된 버젼을 첨부파일에 첨부하겠습니다.


 KeychainItemWrapper.h



KeyChain을 사용하는 방법

알아볼 예제에서는 UDID를 불러와서 저장하는 방법을 해보겠습니다.


KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"UUID" accessGroup:nil];


NSString *uuid = [wrapper objectForKey:(__bridge id)(kSecAttrAccount)];


if( uuid == nil || uuid.length == 0)

{

    // if there is not UUID in keychain, make UUID and save it.

    uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

    // save UUID in keychain

    [wrapper setObject:uuid forKey:(__bridge id)(kSecAttrAccount)];

}


NSLog(@"UUID = %@", uuid);


정리

앱에서 저장해야할 중요한 정보를 저장하는게 좋을것 같습니다. 간단한 정보는 UserDefaults에 저장하면 간단하겠지만, 아이디라던가 지워지면 안되는 정보들을 저장할 용도로 쓰는 것이 좋을 것 같습니다.

728x90