카카오계정으로 로그인시 application:openURL:options 가 불러지지 않습니다

카카로 계정으로 로그인을 구현 중입니다. xcode 11.2.1을 사용하여 새 프로젝트를 생성하였습니다.
iOS deployment target은 11로 설정되어 있습니다.

plist에 다음과 같은 항목을 추가하였습니다.
KAKAO_APP_KEY, LSApplicationQueriesSchemes, URL Types

카카오 로그인창이 나오고 확인을 누르면, 제 앱으로 돌아오는데,
application:openURL:options 도 불러지지 않고
[[KOSession sharedSession] openWithCompletionHandle: 의 completion handler도 불러지지 않습니다.

applicationDidBecomeActive, applicationDidEnterBackground도 다 구현되었구요.

이상한건,
기존에도 카카로 로그인을 다른 앱에서 구현한 적이 있는데, 그 프로젝트(구 xcode 프로젝트)를 열어보면 정상적으로 작동하네요. 개발툴의 문제일까요?

해결되었습니다. 혹시 같은 문제가 있는 분을 위해 남깁니다.

iOS 13부터 SceneDelegate라는 클래스가 프로젝트를 생성할때 자동으로 추가됩니다. 뭐하는건진 잘 모르겠지만,

아무튼 AppDelegate의 몇몇 함수들이 여기서 재정의 됩니다. iOS 13부터는 applicationDidEnterBackground, applicationDidBecomeActive, application:openURL:options:, 가 call되지 않습니다.
대신 SceneDelegate에 대응되는 함수들을 구현해주어야 합니다.

즉,
applicationDidBecomeActive -> sceneDidBecomeActive
applicationDidEnterBackground -> sceneDidEnterBackground
application:openURL:options -> scene:openURLContexts
에도 구현해줘야 합니다.

사실 iOS13 이전 device들은 또 AppDelegate의 함수들이 불러지니, 코드가 양쪽으로 중복이 된는건 어쩔수 없네요.

카카오 측에서도 개발 guide 문서를 업데이트 해야 할것 같네요.

6개의 좋아요

저도 똑같은 이슈로 몇시간을 날렸는데 ㅠㅠ

덕분에 해결했네요. 감사합니다.

카카오 개발 Guide 문서 업데이트 정말 필요합니다

1개의 좋아요

@kosuel @valuetong
소중한 리포트 감사드립니다. 빠른 시일내에 반영하겠습니다.

와… 반나절을 이걸로 씨름했는데… 여기 답이 있었군요…
너무 감사합니다.

react native 에서는 어떻게 대응해줘야 할까요?

react native 에서는 SceneDelegate 란 클래스가 없습니다…