xCode iCloud iOS/MAC App에 적용하기 Part1


iOS/아이폰 프로그래밍 2012.07.06 17:53



 iCloud Storage API를 사용하면, 굉장히 많은 앱들의 데이터를 여러 기기에서 공유가 가능합니다. 
WWDC를 통해 iCloud Storage관련 비디오들도 나와있습니다. 국내 뿐만 아니라 해외에도 많은 자료가 없어서 구현하는데 많은 애를 먹었습니다. 외국 자료를 바탕으로 구현관련 포스팅을 올립니다. 

 iCloud Storage를 사용하면 많은 데이터를 여러기기에서 공유가 가능하다고 했는데, 이는 꽤나 유용한 기능 중 하나입니다. Cloud의 의미처럼 사용자가 어떤 Logic이나 어떤 알고리즘을 통해 공유되는 지 정확히 모르더라도 iCloud에 로그인을 하고, '백업'기능을 켜놓는다면, 아이패드에서 게임을 하다가 아이폰에서 게임을 켜면 자연스럽게 했던 지점부터 세이브가 되어 할 수가 있고, 아이폰에서 팟캐스트를 듣다가 집에가서 아이패드에서 팟캐스트를 켜면 아이폰으로 듣던 부분부터 들을 수가 있습니다. 뿐 아니라 MAC App 에서도 iCloud API를 통해 접근이 가능합니다. 


 자 그럼 지금부터 iCloud와 적용방법에 대해 파헤쳐보도록 하겠습니다. (포스팅의 길이가 길어지면 Part를 나눠서 올리도록 하겠습니다.)


1. iCloud ? 


Apple 의 iCloud 은 iOS5부터 적용이 됩니다. 무료로 5GB를 지원하며 좀 더 자세한 정보는 http://www.apple.com/kr/icloud/what-is.html 를 방문하시면 됩니다. 




 위와 같이 iCloud 내에는 두가지 종류가 존재합니다. 비교적 작은 파일(Key)들을 저장하는 Key Value Data Storage와 Document Storage가 있습니다. 파일을 연동할 것이기 때문에 Document Storage를 사용하도록 하겠습니다. 
 좀더 자세히 Document storage와 Keyvalue Storage의 구분에 대해 알아보시려는 분은 아래의 표를 참고해주세요. 




2. XCode - iCloud - App 


XCode를 통해 App과 iCloud를 연동하기 위해서는 먼저 '개발자 계정'이 필요합니다. 

개발자 계정과 iCloud를 테스트 해볼 수 있는 기기를 준비하면 됩니다. (Simulator는 지원하지 않습니다) 

- 개발자 계정에 접속합니다. 
https://developer.apple.com/devcenter/ios




적용할 앱에 Configure을 클릭 - Enable for iCloud를 체크하고 적용합니다.




적용 후에는 꼭 Provisioning 탭에서 Profile을 다시 만들어줍니다. 
▶애플 개발자 Center에서도 프로비져닝 프로필을 다시 생성, XCode - Organizer에서도 Refresh 를 하든, 다시 다운을 받아서 넣어주어야 합니다. 이 부분에서 제대로 되지 않으면 앱이 빌드는 성공하지만, 실제로 실행은 되지 않습니다. (Permission Denied오류 및 인증서와 Entitlement가 맞지 않다는 오류를 내게 됩니다. 혹시나 iCloud적용 하시다가 Entitlement오류가 난다면 대부분 이 문제이므로 꼭 확인을 하고 진행을 합니다


- 먼저, Project - Target - (iOS Target Click) - Info 로 들어가봅니다. 



위와 같은 부분을 찾으셨다면, Enable Entitlement(Red Color)를 Check 해줍니다. Entitlment를 체크하면 Sandbox와 iCloud를 적용할 수 있습니다. (체크를 한다면 프로젝트명으로 자동적으로 생깁니다. 따로 Entitlement파일을 수정하지 않는 것이 좋습니다. 괜시리 건드렸다가 꽤나 애를 먹어서...) entitlement는 일종의 자격증정도로 생각하시면 되겠습니다. 자동으로 생긴 Entitlement파일을 그대로 놔두시고 아래쪽에 보이는 'iCloud key-Value store'를 체크합니다. 이 부분이 iCloud를 적용하겠다고 명시를 하고 앱이 사용할 iCloud의 Keyvalue를 넣어주는 곳입니다. 

 iCloud Key-Value(Yellow)에는 Apple의 Developer 문서의 설명과 같이 <TeamID>. <BundleIdentifier>을 넣어주어야 합니다. 
쉽게 풀어서 이야길 하면 [Xcode] - [Window] - [Organizer]의 Provisioning Profiles를 들어가시면 App Identifier이란 부분에 A2FE21... 등등 각 프로비져닝의 팀ID를 확인합니다.  (10자리의 고유숫자) 이를 확인 후 프로젝트 윗부분에 있는 Bundle Identifier 를 확인합니다. 




 빨간 부분에 해당하는 Bundle Identifier까지 확인했다면, 앞서 확인했던 팀 ID와 BundleIdentifier을 합칩니다. 
  EX) M35DFEI98S.com.shakej.icloudtest
확인한 TeamID(Organizer의 AppIdentifier). BundleIdentifier(iOS Target에 있는) 
와 같이 합쳐 준 후 위의 위 그림처럼 노란부분 (3부분) iCloud key-Value Store, iCloud Containers, keychain Access Gropus 세부분에 모두 적어줍니다. 



위와 같이 적용을 모두 했다면, Part2에서 Appdelegate에서 Access가 되는 지 확인을 한 후, Data Storage에 파일을 올리거나 받는 부분 구현에 대해서 알아보도록 하겠습니다. 
MAC App은 아직 적용중이라 추후 Part3에서 다루도록 하겠습니다.

저작자 표시 비영리 변경 금지
신고

WRITTEN BY
ShakeJ

0 ,