시작하기

카카오 플랫폼 서비스는 카카오톡, 카카오스토리와 같은 카카오 서비스 및 카카오 플랫폼 기술과 관련된 API를 제공합니다. 해당 기능을 쉽게, 올바르게 사용하기 위해서는 카카오에서 제공하는 Kakao SDK가 필요합니다.

본 문서는 카카오 플랫폼 서비스를 사용하기 위한 기본 개발환경 구성 및 Kakao SDK 사용법 뿐만 아니라, 카카오 플랫폼 서비스가 제공하는 각각의 기능별 상세 설명을 포함합니다.

앞으로 제공될 상세기능에 대한 설명을 참고하거나 해당 기능을 실행해 보기전에, 반드시 아래의 기본 과정을 숙지하기를 권장합니다.

본 문서에서 제공되는 상세기능은 다음과 같습니다.

  • 사용자 관리
    카카오계정을 통한 간편 로그인을 제공합니다. 이외에도 사용자들의 개별 정보를 손쉽게 관리해주는 기능을 포함합니다. 카카오 플랫폼 서비스에서 제공하는 기능 중 로그인이 필요한 기능을 사용하기 위해서는 반드시 선행되어야 할 내용들을 다룹니다.
  • 카카오링크
    카카오톡 앱을 이용하여 다양한 메시지를 보낼 수 있습니다.
  • 카카오톡
    카카오톡에서 제공하는 API를 앱에서 직접 사용할 수 있습니다.
  • 카카오내비
    카카오내비 앱을 이용하여 목적지 공유를 하거나 길안내를 받을 수 있습니다.
  • 카카오스토리
    카카오스토리에서 제공하는 API를 앱에서 직접 사용할 수 있습니다.
  • 푸시 알림
    푸시 알림을 사용하기 위한 기본적인 과정에 대해 설명합니다.
  • 앱로그 분석
    앱의 시작/종료, 사용자의 세션, 특정 이벤트 등 앱의 활동성 등을 분석할 수 있는 기능입니다.

해당 문서는 다음의 환경을 기준으로 작성되었습니다.

  • OS X Mountain Lion / Mavericks
  • XCode 5.0.2

개발환경 구성

iOS용 앱의 개발을 위해서는 개발툴인 Xcode를 설치해야 합니다. Xcode의 설치 및 기본 가이드는 여기를 참고해 주세요.

올바른 테스트 및 샘플 실행을 위해서는 iOS 기기에 최신의 카카오톡 앱이 설치되어 있어야 합니다. 포함된 샘플은 카카오톡 3.9.5 버젼 이상이 요구됩니다.

Kakao SDK 설치

카카오 플랫폼 서비스에서 제공하는 기능을 사용하기 위해서는 카카오에서 제공하는 Kakao SDK가 필요합니다.

Kakao SDK는 ARMv7, ARMv7s, ARM64를 지원하며 iOS 8.0 버전 이상이 필요합니다. 자세한 사양은 iOS Support Matrix를 참고 하세요.

다운로드

iOS용 최신 Kakao SDK를 직접 다운로드 하시려면 최신 SDK 다운로드를 클릭해 주세요.

그외 제공되는 Kakao SDK의 자세한 정보는 SDK 다운로드에서 확인하실 수 있습니다.

압축풀기

위에서 다운로드한 파일의 압축을 풉니다.

unzip kakao-ios-sdk-x.x.x.zip

압축을 풀면 KakaoOpenSDK.framework 와 샘플(samples) 폴더를 볼 수 있습니다.

sdk-ios-framework-unzip

개발프로젝트 설정

Kakao SDK를 개발툴에 설정하는 방법을 설명합니다.

프로젝트 생성

Kakao SDK 를 참조하는 새로운 프로젝트를 생성합니다.

File > New > New Project 메뉴를 통해 새로운 프로젝트를 생성합니다.

new_project

기존 프로젝트에 Kakao SDK를 추가하고자 하는 경우에는 위 과정을 생략합니다.

Kakao SDK import

다운로드 받은 KakaoOpenSDK.framework 폴더를 새로 생성한 Project의 Frameworks Group 에 drag & drop 합니다.

drag_sdk

drag_sdk

