iOS/Swift + Objective-c

[Swift] 카카오링크 API 구현하기 (카카오톡 메시지 보내기)

안경 쓴 귀니 2021. 12. 13. 23:02
반응형

iOS Kakao SDK를 사용해 Swift에서 카카오링크 API를 구현하는 방법입니다.

 

 

기능 설명

 

카카오링크 API는 카카오톡 친구에게 카카오톡 메시지를 보내는 기능입니다.

 

카카오링크 API를 사용해서 카카오톡 친구나 채팅방에 메시지를 공유하는 방법은 크게 두 가지가 있습니다.

  • 카카오링크 API
  • 카카오톡 메시지 API

 

두 API 차이점은 간략하게

카카오링크 API는 카카오톡에서 알아서 해주기 때문에 비교적 간단하며,

카카오톡 메시지 API는 친구 목록 가져오기 등 직접 구현해야 하는 불편함들이 있습니다.

 

 

이 글은 카카오링크 API를 사용해서 공유하는 방법을 설명합니다.

 

 

샘플 프로젝트

 

모두 구현된 샘플 프로젝트는 아래 깃헙 링크에서 확인해주세요.

https://github.com/eunsuu1015/KakaoSharedSample

 

GitHub - eunsuu1015/KakaoSharedSample: 카카오 링크 API (메시지 보내기)

카카오 링크 API (메시지 보내기). Contribute to eunsuu1015/KakaoSharedSample development by creating an account on GitHub.

github.com

 

최소 지원 버전

 

- iOS 카카오톡 최소 버전 : 5.9.8

- Android 카카오톡 최소 버전 : 6.0.0

 

 

사전 준비 사항

 

카카오디펠로퍼스(Kakao Developers) 애플리케이션 등록 및 iOS 플랫폼이 등록되어 있어야 합니다.

https://developers.kakao.com/

 

 

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

구현 방법

 

카카오링크 API를 사용해 메시지 보내는 과정을 간략히 정리하면 아래와 같습니다.

  1. 메시지 템플릿을 참고하여 보낼 메시지 내용 구성하기
  2. 구성한 메시지를 전달 인자로 카카오링크 API 호출하여 메시지 전송을 요청하기

출처) kakao developers

 

 

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

 

 

반응형