카카오톡 공유 API 사용법을 포스팅해보려고 한다.
카카오톡에서는 대화방에 템플릿 형식으로 데이터를 공유하는 API를 제공한다.
템플릿 종류는 유형에 따라 여러가지가 있으며
이번 포스팅에선 간단하게 기본 템플릿을 이용하는 방식으로 포스팅 해보고자 한다.
템플릿 종류에 따라 템플릿을 구현하는 방법의 차이만 있으며
그 후에 동작은 모두 동일하다.
먼저 카카오 개발자에 앱을 등록해주고 키를 발급받아야 한다.
카카오 개발자 페이지에서 상단에 '내 애플리케이션' 항목으로 이동하자
이동하였다면 '애플리케이션 추가하기' 항목을 클릭하면
아래와 같은 페이지가 팝업될텐데
자신의 앱을 등록해주자
그러면 이제 등록한 앱이 리스트에 추가 되는데
등록한 앱을 클릭하여 이동한 뒤
좌측에 목록에서 '플랫폼'을 클릭하여 이동하자
그러면 각 플랫폼에 대한 정보를 작성할 수 있는데
Android만 작성을 해보자
패키지명은 본인의 앱 패키지명을 작성해주면 되고
마켓 URL은 없다면 '없음'으로 체크하고 넘어가도 된다.
키 해시를 등록해야 API가 작동을 하는데
키 해시를 보는 방법은 아레와 같다.
OpenSSL이라는 라이브러리를 통해 터미널에서 키 해시 확인이 가능하다.
리눅스/유닉스 계열에는 기본 설치가 되어있는 것 같고
윈도우의 경우는 따로 설치를 해주어야한다.
터미널을 실행하여 아래의 명령어를 실행해주면 된다.
- 디버그 키
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64- 릴리즈 키
keytool -exportcert -alias [생성한 키스토어 alias] -keystore [생성한 키스토어 경로] -storepass android -keypass android | openssl sha1 -binary | openssl base64
키스토어 파일 생성 방법은 필자가 이전에 작성한 포스팅을 참고하면 좋겠다.
우선 repo를 설정해주어야 한다.
settings.gradle
로 이동해서 아래와 같이 url을 추가해주자
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/'} // 추가
}
}
그 다음엔 app 수준의 build.gradle
로 이동하여 의존성을 추가해주자
implementation 'com.kakao.sdk:v2-share:2.17.0' // 메시지(카카오톡 공유)
먼저 Kakao SDK를 초기화해주어야 한다.
Kakao SDK를 초기화할 Application 클래스를 새로 만들어주자
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
// Kakao SDK 초기화
KakaoSdk.init(this, "11f80c4dde9524748bd20333a89fe5c8")
}
}
<application
android:name=".MyApplication"
android:allowBackup="true" >
.. 중략 ..
</application>
SDK 호출 전, Activity 내의
onCreate()
에서 초기화해줘도 무방하지만
카카오 가이드에선Application
클래스를 기준으로 가이드하고 있다.
공유기능을 사용하려는 곳에 아래 코드를 삽입해주자
// 카카오톡 템플릿에서 보여줄 내용
val defaultTemplate = TextTemplate(
text = "카카오톡 공유..",
link = Link()
)
// 카카오톡 공유 가능 상태 (카카오톡이 설치 되어있는 경우)
if(ShareClient.instance.isKakaoTalkSharingAvailable(this)) {
ShareClient.instance.shareDefault(this, defaultTemplate) { result, error ->
// result: 카카오톡으로 공유가 성공할 경우 반환
// error: 카카오톡으로 공유가 실패할 경우 반환
// 단, 공유가 성공하여도 error가 같이 반환돠는 경우도 있음
error?.let {
Toast.makeText(this, "Error while kakao share", Toast.LENGTH_SHORT).show()
}
result?.let {
startActivity(result.intent)
}
}
}
else {
val shareUrl = WebSharerClient.instance.makeDefaultUrl(defaultTemplate)
try {
KakaoCustomTabsClient.openWithDefault(this, shareUrl)
} catch (e: UnsupportedOperationException) {
/* no-op */
}
}
공유가 성공했다면 아래 캡처와 같이 대화방에 성공적으로 템플릿이 출력되는 것을 확인해볼 수 있다.