Closed kipsong133 closed 2 years ago
안녕하세요
우선 kakao_flutter_sdk에 관심을 가져주셔서 감사합니다.
제보주신 것처럼 1.3.0-beta.3 부터 플러터 웹을 지원하면서 플러터 웹 지원용으로 launchBrowserTab()
메서드에 popupOpen
이라는 파라미터가 추가되었고, 그로 인해서 iOS 환경에서 Bool 값을 String으로 캐스팅하는 과정에서 크래시가 발생했습니다.
PR 주신 내용에 대해서 머지하기 전에 한가지 확인하고 싶은 부분이 있는데요, 이메일로 CLA 관련해서 문의하신 내용에 대해 답변을 받으셨나요?
네. 말씀하신 CLA 관련해서 답변 받았습니다. [image: image.png]
이에 대한 회신으로 제 서명 및 개인정보 포함해서 답변 메일 드린 상태입니다.
감사합니다.
김우성 드림.
2022년 10월 6일 (목) 오후 12:20, 김민범 @.***>님이 작성:
안녕하세요
우선 kakao_flutter_sdk에 관심을 가져주셔서 감사합니다. 제보주신 것처럼 1.3.0-beta.3 부터 플러터 웹을 지원하면서 플러터 웹 지원용으로 launchBrowserTab() 메서드에 popupOpen 이라는 파라미터가 추가되었고, 그로 인해서 iOS 환경에서 Bool 값을 String으로 캐스팅하는 과정에서 크래시가 발생했습니다.
PR 주신 내용에 대해서 머지하기 전에 한가지 확인하고 싶은 부분이 있는데요, 이메일로 CLA 관련해서 문의하신 내용에 대해 답변을 받으셨나요?
— Reply to this email directly, view it on GitHub https://github.com/kakao/kakao_flutter_sdk/pull/151#issuecomment-1269254395, or unsubscribe https://github.com/notifications/unsubscribe-auth/APWT7DV6MNOU5EO7VIW36GDWBZAPPANCNFSM6AAAAAAQ5H3EM4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>
@mbkim95 @kipsong133 CLA 동의 확인 완료되었습니다. 감사합니다.
CLA 구글폼 모두 작성한 상태입니다. 이메일로도 문의 드린 후, PR 요청드립니다.
동작환경
기기: 실제 Device (iPhone 11 Pro iOS 14.3ver)
__pthread_kill + 8 libsystem_kernel.dylib
: -> 0x1bae1c414 <+8>: b.lo 0x1bae1c434 ; <+40> 0x1bae1c418 <+12>: pacibsp 0x1bae1c41c <+16>: stp x29, x30, [sp, #-0x10]! 0x1bae1c420 <+20>: mov x29, sp Target 0: (Runner) stopped. Lost connection to device.디버깅 과정
SwiftKakaoFlutterSdkPlugin
의 메소드 중handel(call:result:)
메소드가 호출됩니다. 그 중 RedirectURI 방식으로 시도하게 되면, "launchBrowserTab" 이름으로 된 메소드가 호출됩니다. 호출 시,FlutterMethodCall
로부터 전달받은 argument 는 다음과 같습니다. (노랑색 박스 부분을 참고하시면 됩니다.)현재 에러가 발생하는 부분은
_arguments
에 인덱스 2 에 있는 {"is_popup" : YES } 데이터 입니다. 이 데이터를Dictionary<String,String>
으로 강제 타입캐스팅 시, 크래쉬가 발생하게 됩니다. Flutter -> iOS 로 데이터를 전달하는 과정에서 {"is_popup" : "YES" } 로 전달한 데이터가 String 을 Boolean 으로 인식해서 {"is_popup" : YES } 로 전환되어 발생한 에러로 판단됩니다.위와 동일하게 arguments 에서 캐스팅을 진행하는데, 다음과 같은 데이터가 출력됩니다.
마찬가지로 "is_popup" value 가 String 이 아니라서 다음과 같에 크래시가 나오게됩니다.
Dictionary<String, String>
캐스팅에서 에러가 발생했으므로, 에러가 발생한 문자열 인덱스인 "is_popup" 에 대해서 Boolean -> String 으로 변경해주는 메소드를 추가했습니다. "launchBrowserTab" 케이스에서만 사용되는 것이 아니므로 메소드로 구성했습니다.