이 문서는 카카오 API 플랫폼에서 제공하는 Kakao SDK for iOS(이하 iOS SDK) 사용 방법을 안내합니다.
iOS SDK가 제공하는 모듈과 주요 기능은 아래와 같습니다.
모듈 | 클라이언트 | 설명 |
---|---|---|
KakaoSDKCommon |
- | 필수 요소를 담은 공통 모듈PrivacyInfo.xcprivacy 파일 포함주요 기능: 초기화 |
KakaoSDKAuth |
AuthApi |
카카오 로그인 인증 및 토큰 관리 모듈 주요 기능: 토큰 존재 여부 확인하기 API |
KakaoSDKUser |
UserApi |
카카오 로그인 API 모듈 주요 기능: 카카오 로그인 API, 사용자 정보 가져오기 API |
KakaoSDKShare |
ShareApi |
카카오톡 공유 API 모듈 주요 기능: 사용자 정의 템플릿으로 메시지 보내기 API |
KakaoSDKTalk |
TalkApi |
카카오톡 채널, 카카오톡 소셜, 카카오톡 메시지 API 모듈¹⁾ 주요 기능: 카카오톡 채널 간편 추가하기 API |
KakaoSDKTemplate |
- | 메시지 템플릿 모듈 |
KakaoSDKFriend |
PickerApi |
피커 API 모듈¹⁾ 주요 기능: 피커: 친구 선택하기 API |
KakaoSDKFriendCore |
- | 피커 API 동작을 위한 모듈 |
KakaoSDKNavi |
NaviApi |
카카오내비 API 모듈 |
KakaoSDKCert |
CertApi |
카카오톡 인증 서비스 API 모듈¹⁾ |
KakaoSDKCertCore |
- | 카카오톡 인증 서비스 API 동작을 위한 모듈PrivacyInfo.xcprivacy 파일 포함 |
1) 로그인 기반 API를 제공하므로 KakaoSDKUser
모듈과 함께 사용해야 함
모듈 | 클라이언트 | 설명 |
---|---|---|
RxKakaoSDKCommon |
- | 필수 요소를 담은 공통 모듈 주요 기능: 초기화 |
RxKakaoSDKAuth |
AuthApi |
카카오 로그인 인증 및 토큰 관리 모듈 주요 기능: 토큰 존재 여부 확인하기 API |
RxKakaoSDKUser |
UserApi |
카카오 로그인 API 모듈 주요 기능: 카카오 로그인 API, 사용자 정보 가져오기 API |
RxKakaoSDKShare |
ShareApi |
카카오톡 공유 API 모듈 |
RxKakaoSDKTalk |
TalkApi |
카카오톡 채널, 카카오톡 소셜, 카카오톡 메시지 API 모듈¹⁾ 주요 기능: 카카오톡 채널 간편 추가하기 API |
RxKakaoSDKFriend |
PickerApi |
피커 API 모듈¹⁾ 주요 기능: 피커: 친구 선택하기 API |
1) 로그인 기반 API를 제공하므로 RxKakaoSDKUser
모듈과 함께 사용해야 함
카카오톡 공유 모듈명이 2.11.0 버전부터 변경되었습니다. 아래 내용과 공지사항을 참고합니다. - 2.11.0 미만 버전: KakaoSDKLink, RxKakaoSDKLink - 2.11.0 이상 버전: KakaoSDKShare, RxKakaoSDKShare
Kakao SDK의 일부 모듈은 다른 모듈에 의존성이 있으며, 각 모듈은 설치 시 의존하는 모듈을 자동으로 함께 설치합니다. 모듈간 의존성 구조는 아래 이미지를 참고합니다.
iOS SDK는 다음과 같은 외부 라이브러리를 사용합니다. iOS SDK 설치 시, 해당 외부 라이브러리가 자동으로 설치됩니다.
[내 애플리케이션] > [플랫폼]에서 iOS 플랫폼 정보를 입력합니다. 이 설정은 iOS SDK를 통해 카카오 API를 사용하려면 필수입니다. 자세한 안내는 플랫폼 등록을 참고합니다.
iOS 9.0 이상에서 iOS SDK를 통해 카카오톡 애플리케이션(이하 앱)을 실행하려면 Info.plist 파일에 앱 실행 허용 목록(Allowlist)을 설정해야 합니다. 이 설정은 사용자 정보 보호를 위한 OS 정책에 따라 필요한 것으로, 자세한 내용은 Privacy and Your App을 참고합니다.
LSApplicationQueriesSchemes
를 추가위 설정은 Info.plist 파일을 직접 수정하여 적용할 수도 있습니다. 상세한 설정 값은 아래 예제를 참고합니다.
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 카카오톡으로 로그인 -->
<string>kakaokompassauth</string>
<!-- 카카오톡 공유 -->
<string>kakaolink</string>
<!-- 카카오톡 채널 -->
<string>kakaoplus</string>
</array>
Xcode 14 이상일 경우, 앱 실행 허용 목록 설정을 위한 키가 LSApplicationQueriesSchemes
에서 Queried URL Schemes
로 자동 변환될 수 있습니다. Info.plist 파일 내부에서는 기존 키를 사용하므로, 해당 파일을 직접 수정할 경우에는 기존 키를 사용합니다.
서비스 앱 실행을 위해 커스텀 URL 스킴 설정을 합니다. [Info] > [URL Types] > [URL Schemes] 항목에 네이티브 앱 키(Native App Key)를 kakao${NATIVE_APP_KEY}
형식으로 등록합니다. 예를 들어 네이티브 앱 키가 "123456789"라면 [URL Schemes]에 "kakao123456789"를 입력합니다.
이 설정은 커스텀 URL 스킴 생성 시 사용됩니다. 커스텀 URL 스킴은 카카오톡으로 로그인 후 서비스 앱으로 돌아오거나, 카카오톡 공유 메시지를 통해 서비스 앱을 실행할 때 사용되며 각각 다음과 같은 형식입니다.
kakao${NATIVE_APP_KEY}://oauth
kakao${NATIVE_APP_KEY}://kakaolink
Cocoapods 또는 Swift Package Manager(이하 SPM) 를 통해 iOS SDK를 설치할 수 있습니다.
Cocoapods 1.8 버전 이상이 필요합니다. 프로젝트의 Podfile에 Kakao SDK를 전체 또는 모듈(Module)별로 추가합니다.
# 전체 추가
pod 'KakaoSDK'
# or
# 필요한 모듈 추가
pod 'KakaoSDKCommon' # 필수 요소를 담은 공통 모듈
pod 'KakaoSDKAuth' # 사용자 인증
pod 'KakaoSDKUser' # 카카오 로그인, 사용자 관리
pod 'KakaoSDKTalk' # 친구, 메시지(카카오톡)
pod 'KakaoSDKShare' # 메시지(카카오톡 공유)
pod 'KakaoSDKFriend' # 카카오톡 소셜 피커, 리소스 번들 파일 포함
pod 'KakaoSDKTemplate' # 메시지 템플릿
pod 'KakaoSDKNavi' # 카카오내비
pod 'KakaoSDKCert' # 카카오톡 인증 서비스
# 전체 추가
pod 'RxKakaoSDK'
# or
# 필요한 모듈 추가
pod 'RxKakaoSDKCommon' # 필수 요소를 담은 공통 모듈
pod 'RxKakaoSDKAuth' # 카카오 로그인
pod 'RxKakaoSDKUser' # 사용자 관리
pod 'RxKakaoSDKTalk' # 친구, 메시지(카카오톡)
pod 'RxKakaoSDKShare' # 메시지(카카오톡 공유)
pod 'RxKakaoSDKFriend' # 카카오톡 소셜 피커, 리소스 번들 파일 포함
pod 'RxKakaoSDKTemplate' # 메시지 템플릿
pod 'RxKakaoSDKNavi' # 카카오내비
pod 'KakaoSDKCert' # 카카오톡 인증 서비스
➊ [Project Target] > ➋ [Package Dependencies] > ➌ [Packages]의 [+]를 눌러 패키지 추가 화면을 엽니다.
패키지 추가 화면 우측 상단의 ➍ 검색창에 설치할 iOS SDK의 레포지토리(Repository) URL를 입력해 검색합니다.
SDK | Repository Name | Repository URL |
---|---|---|
iOS SDK | kakao-ios-sdk |
https://github.com/kakao/kakao-ios-sdk |
ReactiveX iOS SDK | kakao-ios-sdk-rx |
https://github.com/kakao/kakao-ios-sdk-rx |
검색된 레포지토리 이름이 올바른지 확인한 후, ➎ [Dependency Rule]을 브랜치(Branch)로 선택합니다. 브랜치 이름을 master
로 입력하고 ➏ [Add Packages]를 누릅니다.
[Dependency Rule] 설정을 통해 iOS SDK의 특정 버전을 지정하여 설치할 수 있습니다. 단, SPM을 통한 설치는 2.8.5 이상 버전에서만 제공되므로, 그 이하 버전은 지정 설치가 불가능합니다.
설치할 수 있는 패키지 목록 화면이 나타납니다. ➐[Package Product] 목록에서 필요한 모듈에 체크하고 ➑[Add Packages] 버튼을 눌러 설치합니다. 한 번에 모든 모듈을 설치하려면 [KakaoSDK] 또는 [RxKakaoSDK]를 선택합니다.
설치된 iOS SDK는 아래와 같이 [Packages] 메뉴에서 확인할 수 있습니다.
iOS SDK는 타겟별로 각각 설치해야 합니다. 테스트 앱에도 iOS SDK를 설치하려면 Step 3의 모듈 선택 시 [Add to Target]을 테스트 앱으로 설정합니다.
SPM으로 KakaoSDKFriend, RxKakaoSDKFriend 모듈 설치 시, 피커에 사용되는 UI 요소 등 리소스 번들을 별도 설치해야 합니다. KakaoSDKFriendResources.bundle 파일을 [Build Phase] > [Copy Bundle Resources]에 [+] 버튼 클릭 또는 드래그앤드롭하여 추가합니다.
iOS 앱에서 iOS SDK를 사용하려면 iOS SDK 파일을 아래와 같이 임포트(import)해야 합니다. 또한 네이티브 앱 키를 사용해 iOS SDK를 초기화하는 과정이 필요합니다. AppDelegate.swift에 Kakao SDK를 초기화하는 코드를 추가합니다.
SwiftUI App Life Cycle 사용 시에는 프로젝트와 함께 생성되는 ${PROJECT_NAME}App 클래스가 AppDelegate.swift를 대신하므로, 해당 클래스 내부에 Kakao SDK 초기화 코드를 추가합니다.
import KakaoSDKCommon
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
KakaoSDK.initSDK(appKey: "${NATIVE_APP_KEY}")
...
}
import RxKakaoSDKCommon
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
RxKakaoSDK.initSDK(appKey: "${NATIVE_APP_KEY}")
...
}
import SwiftUI
import KakaoSDKCommon
import KakaoSDKAuth
...
@main
struct SwiftUI_testApp: App {
...
init() {
// Kakao SDK 초기화
KakaoSDK.initSDK(appKey: "NATIVE_APP_KEY")
}
...
}
iOS SDK 2.8.3 버전부터 SDK 초기화에 사용하는 클래스의 이름이 변경되었습니다.
- KakaoSDKCommon → KakaoSDK
- RxKakaoSDKCommon → RxKakaoSDK