카카오 로그인 시 다시 앱으로 돌아올 때 앱 화면이 유지되지 않고 앱이 새로 실행되는 듯한 현상이 있습니다

@chlrbal789 @kaya4043
안녕하세요. 이슈 제보주셨던 시점에서 이미 많은 시간이 지났지만 혹시라도 확인하시면 도움이 될 수 있을까 싶은 생각에 답변 남깁니다.

제보주신 이슈는 go_router를 사용하면 발생할 수 있는 이슈인 것으로 확인됩니다.
iOS 환경에서 카카오 로그인 시 Custom URL Scheme을 사용하고 있습니다. 그런데 go_router에서 Custom URL Scheme이 동작하는 경우에도 redirect 로 감지해서 라우팅처리하고 있어서 kakao_flutter_sdk 의 수정으로는 해결할 수 없는 이슈인 것으로 파악됩니다.

info.plist 파일에 FlutterDeepLinkingEnabled 값을 NO로 처리하면 이슈가 발생하지 않도록 할 수 있으나, 해당 설정을 하면 go_router에서 모든 Custom URL Scheme 호출에 대해서 redirect 처리하지 않도록 하기 때문에 개발 중인 앱에서 Custom URL Scheme을 사용하고 있다면 적용하기 어렵다고 판단해서 아래와 같이 코드 수정을 통해 처리하도록 가이드 전달드리게 되었습니다.

GoRouter 객체 생성 시 redirect 부분을 아래와 같이 수정했을 때 정상적으로 동작하는지 확인 부탁드리고, 문제가 없다면 코드 수정해서 사용 부탁드리겠습니다.

final GoRouter router = GoRouter(
  routes: <RouteBase>[
    // 생략
  ],
  redirect: (BuildContext context, GoRouterState state) {
    // 생략
    
    final uri = state.uri;

    // kakao${app_key}://kakaolink과 같은  Custom URL Scheme도 있으므로 uri.authority까지 체크 필요
    if (uri.scheme.contains('kakao') && uri.authority == 'oauth') {
      return '${카카오톡 로그인을 실행한 페이지}';
    }

    // 생략
  },
);
3개의 좋아요