카카오톡 공유하기 사용하기

울늘·2022년 7월 10일
0

카카오톡 공유하기도 kakao developer 문서에 아주 잘 나와있지만 다소 헷갈릴 요지가 있고 사용자 정의 템플릿을 사용할 경우 설정할 것이 매우 많다.
카카오톡 공유 이해하기에서 카카오톡 공유 api를 사용할 것이다.
기능 소개에 보면 카카오톡 공유 api는 사용신청 및 검수가 필요 없다는 것을 확인할 수 있다. kakao dev톡에 카카오톡 api를 사용할 때 사용신청을 해야하는 api들이 있는데 공유하기는 신청을 할 필요가 없다.

기본적으로 내 애플리케이션에서 설정할 것들을 설정해주어야 한다.
앱 만들기를 통해 내 앱을 등록하여 주고 등록해서 얻은 앱 키를 android studio에 넣어주어야 한다.
android sdk 설정과 플랫폼에서 앱의 키해시를 등록해주어야하는데 방법은 이곳에서 볼 수 있다. 키해시를 등록해주고 설정 gradle 까지 해주면 준비가 끝났다.

이제는 코드를 작성해주면 카카오톡 공유하기 기능을 사용할 수 있다.

https://developers.kakao.com/docs/latest/ko/message/android-link
이곳에서 '시작하기 전에' 페이지에서 상호작용과 커스텀 URL스킴을 넣어준다.
그다음에 '메시지 만들기' 페이지에서 자신이 사용할 템플릿을 확인하고 '기본 템플릿으로 메세지 보내기' 페이지에서 카카오톡 공유하기를 사용하기 위한 기본 세팅을 해준다.

private fun onKakaoShare(context: Context) {

        // TODO("템플릿 변경 필요")

        val defaultText = FeedTemplate(
            content = Content(
                title = getString(R.string.kakao_share_text),
                description = getString(R.string.kakao_share_description),
                imageUrl = "imageurl",
                imageWidth = 200,
                imageHeight = 200,
                link = Link(
                    webUrl = initDynamicLink().toString(),
                    mobileWebUrl = initDynamicLink().toString()
                )
            ),
            buttons = listOf(
                Button(
                    title = getString(R.string.kakao_share_button),
                    Link(
                        webUrl = initDynamicLink().toString(),
                        mobileWebUrl = initDynamicLink().toString()
                    )
                )
            )
        )


        // 카카오톡 설치여부 확인
        if (LinkClient.instance.isKakaoLinkAvailable(context)) {
            // 카카오톡으로 카카오톡 공유 가능
            LinkClient.instance.defaultTemplate(
                context, defaultText
            ) { linkResult, error ->
                if (error != null) {
                    Timber.d("카카오톡 공유 실패 ${error.message}")
                } else if (linkResult != null) {
                    Timber.d("카카오톡 공유 성공 ${linkResult.intent}")
                    startActivity(linkResult.intent)

                    // 카카오톡 공유에 성공했지만 아래 경고 메시지가 존재할 경우 일부 컨텐츠가 정상 동작하지 않을 수 있습니다.
                    Timber.d("Warning Msg: ${linkResult.warningMsg}")
                    Timber.d("Argument Msg: ${linkResult.argumentMsg}")
                }
            }
        } else {
            // 카카오톡 미설치: 웹 공유 사용 권장
            // 웹 공유 예시 코드
            val sharerUrl = WebSharerClient.instance.defaultTemplateUri(defaultText)

            // CustomTabs으로 웹 브라우저 열기

            // 1. CustomTabs으로 Chrome 브라우저 열기
            try {
                KakaoCustomTabsClient.openWithDefault(context, sharerUrl)
            } catch (e: UnsupportedOperationException) {
                // Chrome 브라우저가 없을 때 예외처리
            }

            // 2. CustomTabs으로 디바이스 기본 브라우저 열기
            try {
                KakaoCustomTabsClient.open(context, sharerUrl)
            } catch (e: ActivityNotFoundException) {
                // 인터넷 브라우저가 없을 때 예외처리
            }
        }
    }

필자의 경우에는 기본 피드 템플릿을 함수로 따로 만들어서 사용하였다.
카카오톡 공유하기를 유저가 클릭했을 경우 이동되는 uri를 필자는
firebase 공유하기 동적링크를 사용하여 넣어주었다.
사용자 정의 템플릿은 사용되는 함수가 다르니 주의하자.
이후 공유하기 버튼에 해당 함수를 호출해주면 카카오톡 공유하기 기능을 사용해 볼 수 있다!!

profile
주니어 안드로이드 개발자입니다!

0개의 댓글