2022. 4. 11. 01:11ㆍTech/Mobile(Android, iOS)
- 목차
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다.
서론
이전에 [Android] Android 앱 간 데이터 공유(ContentProvider와 ContentResolver)에 관해서 글을 쓴 적이 있습니다. 그럼 iOS에서는 어떻게 앱 간 데이터 공유를 할까요? 당연히, iOS 앱들끼리도 데이터를 공유할 일이 있습니다. 이 글에서도 코딩보다는 간단한 개념을 주로 다루려 합니다.
키체인(Keychain)
키체인(Keychain) 이라는 것은 iOS 장치상에서 암호화 정보를 저장하기 위해 제공되는 Framework입니다. 일반적인 로컬 데이터는 앱이 삭제되면 같이 삭제되지만, 이 Keychain에 저장된 정보는 앱의 삭제와 상관없이 저장이 됩니다. 유지가 된다는 말이죠.
여러 정보들이 저장되는 키체인은 하나의 암호화된 컨테이너입니다. 이러한 컨테이너에 저장된 정보를 암호화하고 복호화해서 안전하게 사용할 수 있도록 Keychain services API를 제공합니다. 해당 API를 사용하는 방법에는 다양한 게 있지만 가장 간단한 것은 KeychainItemWrapper class를 이용하는 게 아닐까 합니다.
위 그림은 Keychain item 을 Keychain services API를 이용하는 방법을 도식화한 것입니다. Keychain item이란 Keychain이라는 컨테이너에 저장되는 단위를 말합니다. 즉, 하나의 컨테이너에 들어가는 요소라고 생각할 수 있겠습니다.
결국, Keychain 컨테이너에 저장된 item을 사용한다… vector나 list 사용과 같지 않나요?
KeychainItemWrapper class의 사용법의 예시는 아래와 같습니다.
// create instance
wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"
accessGroup:@"XXX.com.company.GenericKeychainSuite"];
// set data to item
[wrapper wetObject:@"data" forKey:kSecAttrAccount];
// read data from item
[wrapper objectForKey:kSecAttrAccount];
Keychain Group
iOS 앱을 만드는 사람들이라면 Apple 개발자 등록을 했을 것입니다. 개발자 등록을 하고 나면 Team ID(App ID Prefix라고도 부름)라는 걸 봤을 겁니다. Keychain Group은 이 Team ID가 같은 앱들끼리 Keychain을 공유하게 해주는 것을 말합니다. 이 Keychain Group은 Xcode에서 빌드 설정을 통해 설정할 수 있습니다. 이 때문에 Keychain Sharing은 결국 같은 개발자가 개발한 앱(Team ID가 같아야 하므로)들 사이에서만 데이터가 가능하다는 것을 뜻합니다. 물론 외부 사람이 같은 인증서를 쓴다면… 그러진 말아야겠죠.
리소스 출처
[그림 1] : 이동건의 이유 있는 블로그, https://baked-corn.tistory.com/69
'Tech > Mobile(Android, iOS)' 카테고리의 다른 글
[Mobile]Deeplink (0) | 2022.04.11 |
---|---|
[iOS]iOS 의존성(Dependency ), cocoapods (코코아팟) (0) | 2022.04.11 |
[Android]가비지 컬렉터(Garbage collector) (0) | 2022.04.11 |
[Android]Android 앱 간 데이터 공유(ContentProvider와 ContentResolver) (0) | 2022.04.11 |
[Android]JVM, JRE, JDK (0) | 2022.04.10 |