아래는 KakaoOpenSDK.framework 가 project 에 포함된 후의 모습입니다. Frameworks 에 KakaoOpenSDK.framework 가 추가되어 있습니다.

drag_sdk

Link Binary With Libraries에 SDK framework 가 올바르게 추가되어 있는지 확인합니다. link_binary_with_binaries_confirm

관련파일을 추가한 이후에 현재 작업중인 프로젝트에서 Other Linker Flags에 "-all_load" 를 추가합니다.

other_linker_flags

만약 해당 옵션 추가시 빌드가 실패한다면 문제해결 부분을 살펴봅니다.

이로서 기본적인 프로젝트 설정은 완료되었습니다. 아래는 이 프로젝트에서 사용할 애플리케이션을 생성하고 사용하는 방법을 설명합니다.

앱 생성

내 애플리케이션 > 앱 만들기를 통해 앱을 생성합니다.

  • 앱 이름과 앱 아이콘을 지정합니다. dev_0017.png
  • 앱 만들기를 클릭하면 앱 생성이 완료되고 앱 키가 할당됩니다. iOS SDK를 사용할 때에는 네이티브 앱 키를 사용합니다. 설정을 클릭하여 설정을 이어 갑니다. dev_018.png
  • 플랫폼 추가 > iOS 선택후 번들ID를 입력합니다. 여기서 입력한 번들ID는 XCode Project의 Bundle Identifier 값과 일치하여야 합니다.

프로젝트에 내 앱 설정

카카오계정을 통해 인증을 받고 자신의 앱 실행을 위해서 아래 사진과 같이 URL Types 항목을 추가해야 합니다. URL Schemes에는 KAKAO_APP_KEY 앞에 "kakao" 문자열을 붙여서 등록합니다. url_types

카카오 개발자 웹사이트에 등록된 해당 앱의 네이티브 앱 키를 프로젝트 plist 파일에 등록을 합니다. "KAKAO_APP_KEY"라는 이름으로 Key를 추가하고, Type은 String, Value는 해당 앱의 네이티브 앱 키 값으로 등록합니다. App Key & App Redirect URI 등록

프로젝트에 내 앱 설정(iOS9 지원)

iOS9에서는 다양한 기능이 추가되면서 동작 및 설정의 변화가 생겼습니다. iOS9에서 올바로 Kakao SDK를 사용하기 위해서는 다음과 같은 두가지 설정을 앱의 plist(또는 프로젝트의 Info 설정)에 반드시 해 주어야 합니다.

Kakao SDK가 사용하는 카카오 앱들의 커스텀 스킴 스위칭을 허용하는 화이트리스트 추가

두번째, LSApplicationQueriesSchemes의 키로 Array 값 kakao{your_app_key} 및 카카오 앱들의 커스텀 스킴들을 등록합니다. 다음은 예시 입니다.

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>kakao0123456789abcdefghijklmn</string>
    <string>kakaokompassauth</string>
    <string>storykompassauth</string>
    <string>kakaolink</string>
    <string>kakaotalk-4.5.0</string>
    <string>kakaostory-2.9.0</string>
    <string>storylink</string>
</array>

보다 자세한 설명은 Privacy and Your App을 참고합니다.

보안 네트워크 통신을 원활히 하기 위해 Kakao 도메인의 화이트리스트 추가

첫번째, NSAppTransportSecurity의 키로 Dictionary 값 NSExceptionDomains을 등록하여 하위에 kakao.com을 설정합니다. 자세한 것은 아래의 예시를 참고합니다.

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>kakaocorp.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
        <key>kakao.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>kakao.co.kr</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>kakaocdn.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>daumcdn.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

보다 자세한 설명은 App Transport Security Technote를 참고합니다.

그 밖의 설정

iOS 앱에서 Kakao SDK의 API를 호출하기 위해서는 기본적으로 KakaoOpenSDK.h 파일을 import 합니다.

#import <KakaoOpenSDK/KakaoOpenSDK.h>

iOS 앱에서 Kakao SDK의 API를 호출하기 전에 현재 작성중인 앱의 번들 ID를 카카오 개발자 웹사이트(대쉬보드의 설정 > 앱 정보 > iOS)에 등록하여야 합니다. 앱의 번들 ID는 XCode 의 프로젝트정보에서 설정 가능합니다. bundle_id

