페이지 이동경로
  • 문서>
  • 카카오톡 채널>
  • iOS

카카오톡 채널

iOS

이 문서는 Kakao SDK for iOS(이하 iOS SDK)를 사용한 카카오톡 채널 기능 구현 방법을 안내합니다.

애플리케이션 설정 확인

이 기능을 사용하려면 카카오디벨로퍼스(Kakao Developers, 이하 개발자 웹사이트) 애플리케이션(이하 앱) 설정에 iOS 플랫폼 및 번들 ID 등 정보가 등록되어 있어야 합니다. 자세한 내용은 애플리케이션 등록을 참고합니다.

이 문서에 사용된 태그

Tag Description
로그인 필수 카카오 로그인이 필요한 API를 의미합니다. 카카오 로그인을 먼저 구현하고, 카카오 로그인을 통해 발급 받은 액세스 토큰(Access Token)을 이용하여 해당 API를 호출해야 합니다.

시작하기 전에

카카오톡 채널 기능은 카카오톡 모듈인 KakaoSDKTalkRxKakaoSDKTalk가 제공합니다.

카카오톡 채널 API를 사용하려면 카카오톡 모듈을 설치해야 합니다. 모듈 설치 방법은 설치하기를 참고합니다.

카카오 로그인이 필요한 API인 카카오톡 채널 관계 확인하기 API를 사용할 경우, 카카오 로그인 모듈도 사용하도록 설정해야 합니다.

모듈 설치 후 카카오톡 채널 기능을 사용하려면 다음과 같이 import합니다.

Swift
RxSwift
import KakaoSDKTalk

//카카오톡 채널 관계 확인하기 API를 사용할 경우
import KakaoSDKUser
import RxKakaoSDKTalk
import KakaoSDKTalk

//카카오톡 채널 관계 확인하기 API를 사용할 경우
import RxKakaoSDKUser
import KakaoSDKUser

카카오톡 채널 추가하기

카카오톡 채널 추가하기 기능은 사용자가 카카오톡 채널을 친구로 추가하는 연결 페이지 URL을 제공합니다. TalkApimakeUrlForAddChannel() API로 요청하며, 연결 페이지 URL은 safariViewController를 통해 present() 메소드로 실행할 수 있습니다.

이 기능은 사용자에게 카카오톡 채널을 강제로 추가시키지 않습니다. 기능 동작 시 plusFriendId 값으로 지정된 카카오톡 채널로 이동할 수 있는 연결 페이지(Bridge page)를 띄울 뿐이며, 연결 페이지에서 사용자가 카카오톡 채널을 추가할지 직접 선택할 수 있습니다.

Parameter
Name Type Description Required
channelPublicId String 카카오톡 채널 프로필 ID
채널 URL에서 http://pf.kakao.com/ 부분을 제외한 뒷자리 값
예) 채널 URL이 http://pf.kakao.com/_WxdPrT인 경우, 카카오톡 채널의 프로필 ID는 _WxdPrT
O
//in ViewController
var safariViewController : SFSafariViewController? // to keep instance
...

self.safariViewController = SFSafariViewController(url: TalkApi.shared.makeUrlForAddChannel(channelPublicId:"{channel-id}")!)

guard (self.safariViewController != nil) else { return }

self.safariViewController?.modalTransitionStyle = .crossDissolve
self.safariViewController?.modalPresentationStyle = .overCurrentContext
self.present(self.safariViewController!, animated: true) {
    print("카카오톡 채널 추가 연결 페이지 실행 성공")
}

사용자가 연결 페이지에서 카카오톡 채널 추가를 선택하면 커스텀 URL 스킴을 통해 카카오톡을 실행하고, 지정된 카카오톡 채널의 추가 화면을 출력합니다.

사용자가 카카오톡 채널을 추가했는지 여부는 이 API로 알 수 없으나, 카카오톡 채널 관계 확인하기 기능으로 특정 사용자의 카카오톡 채널 추가 상태를 확인하거나 카카오톡 채널 관계 알림 받기 기능을 통해 카카오톡 채널 친구 추가 및 삭제 사실을 알림 받을 수 있습니다.

카카오톡 채널 채팅

카카오톡 채널 채팅 기능은 지정된 카카오톡 채널과 사용자의 채팅방으로 진입할 수 있는 연결 페이지 URL을 제공합니다. TalkApimakeUrlForChannelChat() API로 요청하며, 연결 페이지 URL은 safariViewController를 통해 present() 메소드로 실행할 수 있습니다.

