JEP's Diary

Xcode iCloud의 Key-value storage 여러앱에서 사용하기 본문

Development/iOS

Xcode iCloud의 Key-value storage 여러앱에서 사용하기

지으니88 2024. 5. 10. 12:55

iCloud Storage 종류

각각 다른 목적을 가진 iCloud Storage 종류는 다음과 같다.

 

  • Key-value storage 

Key-value storage는 기본 설정, 설정, 간단한 앱 상태와 같은 개별 값을 위한 것이다. 주식이나 날씨 정보, 위치, 북마크, 최근 문서 목록, 설정 및 기본 설정, 간단한 게임 상태 등 소량의 데이터에 iCloud Key-value storage를 사용한다.

 

  • Cloud document storage 

iCloud document storage 는 사용자가 볼 수 있는 파일 기반 콘텐츠, 핵심 데이터 저장소 또는 기타 복잡한 파일 기반 콘텐츠를 위한 것. 워드 프로세싱 문서, 다이어그램, 그림, 복잡한 게임 상태를 추적해야 하는 게임 등 파일 기반 콘텐츠로 작업하는 앱에 iCloud document storage 공간을 사용한다.

 

  • CloudKit storage

CloudKit storage 모든  사용자가 액세스할  있는 개인 또는 공용 데이터베이스에 데이터를 개별 기록으로 저장하기 위한 . Key-value storage  iCloud document storage 요구사항에 비해 부족한 상황에서는 CloudKit 사용한다.

 

여러 앱에서 Key-value storage 공유하는 방법

예를 들어 무료버전앱과 유료버전앱의 데이터를 공유하는 등 여러 앱에서 key-value storage를 공유하고 싶을때 사용하는 방법이 있다. 

 

[A앱과 B앱 사이에 key-value storage 공유 가정]

  • 1. A앱(또는 B앱)을 기본 앱으로 지정하면 A앱의 iCloud 컨테이너가 공통 컨테이너가 된다.
  • 2. A앱, B앱 모두 iCloud Capability를 추가한다.
  • 3. A앱, B앱 모두 key-value storage를 활성화한다. 이때 Xcode는 자동으로 앱의 번들 ID를 기반으로 NSUbiquitousKeyValueStore(ubiquity-kvstore-identifier)의 id값을 할당한다.
    따라서 그냥 두면 A앱, B앱에서 NSUbiquitousKeyValueStore의 id가 다르기 때문에 공유가 되지 않으니 수동으로 맞춰줘야 한다.
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
  • 4. 기본앱인 A앱은 그냥 두고 B앱의 NSUbiquitousKeyValueStore의 id를 수동으로 변경해준다.
    Finder에서 ProjectName > {ProjectName}.entitlements 파일을 텍스트 파일로 열어 com.apple.developer.ubiquity-kvstore-identifier 값을 A앱과 같게 변경해준다.

 

이렇게 설정하면 A앱에서 key-value storage 저장한 데이터를 B앱에서 읽어오기가 가능하다.

 

참고

 https://developer.apple.com/library/archive/documentation/General/Conceptual/iCloudDesignGuide/Chapters/iCloudFundametals.html#//apple_ref/doc/uid/TP40012094-CH6-SW26

'Development > iOS' 카테고리의 다른 글

Xcode Device "000의 iPhone" isn't registered in your developer account.  (2) 2024.01.26
Cocoapods Private Pods  (0) 2023.07.27
Concurrency(1)  (0) 2023.04.18
WalletConnect (1)  (0) 2023.04.14
WalletConnect(2)  (0) 2023.04.14