안드로이드 카카오 링크 오류 문의입니다

implementation “com.kakao.sdk:v2-link:2.4.2” 사용중이고 targetSdkVersion 29 입니다.

Fatal Exception: java.lang.UnsupportedOperationException
at com.kakao.sdk.common.util.KakaoCustomTabsClient.openWithDefault(KakaoCustomTabsClient.kt:39)가 발생하는데 왜 발생하는지 궁금합니다.

다른 기기에서는 에러난 적이 없으나 android 9에서 한번 발생했습니다.

안녕하세요~

구현하신 코드 첨부 가능하실까요?

val url = TalkApiClient.instance.channelChatUrl(getString(R.string.kakao_channel_id))
KakaoCustomTabsClient.openWithDefault(this, url)

입니다!

해당 기능은 디바이스에 기본 브라우저로 설정된 인터넷 브라우저를 통해 카카오 링크를 사용하는데요,

이슈가 발생한 디바이스에 인터넷 브라우저 (ex: Chrome, Samsung 브라우저, Naver, Daum …)가 설치되어 있지 않아서 발생한 것으로 추측됩니다.

인터넷 브라우저를 설치 후 기본 브라우저로 설정하거나, 기본 내장된 Chrome 브라우저 사용 안함 상태를 사용함으로 변경해주시면 정상 작동할 것 같습니다.

1개의 좋아요

감사합니다:grinning:

1개의 좋아요

이부분 저도 일어나는데 파이어베이스 크래시 리포트로 유저걸로 집계됩니다

사용자에게

인터넷 브라우저를 설치 후 기본 브라우저로 설정하거나, 기본 내장된 Chrome 브라우저 사용 안함 상태를 사용함으로 변경해주시면 정상 작동할 것 같습니다.

이렇게 안내할수 없는 부분인데 별도로 처리 필요하지않을까요?

안녕하세요!

KakaoCustomTabsClient.openWithDefault() 는 디바이스 내 설치된 크롬 브라우저를 통해 매개변수로 전달받은 uri에 접근하도록 구현된 메소드입니다.

따라서 크롬 브라우저가 없는 경우 UnsupportedOperationException 를 throw 하도록 구현되어있습니다.
KakaoDevelopers 상의 가이드에는 해당 내용에 대한 언급이 없어서 V2 SDK를 사용하는 분들에게 혼동을 드린 것 같습니다.

말씀주신 내용 반영해서 샘플 코드 업데이트하겠습니다.

감사합니다.

1개의 좋아요
val url = TalkApiClient.instance.channelChatUrl(getString(R.string.kakao_channel_id))
// 1. 크롬 브라우저로 실행하는 경우
try {
    KakaoCustomTabsClient.openWithDefault(context, url)
} catch (e: UnsupportedOperationException) {
    Toast.makeText(context, "크롬 브라우저가 없습니다", Toast.LENGTH_SHORT).show()
}
// 2 .디바이스에 설치된 인터넷 브라우저로 실행하는 경우
try {
    KakaoCustomTabsClient.openWithDefault(context, url)
} catch (e: ActivityNotFoundException) {
    Toast.makeText(context, "디바이스에 설치된 인터넷 브라우저가 없습니다", Toast.LENGTH_SHORT).show()
}

참고하시라고 간단한 예제 코드 공유드립니다.
1, 2 중에 원하는 방식으로 구현하시면 됩니다.

감사합니다.