카카오 로그인 하이브리드앱에 적용시 팝업이 닫히지 않습니다

https://developers.kakao.com/docs/latest/ko/getting-started/sdk-js#hybrid-app

요 링크 그대로 적용하여 로그인후 동의하고 확인 을 누르면

onCloseWindow가 호출되고 다음 URL도 호출이 되는데, 팝업창이 닫히지 않아 흰화면만 보여집니다

removeView 에서 제대로 작동되지 않는 것 같은데 해결방법이 있을까요?

@RequiresApi(Build.VERSION_CODES.O)
override fun onCreateWindow(
view: WebView?,
isDialog: Boolean,
isUserGesture: Boolean,
resultMsg: Message?
): Boolean {

        // 웹뷰 만들기

        childWebView = WebView(view!!.context)

        // 부모 웹뷰와 동일하게 웹뷰 설정
        childWebView.run {
            settings.run {
                javaScriptEnabled = true
                javaScriptCanOpenWindowsAutomatically = true
                setSupportMultipleWindows(true)
            }
            layoutParams = view.layoutParams
            webViewClient = view.webViewClient
            webChromeClient = view.webChromeClient
        }

        // 화면에 추가하기
        view.addView(childWebView)

        // 웹뷰 간 연동
        val transport = resultMsg!!.obj as WebView.WebViewTransport
        transport.webView = childWebView
        resultMsg.sendToTarget()

        return true
        //return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg)
    }



    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    override fun onCloseWindow(window: WebView?) {
        super.onCloseWindow(window)
        Timber.d("Close----------")
        window?.removeView(window)

    }

@kimej8903
저희 샘플 코드는 앱에서 사용하시는 레이아웃을 ‘webViewLayout’ 이라고 가정하고 작성되었습니다.

webViewLayout = // 웹뷰가 속한 레이아웃

...

override fun onCloseWindow(window: WebView) {
    super.onCloseWindow(window)

    webViewLayout.removeView(window)
}

질문자님이 작성하신 코드를 봤을 때
window?.removeView(window) 라고 호출하신 부분이 잘못 되었습니다.

// 화면에 추가하기
view.addView(childWebView)

로 미루어 봤을 때

view.removeView(window)

가 되어야 할 것 같습니다.

cc @holden.joo

1개의 좋아요

요기거랑 똑같은 증상입니다!
오프너 증상 해결되었나요?