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

카카오톡 채널

Android

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

시작하기 전에

모듈 설정

카카오톡 채널 API는 카카오톡 모듈의 TalkApiClient가 제공합니다. 모듈 설정을 참고하여 build.gradle.kts(Module) 파일에 v2-talk 모듈을 사용하도록 설정합니다.

카카오 로그인이 필요한 API인 카카오톡 채널 관계 확인하기 API를 사용할 경우, build.gradle.kts(Module) 파일에 카카오 로그인 모듈인 v2-user도 사용하도록 설정해야 합니다.

카카오톡 채널 추가 구현 방식 선택

카카오톡 채널 추가 방식은 카카오톡 채널 간편 추가하기카카오톡 채널 추가하기 두 가지입니다. 서비스 페이지 내에서 바로 채널 추가를 요청할 수 있고, 별도의 확인 절차 없이 응답으로 결과를 확인할 수 있는 카카오톡 채널 간편 추가하기 사용을 권장합니다.

카카오톡 채널 추가를 참고해 어떤 방식을 사용할지 결정합니다.

커스텀 URL 스킴 설정

카카오톡 채널 간편 추가하기를 사용하려면 AndroidManifest.xml에 액티비티(Activity) 설정을 해야 합니다. 해당 기능의 내부 동작에 사용되는 액티비티 리다이렉션(Redirection)을 지원하기 위한 설정입니다. 아래 예제를 참고합니다.

<activity 
  android:name="com.kakao.sdk.talk.FollowChannelHandlerActivity"
  android:exported="true">
  <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      
      <!-- Redirect URI: "kakao${NATIVE_APP_KEY}://channel" -->
      <data android:host="channel" android:scheme="kakao${NATIVE_APP_KEY}" />
    </intent-filter>
</activity>

카카오톡 채널 간편 추가하기

기본 정보
권한 사전 설정 카카오 로그인 사용자 동의 레퍼런스
- 플랫폼 등록
카카오 로그인 활성화
동의항목
비즈니스 채널 연결
- - 공통
FollowChannelResult
Android SDK
followChannel()
ReactiveX Android SDK
followChannel()
주의

이 기능을 사용하려면 커스텀 URL 스킴 설정을 완료해야 합니다.

참고: 카카오 로그인 사용 권장

카카오톡 채널 간편 추가하기는 카카오 로그인을 도입하지 않아도 사용할 수 있습니다. 하지만, 사용자에게 불필요한 로그인 요청을 최소화해 더 나은 사용성을 제공할 수 있도록 카카오 로그인 도입 서비스에서 사용을 권장합니다.


사용자에게 지정된 카카오톡 채널의 친구 추가를 요청합니다. 서비스 내에서 요청 화면을 표시하고 응답으로 결과를 전달받을 수 있습니다.

TalkApiClientfollowChannel()로 요청합니다. 카카오톡 채널 프로필 ID를 전달해야 합니다. 서비스의 카카오 로그인 사용 여부에 따른 채널 추가 요청 처리 방법은 카카오 로그인 사용 서비스카카오 로그인 미사용 서비스를 참고합니다.

Kotlin
RxKotlin
// 카카오톡 채널 간편 추가하기
TalkApiClient.instance.followChannel(context, "${CHANNEL_PUBLIC_ID}") { result, error ->
    if (result != null) {
        // 채널 간편 추가 성공 처리
    } else {
        // 채널 간편 추가 실패 처리
    }
}
val disposables = CompositeDisposable()

// 카카오톡 채널 간편 추가하기
TalkApiClient.rx.followChannel(context, "${CHANNEL_PUBLIC_ID}")
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({ result ->
        // 채널 간편 추가 성공 처리
    }, { error ->
        // 채널 간편 추가 실패 처리
    })
    .addTo(disposables)

요청 성공 시 응답으로 받는 FollowChannelResult 객체는 카카오톡 채널 프로필 ID와 요청 결과를 포함합니다. 요청 실패 또는 문제 발생 시 문제 해결에서 원인을 확인합니다.

카카오톡 채널 추가하기

기본 정보
권한 사전 설정 카카오 로그인 사용자 동의 레퍼런스
- 플랫폼 등록 - - addChannel()
addChannelUrl()

사용자가 카카오톡 채널을 친구 추가하러 이동합니다. TalkApiClientaddChannel()로 요청합니다. 카카오톡 채널의 프로필 ID를 전달해야 합니다.

Kotlin
RxKotlin
// 카카오톡 채널 추가하기
TalkApiClient.instance.addChannel(context, "${CHANNEL_PUBLIC_ID}") { error ->
    if (error != null) {
        Log.i(TAG, "카카오톡 채널 추가 실패 $error")
    }
}
var disposables = CompositeDisposable()

