① 배운 것
Exception java.lang.IllegalStateException: Reply already submitted
at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply (DartMessenger.java)
at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.success (MethodChannel.java)
at com.kakao.sdk.flutter.KakaoFlutterSdkPlugin.resultOk (KakaoFlutterSdkPlugin.java)
at com.kakao.sdk.flutter.KakaoFlutterSdkPlugin.access$resultOk (KakaoFlutterSdkPlugin.java)
at com.kakao.sdk.flutter.KakaoFlutterSdkPlugin$resultReceiver$1.invoke (KakaoFlutterSdkPlugin.java)
at com.kakao.sdk.flutter.KakaoFlutterSdkPlugin$resultReceiver$1.invoke (KakaoFlutterSdkPlugin.java)
at com.kakao.sdk.flutter.SingleResultReceiver.onSuccess (SingleResultReceiver.java)
at com.kakao.sdk.flutter.BaseResultReceiver.receiveOk (BaseResultReceiver.java)
at com.kakao.sdk.flutter.BaseResultReceiver.onReceiveResult (BaseResultReceiver.java)
at android.os.ResultReceiver$MyRunnable.run (ResultReceiver.java:50)
at android.os.Handler.handleCallback (Handler.java:958)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loopOnce (Looper.java:230)
at android.os.Looper.loop (Looper.java:319)
at android.app.ActivityThread.main (ActivityThread.java:8919)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:578)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1103)
현상 : ios에서 카카오톡 회원가입 시 (카카오톡 앱이 깔려있을때만) 카카오톡 -> 우리 서비스 앱으로 돌아오면서 앱이 카카오톡으로 넘어가기전 화면에 머물러 있는게 아니라 다시 앱의 첫화면부터 다시 시작되었다.
이유 : 정확한 이유는 파악하지 못했다. 비슷한 이슈를 찾을 수 있었지만 여기서 말한 해결책(1. ios 설정에서 뭔가 빠졌다. 2. 제3의 로그인 sdk(페이스북이나 네이버 등)에서 딥링크 충돌이 난다.)으로는 해결이 안되었고 직접적인 원인을 찾기에도 시간이 없는 상황
해결 : 직접적인 원인을 찾기보다는 좀 ux적으로 다른 방법을 택하기로 했다.
카카오톡-> 우리 서비스 앱으로 돌아온 직후 바로 다른 화면으로 context.go를 시켜주면 앱의 첫 화면부터 다시 시작되는게 아니라 원하는 화면으로 보낼 수 있었음. 그래서 스플래시->로그인화면->카카오톡->우리앱으로 돌아온 후 로그인화면에서 추가 정보를 받는게 아니라 스플래시->로그인화면->카카오톡->우리앱으로 돌아온 후 다음 화면으로 보낸 후 그 화면에서 추가 정보를 받도록 수정함.
② 회고 (restropective)
개발적으로 해결하기 어려운 문제는 ux적으로 해결하는 것이 때로는 좋은 방법이다.
③ 개선을 위한 방법