카카오 개발자 웹사이트에 등록한 번들 ID와 실행하려는 앱에 설정된 번들 ID가 다를 경우에는 다음과 같은 에러가 출력되면서 인증이 되지 않습니다.

invalid android_key_hash or ios_bundle_id

샘플앱 실행

Kakao SDK 에는 아래와 같은 샘플이 포함되어 있습니다.

  • KakaoSample: 사용자 관리에 대한 샘플앱입니다.
  • KakaoLinkSample: 카카오링크에 대한 샘플앱입니다.
  • KakaoNaviSample: 카카오내비에 대한 샘플앱입니다.
  • AgeAuthSample: 카카오 연령인증에 대한 샘플앱입니다.

UserMgmtSample 앱을 간단히 실행해 보도록 합니다.

실행

설치한 UserMgmtSample 앱을 ios simulator로 실행한 화면은 아래와 같습니다. sample_app_run.png

'카카오계정으로 로그인' 버튼을 클릭하면 카카오계정로그인 화면으로 이동합니다. 아래 왼쪽은 카카오톡이 설치되어 있지 않은 경우의 모습입니다. 로그인 후에는 아래 오른쪽 화면처럼 샘플앱을 기동시키기 위해 사용자 동의를 거칩니다.

kakao_account_login_browser.png sample_app_approval.png

'동의'하면 샘플앱이 다시 기동됩니다. 아래 왼쪽은 그 첫 화면입니다. me 버튼을 누르면 signup 을 하라고 합니다. UserMgmtSample 은 자동가입 설정이 되어 있지 않기 때문에 먼저 signup 을 통해 카카오와 샘플앱간의 연결을 필요로 합니다.

sample_app_first.png sample_app_me_not_signup.png

Signup 버튼을 눌러서 연결하고 me 버튼을 다시 누르면 아래 우측화면처럼 '내 정보'를 불러옵니다. ( 텍스트 박스에 값을 입력한 채로 signup 을 하면 signup 과 동시에 입력값들을 사용자 정보로서 저장하게 됩니다. )

sample_app_me_not_signup.png sample_app_me.png

update 는 화면상의 입력값들로 사용자 정보를 갱신합니다. unlink 는 샘플앱과 카카오계정과의 연결을 끊습니다. 연결이 끊어지면 기존 사용자 정보는 모두 사라지고 샘플앱을 사용하기 위해서는 카카오계정 동의 절차를 다시 거쳐야 합니다.


문제해결

시작하기를 진행하면서 어려움이 있거나, 샘플앱 등이 잘 실행되지 않는다면 아래의 경우를 참고해 보세요. 또한 DevTalk_(카카오 개발자 포럼) for iOS를 참고하세요.

  • 로그인 시도시 '+[NSBundle ko_appKey]: unrecognized selector sent to class 0x111111'의 에러가 발생하면서 앱이 크래쉬 되는 문제

    현재 작업중인 프로젝트에서 Other Linker Flags에 "-all_load"가 추가되었는지 확인해 봅니다. 자세한 내용은 Kakao SDK import를 참고합니다.

  • Other Linker Flags에 "-all_load"를 추가하였을 경우, 타 라이브러리와의 충돌로 빌드가 실패하는 경우

    "-all_load"대신에 "-force_load $(SRCROOT)/KakaoOpenSDK.framework/KakaoOpenSDK"를 사용하여 Kakao SDK를 강제 로드합니다. <!--

  • dyld: Symbol not found: OBJC_CLASS$_NSJSONSerialization

    Kakao SDK는 iOS 5.1.1 버젼 이상이 필요합니다. 해당 os의 버젼 확인이 필요합니다. -->

  • 웹뷰 등 취소 후 다시 로그인 시도시 "The operation is cancelled."가 반복적으로 나오는 현상

    openWithCompletionHandler 호출 전에 [[KOSession sharedSession] close]를 해주는 로직이 빠지지 않았는지 확인합니다. 로그인 예제를 통해 구현을 다시 한번 확인합니다.


더 알아보기

앱 개발을 위한 기본 환경 설정이 모두 끝났습니다. 이제 카카오 플랫폼 서비스에서 제공하는 여러 기능들을 활용하여 앱을 개발해 보세요.


Last Modified : 2017-07-28