// 카카오톡 채널 추가하기
TalkApiClient.rx.addChannel(context, "${CHANNEL_PUBLIC_ID}")
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({
        Log.i(TAG, "성공")
    }, { error ->
        Log.e(TAG, "실패", error)
    })
    .addTo(disposables)

카카오톡 채널 추가 여부는 이 API 호출 결과로 알 수 없습니다. 카카오톡 채널 관계 확인하기 API로 사용자와 카카오톡 채널의 관계를 조회해야 추가 또는 삭제 상태를 알 수 있습니다.

카카오톡 채널 간편 추가하기를 사용하면 서비스 페이지 내에서 바로 채널 추가를 요청하고 별도의 확인 절차 없이 응답으로 결과를 확인할 수 있습니다.

연결 페이지

ReactiveX Android SDK는 지원하지 않는 기능입니다.

카카오톡 채널로 즉시 이동하지 않고, 필요한 시점에 연결 페이지를 거쳐 이동하도록 할 수 있습니다. addChannelUrl()로 연결 페이지 URL을 요청합니다. 카카오톡 채널의 프로필 ID를 전달해야 합니다. 연결 페이지 URL은 KakaoCustomTabsClientopenWithDefault() API를 사용해 실행할 수 있습니다.

// 카카오톡 채널 추가하기 URL
val url = TalkApiClient.instance.addChannelUrl("${CHANNEL_PUBLIC_ID}")

// CustomTabs 로 열기
KakaoCustomTabsClient.openWithDefault(context, url)

카카오톡 채널 채팅하기

기본 정보
권한 사전 설정 카카오 로그인 사용자 동의 레퍼런스
- 플랫폼 등록 - - chatChannel()
chatChannelUrl()

사용자가 서비스의 카카오톡 채널과 1:1 채팅을 시작합니다. TalkApiClientchatChannel() API로 요청합니다. 카카오톡 채널의 프로필 ID를 전달해야 합니다.

Kotlin
RxKotlin
// 카카오톡 채널 채팅하기
TalkApiClient.instance.chatChannel(context, "${CHANNEL_PUBLIC_ID}") { error ->
    if (error != null) {
        Log.i(TAG, "카카오톡 채널 채팅하기 실패 $error")
    }
}
var disposables = CompositeDisposable()

TalkApiClient.rx.chatChannel(context, "${CHANNEL_PUBLIC_ID}")
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({
        Log.i(TAG, "성공")
    }, { error ->
        Log.e(TAG, "실패", error)
    })
    .addTo(disposables)

연결 페이지

ReactiveX Android SDK는 지원하지 않는 기능입니다.

카카오톡 채널로 즉시 이동하지 않고, 필요한 시점에 연결 페이지를 거쳐 이동하도록 할 수 있습니다. chatChannelUrl()로 연결 페이지 URL을 요청합니다. 카카오톡 채널의 프로필 ID를 전달해야 합니다. 연결 페이지 URL은 KakaoCustomTabsClientopenWithDefault() API를 사용해 실행할 수 있습니다.

// 카카오톡 채널 채팅 URL
val url = TalkApiClient.instance.chatChannelUrl("${CHANNEL_PUBLIC_ID}")

// CustomTabs 로 열기
KakaoCustomTabsClient.openWithDefault(context, url)
참고: 안내 메시지

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

카카오톡 채널 관계 확인하기

기본 정보
권한 사전 설정 카카오 로그인 사용자 동의 레퍼런스
- 플랫폼 등록
카카오 로그인 활성화
동의항목
카카오톡 채널 연결
필요 필요:
카카오톡 채널 추가 상태 및 내역
공통
Channel
Android SDK
channels()
ReactiveX Android SDK
channels()

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

Kotlin
RxKotlin
// 카카오톡 채널 관계 확인하기
TalkApiClient.instance.channels { relations, error ->
    if (error != null) {
        Log.e(TAG, "채널 관계 확인 실패", error)
    }
    else if (relations != null) {
        Log.i(TAG, "채널 관계 확인 성공 \n${relations.channels}")
    }
}
var disposables = CompositeDisposable()

// 카카오톡 채널 관계 확인하기
TalkApiClient.rx.channels()
    .retryWhen(
        // InsufficientScope 에러에 대해 추가 동의 후 재요청
        RxAuthOperations.instance.incrementalAuthorizationRequired(context)
    )
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({ relations ->
        Log.i(TAG, "채널 관계 확인 성공 \n${relations.channels}")
    }, { error ->
        Log.e(TAG, "채널 관계 확인 실패", error)
    })
    .addTo(disposables)

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

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

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

사용자가 서비스와 연결된 카카오톡 채널을 추가 또는 차단했을 때 알림을 받으려면 카카오톡 채널 관계 알림을 사용합니다.

더 보기