iOS Kakao SDK를 사용해 Swift에서 카카오링크 API를 구현하는 방법입니다.
기능 설명
카카오링크 API는 카카오톡 친구에게 카카오톡 메시지를 보내는 기능입니다.
카카오링크 API를 사용해서 카카오톡 친구나 채팅방에 메시지를 공유하는 방법은 크게 두 가지가 있습니다.
- 카카오링크 API
- 카카오톡 메시지 API
두 API 차이점은 간략하게
카카오링크 API는 카카오톡에서 알아서 해주기 때문에 비교적 간단하며,
카카오톡 메시지 API는 친구 목록 가져오기 등 직접 구현해야 하는 불편함들이 있습니다.
이 글은 카카오링크 API를 사용해서 공유하는 방법을 설명합니다.
샘플 프로젝트
모두 구현된 샘플 프로젝트는 아래 깃헙 링크에서 확인해주세요.
https://github.com/eunsuu1015/KakaoSharedSample
최소 지원 버전
- iOS 카카오톡 최소 버전 : 5.9.8
- Android 카카오톡 최소 버전 : 6.0.0
사전 준비 사항
카카오디펠로퍼스(Kakao Developers) 애플리케이션 등록 및 iOS 플랫폼이 등록되어 있어야 합니다.
구현 방법
카카오링크 API를 사용해 메시지 보내는 과정을 간략히 정리하면 아래와 같습니다.
- 메시지 템플릿을 참고하여 보낼 메시지 내용 구성하기
- 구성한 메시지를 전달 인자로 카카오링크 API 호출하여 메시지 전송을 요청하기
1. 라이브러리 추가
cocoapods에 아래 내용 추가
# 전체 추가
pod 'KakaoSDK'
# or
# 필요한 모듈 추가
pod 'KakaoSDKCommon' # 필수 요소를 담은 공통 모듈
pod 'KakaoSDKLink' # 메시지(카카오링크)
pod 'KakaoSDKTemplate' # 메시지 템플릿
2. 설정
A. Info.plist - LSApplicationQueriesSchemes 설정
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 카카오링크 -->
<string>kakaolink</string>
</array>
B. URL Scheme 설정
URL Scheme은 카카오 메시지로 공유한 후에, 공유한 메시지에 있는 버튼을 눌렀을 때 앱을 실행하기 위해 사용됩니다.
프로젝트 > TARGETS > Info > URL Types > URL Schemes 항목에 네이티브 앱 키(Native App Key)를 'kakao{NATIVE_APP_KEY}' 형식으로 추가합니다.
ex) NATIVE_APP_KEY가 123456789라면 'kakao123456789'를 입력합니다.
3. API 사용
A. 초기화
// AppDelegate.swift
import KakaoSDKCommon
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
KakaoSDK.initSDK(appKey: "{NATIVE_APP_KEY}")
// ex) KakaoSDK.initSDK(appKey: "123456789")
return true
}
B. SceneDelegate(AppDelegate) 설정
공유한 카카오 메시지에서 버튼을 클릭할 경우, 아래를 delegate를 통해 URL을 전달받습니다.
※ Deployment target이 iOS 13 이상으로 생성된 프로젝트면 UISceneDelegate 파일을 기본으로 사용하도록 설정됩니다.
그렇지 않은 경우는, SceneDelegate 파일 대신 AppDelegate 파일에 설정을 추가해주세요.
// SceneDelegate.swift
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
// kakao123456789://kakaolink
// kakao123456789://kakaolink?key1=value1&key2=value2
if let url = URLContexts.first?.url {
print("url : \(url)")
}
}
C. 메시지 만들기 및 보내기
- 사용자 정의 템플릿으로 메시지 보내기
- 기본 템플릿으로 메시지 보내기
사용자 정의 템플릿은 kakao developers에서 미리 만들어야 하며, 간단하게 사용 가능합니다.
기본 템플릿은 별도의 템플릿을 추가할 필요가 없으며, 코드 상에서 바로 설정해서 사용이 가능합니다.
본 글에서는 사용자 정의 템플릿으로 메시지 보내는 방법, 기본 템플릿(Feed, Text)으로 메시지 보내는 방법 3가지를 설명합니다.
C-1. 사용자 정의 템플릿으로 메시지 보내기
템플릿은 kakao developers > 도구 > 메시지 템플릿에서 생성합니다.
templateId는 템플릿 생성 후 받은 ID를 사용합니다.
// ViewController.swift
import KakaoSDKLink
import KakaoSDKTemplate
import KakaoSDKCommon
let templateId = 12345
LinkApi.shared.customLink(templateId: templateId) { (linkResult, error) in
if let error = error {
print(error)
}
else {
print("customLink() success.")
if let linkResult = linkResult {
// 카카오톡 오픈
UIApplication.shared.open(linkResult.url, options: [:], completionHandler: nil)
}
}
}
참고사항) 템플릿에 설정된 내용
- 카카오톡 공유된 메시지
공유된 카카오 메시지에서 "앱에서 확인하기" 버튼 누를 시, 앱 설치 여부에 따라 아래와 같이 호출합니다.
- 앱이 설치되지 않은 경우 : iOS Market 호출
- 앱이 설치된 경우 : iOS Scheme 호출
앱에 설치된 경우는 SceneDelegate openURLContexts에서 아래처럼 iOS Scheme이 호출됩니다.
kakao123456789://kakaolink?key2=value2
- 카카오톡 공유된 메시지
공유된 카카오 메시지에서 "웹에서 보기" 버튼 누를 시, 앱에 실행되며 SceneDelegate openURLContexts에서 아래 url를 전달받습니다.
kakao123456789://kakaolink
공유된 카카오 메시지에서 "앱에서 보기" 버튼 누를 시, 앱에 실행되며 SceneDelegate openURLContexts에서 아래 url를 전달받습니다.
kakao123456789://kakaolink?key3=value3&key4=value4
참고 URL
- Kakao Developers
https://developers.kakao.com/ - 카카오 메시지
https://developers.kakao.com/docs/latest/ko/message/common - 카카오링크: iOS
https://developers.kakao.com/docs/latest/ko/message/ios-link
'iOS > Swift + Objective-c' 카테고리의 다른 글
[iOS] Safe Area Top, Bottom 높이 조회 (status bar height) (2) | 2022.01.10 |
---|---|
[iOS] 인증 토큰 방식 푸시 알림(APNs) 및 키 생성 방법 (p8 파일) (0) | 2021.12.16 |
[iOS] Auto Layout Constraints 코드로 쉽게 변경하기 (NSLayoutConstraint) (2) | 2021.11.30 |
[Objective-c] char* -> NSString, NSString -> char* 변환 방법 (2) | 2021.11.29 |
[Objective-c] 카카오 로그인 연동 (카카오톡, Kakao Login) (3) | 2021.11.25 |