[iOS] Dropbox API 개발-환경설정

Dropbox는 친절히도 API 를 공개하여 개발자들이 사용할 수 있도록 한다. (http://www.dropbox.com/developers)

이번 포스팅에서는 Dropbox 개발자 사이트 등록부터 Dropbox에서 제공하는 예제 프로젝트 구동을 위한 환경설정 방법까지 다뤄보고자 한다. (본인의 개발환경은 다음과 같다. iOS 4.3, Xcode 3.2.6).

환경설정을 예제 프로젝트 대상으로 하는 이유는 실제 개발 프로젝트의 환경설정 방법과 거의 유사하기 때문이다.

우선 Dropbox 개발자 사이트에 접속을 하여 사용자 등록을  하자. 개발자 사이트 화면은 위 그림과 같다.  (Dropbox 계정이 있어도 개발자 Sign up 은 새로 했던 것으로 기억한다.)

Dropbox API 를 사용하기 위해서는 개발자가 Dropbox를 활용하여 개발할 앱을 등록해야 한다. 등록과정에서 생성되는 App Key, App Secret, Access Type 은 개발자의 코드 내에 기입되어 Dropbox API 사용 인증에 이용된다.

아래 그림과 같이 좌측의 링크를 이용하여 My apps로 이동한다. (중앙의 리스트들은 본인이 등록한 앱 리스트이다. 최초 설정이 제대로 되지 않아 여러 앱을 생성하였었다. 특별히 개수를 제한하고 있지 않는 듯 하다.)

Create an app을 클릭하면 아래와 같은 화면이 나타난다.

App 이름의 경우, 기존에 다른 개발자가 등록된 앱 이름과 중복되면 경고 문구가 나타난다. 또한 등록하는 앱 이름은 개발자가 실제로 마켓에 등록할 앱이름과 일치해야 한다고 한다. (Your app name should be the same as your product name or the name you use to market your app.)

실제로 환경설정을 완료하고 개발 프로젝트를 실행시키면(접속 권한을 App folder 로 한 경우),  App key와 매핑된 앱 이름으로 폴더가 생성된다. (Dropbox폴더 -> 앱 -> 등록한 앱 이름의 폴더).  브랜딩 가이드에 보면 Naming 등에 관한 권고사항이 기술되어 있으니 확인해보자. (Dropbox 와 비슷한 이름 및 앞글자에 Drop을 사용하지 말 것을 권고)

Access Level 은 접속 권한을 본인이 등록한 특정 앱 폴더로 한정할 것이냐 (App folder 선택), 아니면 전체 Dropbox 폴더 접근 권한을 갖느냐(Full Dropbox 선택) 를 선택하는 것으로서 각자 자신의 앱 목적에 맞게 선택하면 된다. 본인은 App folder 를 선택하였다.

이제 SDK 를 설치할 차례다. 아래 그림처럼 좌측 Setup 링크를 이용하여 Setup 페이지로 이동한 후, 우측 콤보박스에서 자신의 개발언어(iOS)를 선택한다. (좌측 링크 항목인 Setup 부터 File ans folders 까지 순차적으로 설명이 잘 나와있으니 참고하라)

문서 내용에 따르면 iOS 경우, 현재 (2012/6/27) iOS 4.2 이상, Xcode 3.2 이상의 개발환경으로 제한하고 있다. 본인의 개발환경이 여기에 부합한다고 하면 Development Kits 링크를 통하여 자신의 언어에 맞는 SDK 를 다운로드 한다. 다운로드 파일의 압축을 해제하고 폴더를 열어보면 다음과 같다.

example 폴더에는 DBRoulette이라는 예제 프로젝트가 들어있다. 이 예제프로젝트를 정상적으로 동작시키기 위해 환경설정 하는 것이 이번 포스팅의 목적이다.

예제 프로젝트를 다루기 앞서, 예제 프로젝트가 아닌 개발자 프로젝트에 추가해야 하는 Framework 에 대해 확인해보자. Dropbox API 사용을 위해 추가해야 할 Framework 은 3가지로, DropboxSDK.framework, Security.framework, QuartzCore.framework 이다.

Security.framework 과 QuartzCore.framework 은 Dropbox SDK 가 아닌 iOS SDK 에 포함되어 있는 Framework 으로 Group&Files 패널 -> Frameworks 에서 우측 마우스 클릭 -> Add -> Existing Frameworks… 를 통해서 선택 가능하다.

DropboxSDK.framwork 는 Group&Files 패널 -> Frameworks 에서 우측 마우스 클릭 -> Add -> Existing Files.. 를 통해 선택가능한데, 다운로드한 SDK 의 DropboxSDK.framework 폴더를 타겟으로 지정 하면 된다. “Copy items into destination group’s folder ” 팝업에 체크하도록 하자.

위 과정처럼 Framework 만 추가하여 빌드를 하면 에러가 발생한다. 기본적으로 Application delegate 실행 파일에 App Key, App Secret, Access Type 이 기입되는 코드가 들어가야 정상적으로 빌드가 된다.  이 부분은  Dropbox 개발자 페이지의 Authentication 링크를 참조하면 쉽게 해결할 수 있다. 예제 프로젝트 환경설정을 해보면 쉽게 수행할 수 있을 것이다.

자, 다시 예제 프로젝트인 DBRoulette 에 초점을 맞추자. Xcode 를 통해 예제 프로젝트를 열어라. 우리가 수정해야 할 곳은 총 4군데이다.

먼저 DBRouletteAppDelegate.m 파일이다. application:didFinishLaunchingWithOptions: 메소드에 App Key, App Secrete, Access Type 을 정의해줘야 한다. 만약 이 블로그 순서대로 진행하여 MyApp 을 사전 등록했다면, Setup 페이지에 본인이 등록한 App 의 Access Type, App Key, App Secret 생성키들이 보일 것이다. 그것을 적어주면 된다.

위 그림과 같이 “app_key 자리” 에 – 본인이 텍스트를 수정하였다. 텍스트가 다르더라도 당황하지 말고 위치에 주목하자 – 자신이 등록한 App 의 App key 를 복사해서 넣자. 그럼 아마 이런 코드가 될 것이다.

NSString *appKey = @”afdbasdf3r32tya”;  // 아무렇게나 정한 key  이므로 사용하면 안됨.

App Secret 도 동일한 방법으로 복사하여  app_secret 자리로 붙여넣으면 된다.

Access Type 은 root 필드와 매칭이 되는데 Access Type 이 App folder 이면 kDBRootAppFolder 을 기입하고, Full Dropbox 이면  kDBRootDropbox 를 기입하면 된다. (extern NSString 으로 정의된 항목이라 Xcode 자동완성으로 쉽게 선택할 수 있을 것이다.)

이제 마지막 한군데만 수정하면 된다. 아래그림과 같이 DBRoulette-Info.plist file을 소스코드 보기로 열자

다음과 같이 xml 형시의 문서가 열린다. 이 곳에 App Key 를 기입해주면 된다.

CFBundleURLSchemes 아래 위치한  db-app_key자리에 App Key 를 입력하면 된다. 이 때 주의할 것은 “db-“는 지우지 말아야 한다는 것이다. 올바르게 App key 가 등록된 형태는 다음과 같다. <string>db-afdbasdf3r32tya</string>

빌드를 하고 정상적으로 동작하면 다음과 같은 화면이 나타난다. (iOS Simulator)

정상적으로 실행이 안되면 Console 창을 이용하여 에러 메시지를 확인하라. 예제 프로젝트에는 에러메시지들이 콘솔에 남도록 프로그래밍이 되어 있다.

서두에도 언급했듯이 예제 프로그램 환경설정은 개발자의 프로젝트 환경설정과 거의 동일하다. 또한 예제프로젝트의 코드를 검토하면 Dropbox API 활용 앱을 개발하는데 큰 도움을 받을 수 있다.

Advertisements
Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: