![[Flutter][Issue] iOS 카카오 로그인과 버전 관리 이슈](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXDWW8%2FbtsNwY8f6zE%2FykQ68Bpp9wTv8u7Kf34knK%2Fimg.png)
문제 상황
카카오 로그인이 제대로 수행되지 않는다는 버그 리포트를 받았다. 그러나 그 버그 리포트가 너무나도 부실했기에 (무작정 카카오 로그인이 안된다고 하고 당시의 상황에 대해 설명이 없었다.) 우선은 더 급한 업데이트 부터 처리를 하고 심사를 넣었다.
그런데 카카오 로그인 버튼이 눌리지 않는다고 애플에서 리뷰를 해주어 버그 픽스에 들어갔다. ▼
다시 확인해보니 카카오 로그인이 아래와 같이 팝업만 잠깐 나오고 진행이 안되고 있었다. 운좋게? 팝업이 안사라지고 남아있다고 해도 로그인 페이지로 넘어가지지 않는 문제가 있었다. ▼
원인 탐색
클라이언트 로직의 문제?
초기에 테스트를 했을 때는 백엔드 통신도 잘 마무리 했었는데 갑자기 문제가 발생했다는 이야기를 들으니, 약간은 갈피가 잘 안잡혔다. 하지만 현상을 보니 확실히 서버 문제가 아니라 클라이언트 문제라는 생각이 들어 카카오 로그인 코드를 확인해보았다.
현재 프로젝트에서는 대부분의 통신 메소드를 UseCase로 관리하고 있는데, KakaoLoginUseCase를 봤을 때 로직 상의 문제가 없었다. 또한 해당 UseCase를 호출하는 부분에서도 로직 상 문제가 될 만한 부분이 보이지 않았기에, Kakao SDK 의 문제라는 생각이 들었다.
Kakao SDK 확인
Kakao flutter sdk에 가서 issue를 확인해보니 나와 똑같은 문제를 겪고 있는 사람이 있었다. ▼
[Bug] ios에서 loginWithKakaoAccount 에서 진행이 되지 않습니다. · Issue #203 · kakao/kakao_flutter_sdk
이슈 설명 (Issue description) 카카오톡이 설치되지 않은 환경에서 UserApi.instance.loginWithKakaoAccount() method를 이용해 로그인을 시도하였으나 동영상에서와 같이 웹으로 전환되지 않고 잠깐 팝업이 떴다
github.com
해당 글에 달린 답변은 아래와 같았다. ▼
kakao_flutter_sdk는 1.9.7+3 버전부터는 iOS 13.0 이상부터 지원되도록 변경되었습니다.
1.9.7+3 이전까지는 SDK 내부적으로 디폴트 브라우저를 띄울 때 iOS 13.0 이상에서는 ASWebAuthenticationSession을 사용했고,
13.0 미만에서는 SFSafariViewController 를 사용하도록 구현되어 있었습니다.
최근에 특정 기능에서 브라우저를 띄울 때 팝업을 미노출하고 싶다는 요청이 있었고, 이를 반영하기 위해 SDK 내부적으로 ASWebAuthenticationSession만 사용하도록 수정해서 1.9.7+3 부터는iOS 13.0 이상부터 사용할 수 있도록 변경되었습니다.
그런데 프로젝트에 Minimum Deployments는 13.0 미만으로 설정되어있는 경우에는 ASWebAuthenticationSession를 사용할 수 없기 때문에 팝업이 제대로 노출되지않고 잘못 동작하는 것으로 확인됩니다.
SDK에는 pod install 시 13.0 미만 프로젝트에는 정상적으로 설치되지 않도록 설정 해두었지만 Podfile에 platform :ios, '13.0' 으로 설정하고, 프로젝트의 Minimum Deployments 설정을 13.0 미만으로 설정해도 프로젝트가 정상적으로 빌드가 되고 있어서 이슈가 발생하는 것 같아요.
SDK 단에서 이런 이슈를 방지할 수 있을지는 조금 더 확인해보도록 하겠습니다.
즉, 1.9.7+3 버전에서 생기는 문제이고, XCode 프로젝트에서 Minimum Deployments에 값을 수정하지 않은 채 Potfile에 '13.0' 보다 높은 버전으로 설정했을 경우 프로젝트가 정상적으로 빌드되면 안되는데 빌드가 되어 생기는 문제였던 것이다.
버전 관리
사실 해당 프로젝트에서 카카오 로그인 테스트가 잘 수행되지 않았다. 약간의 변명을 하자면, 프로젝트 개발 초기에만 로그인 부분을 테스트하고 이후에는 핵심 기능들을 개발하는데에도 시간이 부족해 로그인을 다시 돌아볼 시간이 없었다. 그래서 로그인을 처음 테스트한 시점은 거의 3달 전이고, 그 동안에는 로그인이 잘 돌아간다는 전제 하에 개발이 수행됐다.
그런데 해당 SDK가 업데이트 된 시점은 이 글을 작성하는 날(2025.04.24)보다 43일 전이었다. ▼
'분명히 프로젝트에는 이전 버전이 설치가 되어있었을텐데 왜 갑자기 버전이 업그레이드 됐지...? 앗'
생각해보니 pubspec.yaml에 버전들을 특별한 이유가 있는게 아닌 한 `^1.0.0`의 양식으로 작성을 해놨었다. kakao_flutter_sdk 역시 이전버전을 명시해둔 건 맞았으나, 앞에 `^`가 붙어 `kakao_flutter_sdk: ^1.9.5`로 작성이 되어있었다.
그래서 메이저 버전 범위 안에서 가장 높은 버전인 1.9.7+3 버전이 설치되면서, 1.9.7+3 버전의 문제점이 나타나게 된 것이었다. 그마저도 iOS에서만 생기는 문제였기에 안드로이드 위주로 테스트하는 현재 환경에서 발견이 늦게 된 것이었다.
문제 해결
버전 조정
문제 해결은 쉽게 되었다. 1.9.6 버전으로 낮추고, 이와 관련된 나머지 패키지들의 버전도 조정했다. webview_flutter를 4.10.0 버전을 사용중이었는데 카카오 sdk 1.9.6과 맞지 않아 4.9.0으로 내려주었다.
이렇게 내려주고 clean, pub get, pod install 후 빌드를 하니 정상적으로 잘 동작하는 것을 볼 수 있었다.
마무리
이 문제가 터진 전날 사수님께서 firebase crashlytics에서 방어율이 60-90을 왔다갔다 하는데, 60-90을 왔다 갔다 하는 대부분의 이유는 우리가 짠 코드 때문이 아니라 대부분이 패키지 때문이라고 했었다. 이 말을 들을 때는 확실히 그렇다고 생각만 하고 있었는데 실제로 겪어보니 엄청나게 와닿았다. 전에는 패키지를 믿고 개발하는 편이 많았는데 이제는 의심을 갖고 패키지 관리도 철저하게 해야겠다...
'Develop > Flutter' 카테고리의 다른 글
[Flutter][Issue] 구글 맵 버벅임 문제 해결 (0) | 2025.04.23 |
---|---|
[Flutter][Error] 난독화와 enum.name (0) | 2025.03.10 |
[Flutter] SizedBox를 Padding 대신 사용하지 말아야 하는 이유 (0) | 2025.02.08 |
[Flutter][Issue] Flutter 카카오 로그인 릴리즈 키 (0) | 2024.12.29 |
[Flutter][Widget][Issue] TabBar 왼쪽에 공간이 생기는 현상 (0) | 2024.12.11 |