iOS kakaoTalk 설치 여부

카카오톡이 설치되어 있지 않았는데, UserApi.isKakaoTalkLoginAvailable() 가 계속 true입니다. 혹시 해결 방안이 있을까요?

안녕하세요
LSApplicationQueriesSchemes 설정 하셨을까요?

Kakao Developers - 앱 실행 허용 목록 설정하기

LSApplicationQueriesSchemes kakaolink, kakaokompassauth 설정하였습니다.

카카오 앱 설치시엔 모두 정상동작합니다.

[문제점 및 로직]
카카오 간편로그인을 진행중인데 카카오 설치 여부에 따라 앱으로 할지 웹으로 할지 판단합니다.

해당화면에서
switch UserApi.isKakaoTalkLoginAvailable() {
case true: // 카카오톡 앱으로 로그인
UserApi.shared.loginWithKakaoTalk { [weak self] in
}
case false: // 웹으로 카카오 로그인
UserApi.shared.loginWithKakaoAccount(prompts: [.Login]) { [weak self] in
}
}

sceneDelegate에서
func scene(_ scene: UIScene, openURLContexts URLContexts: Set) {
if let url = URLContexts.first?.url {
if AuthApi.isKakaoTalkLoginUrl(url) {
let _ = AuthController.handleOpenUrl(url: url)
}
}
}

[특이사항]
카카오 미설치, 유심 없음

안녕하세요.

isKakaoTalkLoginAvailable 기능은 내부적우로 UIApplication의 canOpenURL 을 사용하고 있어
클라이언트측 환경에 의해 이슈가 발생하는 것으로 보입니다.

혹시, 기본브라우저는 어떤것을 쓰고 계실까요?
그리고, LSApplicationQueriesSchemes 설정 부분 스샷으로 제공 부탁드립니다.

스크린샷 2022-06-16 오후 1.42.29

사파리를 사용하고 있습니다.

[Podfile]

  • KakaoSDKAuth (2.9.0):
    • KakaoSDKCommon (= 2.9.0)
  • KakaoSDKCommon (2.9.0):
    • KakaoSDKCommon/Common (= 2.9.0)
    • KakaoSDKCommon/Network (= 2.9.0)
  • KakaoSDKCommon/Common (2.9.0)
  • KakaoSDKCommon/Network (2.9.0):
    • Alamofire (~> 5.1)
    • KakaoSDKCommon/Common (= 2.9.0)
  • KakaoSDKNavi (2.9.0):
    • KakaoSDKCommon/Common (= 2.9.0)
  • KakaoSDKUser (2.9.0):
    • KakaoSDKAuth (= 2.9.0)

별다른 문제는 없어 보입니다

샘플앱으로도 같은 현상이 있으신지 확인 부탁드립니다.

Kakao Developers - 최신 버전 샘플 다운로드

[원인]
아래 오류가 발생되고 발생하지 않도록 URL Type에 kakaokompassauth를 등록하였고 이로 인하여 UserApi.isKakaoTalkLoginAvailable()가 계속 true만 넘어왔네요.

[해결]
URL Type에 kakaokompassauth 삭제 처리

[현상태 : UserApi.isKakaoTalkLoginAvailable() true/false 정상적으로 넘어옵니다.]
미설치시 : 오류 발생
-canOpenURL: failed for URL: “kakaokompassauth://authorize” - error: "작업을 완료할 수 없습니다.(OSStatus 오류 -10814.)"

설치시 : 위 오류 미 발생

1개의 좋아요

URL Type에 설정 하여 문제가 발생하셨군요. 저도 하나 배워 갑니다.

미설치시 발생하는 오류는 ios9부터 스킴을 열수 있는 앱이 없으면 로그에 나타나는 것으로, 정상동작이니 신경쓰지 않으셔도 될 것 같습니다.