Unity - iOS 로그인 시 카카오톡이 설치되어있지만 isKakaoTalkLoginAvailable()가 false로 반환됨

문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.


  1. 사용 중인 SDK 정보
    KakaoSDKAuth
    KakaoSDKUser
    (둘다 CocoaPods으로 설치해서 버전을 잘 모르겠네요…아마 최신버전아닐까요?)

  1. 디벨로퍼스 앱 ID : 998120

  1. 개요
    Unity iOS 환경에서 Swift 코드를 Obj-C 코드로 브릿지해서 사용하고 있습니다.
    스마트폰에 카카오톡이 설치되어있지만 isKakaoTalkLoginAvailable()가 항상 false로 반환되고 있습니다.

  1. 앱 실행 허용 목록
    string plistPath = Path.Combine(path, “Info.plist”);
    PlistDocument plist = new PlistDocument();
    plist.ReadFromFile(plistPath);
    plist.root.SetString(“LSApplicationQueriesSchemes”, “kakaokompassauth”);
    plist.WriteToFile(plistPath);

Unity iOS 빌드 후 Xcode 확인 시 Key가 Queried URL Schemes로 변경되어있습니다.


UserApi.loginWithKakaoAccount()는 정상적으로 동작하는데 카카오톡으로 실행하는게 안되니까 답답하네요… 답변 주시면 감사하겠습니다.

안녕하세요.

빌드 후, xcode로 프로젝트를 열어 LSApplicationQueriesSchemes 설정이 정상 반영되어 있는지 확인 부탁드립니다.

주의: 앱 실행 허용 목록 설정을 위한 키 변경

Xcode 14 이상일 경우, 앱 실행 허용 목록 설정을 위한 키가 LSApplicationQueriesSchemes에서 Queried URL Schemes로 자동 변환될 수 있습니다. Info.plist 파일 내부에서는 기존 키를 사용하므로, 해당 파일을 직접 수정할 경우에는 기존 키를 사용합니다.

라고 되어있는데 자동으로 변환되었을 때는 적용이 되지 않는 걸까요? 수동으로 LSApplicationQueriesSchemes key로 등록시켜줘야하는건가요?

xcode 에서 표시만 Queried URL Schemes 로 표시되며 실제 info.plist 파일을 확인해 보시면 LSApplicationQueriesSchemes으로 되어 있을것입니다.

설정에는 문제 없어 보이는데요 info.plist 파일 내용 공유 부탁드립니다.


해당 부분을 어찌어찌 수정해서


배열 형식으로 만드니 정상 작동했습니다… 제가 문서를 제대로 확인하지 못한 죄입니다,…

그런데 카카오 계정으로 로그인에서 간편 가입 로그인이 출력되고, ‘동의하고 계속하기’ 버튼을 클릭했을 때 다시 앱으로 화면이 전환되지 않습니다.


다음과 같이 커스텀 URL 스키마를 등록했음에도 리다이렉트가 되지 않는 이유가 무엇일까요?

1개의 좋아요

해당 설정은 스킴 값만 등록하셔야 하는데요
kakao{네이티브 앱 키} 형식으로 등록 부탁드리며 뒤에 ://oauth 는 제거 부탁드립니다.

오마이갓;;;;;;전 빡통이네요 감사합니다. 정상작동 확인됩니다 ㅜㅜ

@objc public func loginWithKakaoTalk() {
    if (UserApi.isKakaoTalkLoginAvailable()) {
        UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
            if let error = error {
                print(error)
            }
            else {
                print("loginWithKakaoTalk() success.")

                if let idToken = oauthToken?.idToken {
                    print(idToken)
                } else {
                    print("idToken is nil.")
                }
            }
        }
    }
    else
    {
        print("not available, try login with kakao account");
        UserApi.shared.loginWithKakaoAccount {(oauthToken, error) in
                if let error = error {
                    print(error)
                }
                else {
                    print("loginWithKakaoAccount() success.")
                    
                    if let idToken = oauthToken?.idToken {
                        print(idToken)
                    } else {
                        print("idToken is nil.")
                    }
                    
                }
            }
    }
}

해당 코드로 카카오톡 로그인을 시도했을 때,
UserApi.isKakaoTalkLoginAvailable()는 true로 출력됩니다.

  1. 앱에서 loginWithKakaoTalk() 호출

Xcode 콘솔
→ applicationWillResignActive()
→ applicationDidEnterBackground()

  1. 카카오톡으로 전환(카카오 계정으로 로그인 화면) → 동의하고 계속하기

Xcode 콘솔
→ applicationWillEnterForeground()
→ applicationDidBecomeActive()

  1. 앱으로 전환

‘loginWithKakaoTalk() success’ 이나 idToken이 출력되지가 않습니다…

화면 전환 후, 다른 API 가 먼저 호출되는 것으로 보입니다.
xcode 로그 공유 부탁드립니다.

iOS | Kakao Developers iOS

해당 부분의 handleOpenUrl()가 정상적으로 추가되어있지 않은 상태인데 이것 때문에 앱으로 전환 시 로그인 처리가 정상적으로 완료되지 않은걸까요?

네, 해당 설정도 해주셔야만 합니다.

1개의 좋아요

이상없이 해결됐습니다! 너무 감사합니다!!! 사랑해요.

1개의 좋아요