Kakao SDK 2 Beta (Rx)

Beta 서비스 중에는 기능의 변경이 발생하거나 일시적으로 서비스 접근이 불가할 수 있습니다. 변경내역

Reactive-X Kakao SDK for iOS는 Swift 기반으로 Reactive-X 라이브러리를 사용해 재사용성 향상, 비동기 처리 과정 개선과 함께 보다 간결한 인터페이스를 구현한 새로운 버전입니다. Swift 최신 특징(feature)과 Reactive-X를 통한 SDK log 구독(subscription) 활용이 가능하며, 토큰 저장 및 관리를 위한 기능인 토큰저장소(TokenManager)가 업데이트될 예정입니다.

설치

cocoapod 으로 설치
요구사항
  1. Xcode 10.0 이상을 설치합니다.
  2. CocoaPods 설치합니다.
  3. Xcode에서 타겟 프로젝트를 생성하거나 엽니다. 프로젝트에서 iOS 11 이상을 타겟팅해야 합니다.
  4. Swift 프로젝트에서 Swift 4.2 이상을 사용해야 합니다.
Kakao App 설정
Xcode 설정

Podfile에 RxKakaoSDK(전체추가) 하거나 Module 개별 추가합니다.

# 전체 추가
pod 'RxKakaoSDK', '~> 2.0.0-beta.1'

# or

# 필요한 모듈을 추가.
pod 'RxKakaoSDKUser', '~> 2.0.0-beta.1'
pod 'RxKakaoSDKTalk', '~> 2.0.0-beta.1'
pod 'RxKakaoSDKStory', '~> 2.0.0-beta.1'
pod 'RxKakaoSDKLink', '~> 2.0.0-beta.1'
pod 'KakaoSDKNavi', '~> 2.0.0-beta.1'

직접설치(SDK Dependency & RxKakaoSDK frameworks 다운로드)
필수 라이브러리
RxKakaoSDK Frameworks 다운로드 및 설치

Implementation Guide

SDK 초기화

SDK를 사용하기 위해서는 native-app-key 초기화가 필요합니다. (Kakao App 설정 참조)

import RxKakaoSDKCommon

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

  ...
  KakaoSDKCommon.shared.initSDK(appKey: "your-native-app-key")
  ...

}
OAuthToken 가져오기

먼저 사용자는 Kakao API를 호출하기 위해 액세스 토큰을 가져와야 합니다. 액세스 토큰은 OAuth 2.0 사양에 따라 발행됩니다.

  1. 카카오계정 인증
  2. 사용자 동의 (필요하지 않은 경우 건너 뛰기)
  3. 인증 코드를 가져오고 (리디렉션을 통해) 액세스 토큰을 발행합니다 (POST API를 통해)

아래에 나열한 두가지 방법이 있습니다.

브라우져로 카카오계정 로그인 (Default browser)

SDK는 디폴트 브라우저를 여는데 ASWebAuthenticationSession을 사용합니다.

import RxKakaoSDKCommon
import RxKakaoSDKAuth
...

func loginButtonClicked() {
  AuthController.shared.authorizeWithAuthenticationSession()
                        .subscribe(onNext:{ (oauthToken) in
                            print(oauthToken)
                        })
                        .disposed(by: self.disposeBag)
}

KakaoTalk 으로 로그인
import RxKakaoSDKCommon
import RxKakaoSDKAuth
...

func loginButtonClicked() {
  if (AuthController.isTalkAuthAvailable()) {
                  AuthController.shared.authorizeWithTalk()
                                .subscribe(onNext:{ (oauthToken) in
                                  print(oauthToken)
                                })
                                .disposed(by: self.disposeBag)
    }
}
Token based API 호출하기

위 단계에서 access token을 성공적으로 가져오면 token based API를 호출할 수 있습니다. 다음은 현재 KakaoSDK에서 지원되는 API 세트 입니다.

  • UserApi
  • TalkApi
  • StoryApi

UserApi에 있는 me()를 호출하는 예제 입니다.

import RxKakaoSDKCommon
import RxKakaoSDKAuth
import RxKakaoSDKUser
...

func userMe() {
    UserApi.shared.rx.me()
      .subscribe (onSuccess:{ (user) in 
                                    print(user)
                            }, onError: {error in
                                print(error)
                            })
      .disposed(by: self.disposeBag)
}
Appkey based API 호출하기
  • KakaoLink

KakaoLink API는 토큰 기반 API가 아니기 때문에 로그인 없이 SDK 초기화 이후에 사용할 수 있습니다. 아래는 커스텀 템플릿으로 KakaoLink 메시지를 전송하는 예입니다.

import RxKakaoSDKCommon
import RxKakaoSDKLink
...

func customLink() {
    LinkApi.shared.rx.customLink(templateId:637)
            .subscribe(onSuccess: { (linkResult) in
                   print(linkResult)                              
                        UIApplication.shared.open(linkResult.url, options: [:], completionHandler: nil)
                 }, onError: {error in
                print(error)
        })
        .disposed(by: self.disposeBag)
}

SDK Feature

Token 자동갱신

토큰 만료 에러시 토큰은 자동갱신됩니다.

동적동의(Dynamic User Agreement)

임의의 사용자의 동의가 필요한 경우 (가입 시 유저가 동의하지 않았거나, 앱설정에 이용중 선택으로 설정한 경우) 직접 유저에게 해당 정보 제공 동의를 받아야 합니다. 이를 동적동의라고 합니다.

import RxKakaoSDKCommon
import RxKakaoSDKAuth
import RxKakaoSDKTalk
...

func talkFriends() {
    TalkApi.shared.rx.friends()
          .retryWhen(Auth.shared.rx.dynamicAgreement()) // 동적동의를 위한 operator
          .subscribe (onSuccess:{ (friends) in
                print(friends)
          }, onError: {error in
                  print(error)
          })
          .disposed(by: self.disposeBag)
}

Customization

v2 에서 새롭게 선보이는 기능

  • TokenManager (토큰저장소 사용자화 - 업데이트 예정.)
  • sdk(release) log subscription : Reactive-x only

Documentation

SDK 문서는 Jazzy 에 의해 생성되며 결과 문서 페이지는 KakaoDevelopers 에서 제공됩니다.

변경 이력

변경날짜 변경이력 버전 다운로드
2019.12.09 베타 서비스 개시 2.0.0-beta.1 오픈 SDK 및 샘플

Last Modified : 2019-12-10