class KakaoLink {
var TAG = “linku”;
fun formatMessage(name: String): String = "Hello, $name"
fun sendMessage(context: Context, act: Activity, payload: String ) {
Log.d(TAG, "payload ${payload}")
val jsonObject = JSONObject(payload)
val imageUrl = jsonObject.getString("imageUrl")
val title = jsonObject.getString("title")
val description = jsonObject.getString("description")
val defaultFeed = FeedTemplate(
content = Content(
title = title,
description = description,
imageUrl = imageUrl,
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
buttons = listOf(
Button(
"프로필 보기",
Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
Button(
"링크유에 저장",
Link(
androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"),
iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2")
)
)
)
)
// 카카오톡 설치여부 확인
if (LinkClient.instance.isKakaoLinkAvailable(context)) {
// 카카오톡으로 카카오링크 공유 가능
LinkClient.instance.defaultTemplate(context, defaultFeed) { linkResult, error ->
if (error != null) {
Log.e(TAG, "카카오링크 보내기 실패", error)
}
else if (linkResult != null) {
Log.d(TAG, "카카오링크 보내기 성공 ${linkResult.intent}")
act.startActivity(linkResult.intent)
// 카카오링크 보내기에 성공했지만 아래 경고 메시지가 존재할 경우 일부 컨텐츠가 정상 동작하지 않을 수 있습니다.
Log.w(TAG, "Warning Msg: ${linkResult.warningMsg}")
Log.w(TAG, "Argument Msg: ${linkResult.argumentMsg}")
}
}
} else {
// 카카오톡 미설치: 웹 공유 사용 권장
// 웹 공유 예시 코드
val sharerUrl = WebSharerClient.instance.defaultTemplateUri(defaultFeed)
// CustomTabs으로 웹 브라우저 열기
// 1. CustomTabs으로 Chrome 브라우저 열기
try {
KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
} catch(e: UnsupportedOperationException) {
// Chrome 브라우저가 없을 때 예외처리
}
// 2. CustomTabs으로 디바이스 기본 브라우저 열기
try {
KakaoCustomTabsClient.open(context, sharerUrl)
} catch (e: ActivityNotFoundException) {
// 인터넷 브라우저가 없을 때 예외처리
}
}
}
}
코드는 위와 같습니다.
프로필 보기 버튼을 클릭하면 androidMenifest.xml 에 설정한 항목이 호출되어 해당 activity가 시작합니다.