kakao / kakao_flutter_sdk

Flutter SDK for Kakao Open API
Apache License 2.0
193 stars 70 forks source link

카카오톡 로그인 시, 타입캐스팅으로 인한 에러 수정 (iOS) #151

Closed kipsong133 closed 2 years ago

kipsong133 commented 2 years ago

기기: 실제 Device (iPhone 11 Pro iOS 14.3ver)

디버깅 과정

image

현재 에러가 발생하는 부분은 _arguments 에 인덱스 2 에 있는 {"is_popup" : YES } 데이터 입니다. 이 데이터를 Dictionary<String,String> 으로 강제 타입캐스팅 시, 크래쉬가 발생하게 됩니다. Flutter -> iOS 로 데이터를 전달하는 과정에서 {"is_popup" : "YES" } 로 전달한 데이터가 String 을 Boolean 으로 인식해서 {"is_popup" : YES } 로 전환되어 발생한 에러로 판단됩니다.

위와 동일하게 arguments 에서 캐스팅을 진행하는데, 다음과 같은 데이터가 출력됩니다.

image

마찬가지로 "is_popup" value 가 String 이 아니라서 다음과 같에 크래시가 나오게됩니다.

image
public func handle(_ call: FlutterMethodCall, result: ...) {
    func castArguments(_ arguments: Any?) -> Dictionary<String, String> {  
        var args = arguments as! Dictionary<String, Any>  
        let isPopup = (args["is_popup"] as? Bool) ?? true  
        args["is_popup"] = (isPopup) ? "YES" : "NO"  
        return args as! Dictionary<String, String>  
    }
    ...
    switch call.method {
        case "launchBrowserTab":
        let args = castArguments(call.arguments)
        ...

    }
}
mbkim95 commented 2 years ago

안녕하세요

우선 kakao_flutter_sdk에 관심을 가져주셔서 감사합니다. 제보주신 것처럼 1.3.0-beta.3 부터 플러터 웹을 지원하면서 플러터 웹 지원용으로 launchBrowserTab() 메서드에 popupOpen 이라는 파라미터가 추가되었고, 그로 인해서 iOS 환경에서 Bool 값을 String으로 캐스팅하는 과정에서 크래시가 발생했습니다.

PR 주신 내용에 대해서 머지하기 전에 한가지 확인하고 싶은 부분이 있는데요, 이메일로 CLA 관련해서 문의하신 내용에 대해 답변을 받으셨나요?

kipsong133 commented 2 years ago

네. 말씀하신 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: @.***>

oss-kakao commented 2 years ago

@mbkim95 @kipsong133 CLA 동의 확인 완료되었습니다. 감사합니다.

mbkim95 commented 2 years ago

@kipsong133

pr은 머지되었고, 최대한 빠른 시일 내에 해당 내용 추가해서 수정된 버전 배포하도록 하겠습니다.

이와 별개로 redirect 방식의 로그인은 가이드에도 나와있듯이 플러터 웹을 위한 스펙인 점 참고 부탁드리겠습니다.

kakao_flutter_sdk에 관심 가져주셔서 다시 한번 감사합니다!