Parameter
Name Type Description Required
channelPublicId String 카카오톡 채널 프로필 ID
채널 URL에서 http://pf.kakao.com/ 부분을 제외한 뒷자리 값
예) 채널 URL이 http://pf.kakao.com/_WxdPrT인 경우, 카카오톡 채널의 프로필 ID는 _WxdPrT
O
//in ViewController
var safariViewController : SFSafariViewController? // to keep instance
...

self.safariViewController = SFSafariViewController(url: TalkApi.shared.makeUrlForChannelChat(channelPublicId:"{channel-id}")!)

guard (self.safariViewController != nil) else { return }

self.safariViewController?.modalTransitionStyle = .crossDissolve
self.safariViewController?.modalPresentationStyle = .overCurrentContext
self.present(self.safariViewController!, animated: true) {
    print("Kakao Talk Channel chat 연결 페이지 실행 성공")
}

사용자가 연결 페이지에서 카카오톡 채널과 채팅하기를 선택하면, 연결 페이지는 커스텀 URL 스킴(Custom URL Scheme)을 통해 카카오톡을 실행하고, 지정된 카카오톡 채널과의 채팅창을 엽니다.

연결 페이지가 실행되었을 때, 해당 카카오톡 채널은 사용자에게 "안녕하세요, 무엇을 도와드릴까요?"라는 문구와 함께 사용자가 채팅을 요청했던 웹 페이지의 URL을 담은 메시지를 전송합니다.

카카오톡 채널 관계 확인하기 로그인 필수

동의 항목 설정 필요

이 API를 사용하려면 동의 항목 설정을 참고하여 '카카오톡 채널 추가 상태 및 내역' 동의 항목을 설정해야 합니다.

카카오톡 채널 관계 확인하기 API를 사용하려면 카카오 로그인, 카카오톡 모듈을 모두 설치해야 합니다. 설치하기를 참고하여 KakaoSDKUserKakaoSDKTalk 모듈을 사용하도록 설정합니다.

Swift
RxSwift
import KakaoSDKUser
import KakaoSDKTalk
import KakaoSDKUser
import RxKakaoSDKUser

import KakaoSDKTalk
import RxKakaoSDKTalk

TalkApi의 카카오톡 채널 관계 확인하기 API인 channels()를 호출합니다.

Swift
RxSwift
TalkApi.shared.channels { (channels, error) in
    if let error = error {
        print(error)
    }
    else {
        print("channels() success.")        
        //do something
        _ = channels
    }
}
// Class member property
let disposeBag = DisposeBag()

TalkApi.shared.rx.channels()
    .retry(when: Auth.shared.rx.incrementalAuthorizationRequired())
    .subscribe (onSuccess:{ (channels) in
        print("channels() success.")        
        //do something
        _ = channels
    }, onFailure: {error in
        print(error)
    })
    .disposed(by: disposeBag)

요청 성공 시 응답으로 받는 Channels 객체는 사용자와 각 카카오톡 채널의 관계 정보를 담은 Channel 객체의 배열(Array)을 포함합니다. Channel은 카카오톡 채널의 uuid, 사용자의 해당 카카오톡 채널 추가 상태, 마지막 변경 일시 정보를 포함합니다.

사용자가 '카카오톡 채널 추가 상태 및 내역' 동의 항목에 동의하지 않아 에러 응답을 받았을 경우, 추가 항목 동의 받기 기능을 사용해 사용자에게 다시 동의를 요청할 수 있습니다.

자세한 응답 정보는 REST API의 응답 및 레퍼런스를 참고합니다.

사용자가 서비스와 연결된 카카오톡 채널을 추가 또는 차단했을 때 알림을 받으려면, '카카오톡 채널 관계 알림 받기' 기능을 사용합니다. 자세한 구현 방법 및 콜백 요청 정보는 유용한 참고 정보 > 고급 > 카카오톡 채널 알림을 참고합니다.

Legacy

카카오톡 채널의 Legacy Kakao SDK for iOS(이하 Legacy iOS SDK) 개발 가이드는 다음 링크에서 확인할 수 있습니다. 추후 Legacy iOS SDK에 대한 지원이 중단될 수 있으므로, 가급적 빠른 시일 내에 최신 버전 iOS SDK로 변경할 것을 권장합니다.

더보기