Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

oncomplete 콜백이 작동하지 않습니다. #642

Open
ethan-223 opened this issue Jul 30, 2020 · 4 comments
Open

oncomplete 콜백이 작동하지 않습니다. #642

ethan-223 opened this issue Jul 30, 2020 · 4 comments
Labels

Comments

@ethan-223
Copy link

ethan-223 commented Jul 30, 2020

안드로이드 환경에서 최신 가이드에 있는 iframe을 이용하여 레이어 띄우기 예제 코드를 그대로 복사 붙여넣기 하였습니다.

우편 번호 검색은 정상적으로 작동하나, 검색 결과를 클릭하였을 때는 아래와 같은 에러가 발생하면서 아무런 반응을 하지 않습니다.
가이드 예제코드로 미루어보면, 우편번호와 주소 필드에 결과 값이 입력되어야 할 것 같은데 이 부분도 작동하지 않습니다.

 I/chromium: [INFO:CONSOLE(4)] "Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('file://') does not match the recipient window's origin ('null').", source: https://t1.daumcdn.net/postcode/cssjs/service/1587458142331/service.v2.min.js (4)

html 파일을 호출하는 코드는 다음과 같습니다.

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        webView_postalcode.run {
            settings.javaScriptEnabled = true
            webViewClient = object : WebViewClient() {
                override fun onPageFinished(view: WebView, url: String) {
                    this@run.loadUrl("javascript:sample2_execDaumPostcode();")
                }
            }

            loadUrl("file:///android_asset/DaumPostalCode.html");
        }
    }

BuildConfig는 다음과 같습니다

targetSdkVersion = 29
buildToolsVersion = "29.0.3"
compileSdkVersion = 29
minSdkVersion = 23

제가 놓치고 있는 부분이 있다면 알려주시면 감사하겠습니다.

@daumPostcode
Copy link
Owner

@SEONGGYU96
안녕하세요~

올려주신 글에서 "오류 메세지"가 말해주고 있습니다.

"Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('file://') does not match the recipient window's origin ('null').

위 오류가 뜻하는 것이 PostMessage라는 함수가 데이터를 전달하고 싶은데, origin값에 설정된 도메인 프로토콜이 file://이라 전달을 할 수 없다는 뜻입니다.
현재 저희 우편번호 서비스는 postMessage 함수를 통해 이종도메인 통신을 사용하고 있으며, 이때 중요한것이 보내는 측과, 받는 측의 도메인 매칭 입니다. 받는쪽 도메인이 A인데, 보내는쪽에서 origin값을 B라고 셋팅하면 전달이 안되고, A라고 셋팅을 해야 동작이 됩니다. 다만 해당 동작은 우편번호서비스 내부에서 자동으로 맞춥니다.

다만 이게 안되는 케이스가 있는데, 현상황처럼 file://~~~으로 해서 http:// https://과 같이 인터넷 프로토콜을 사용한 도메인 값이 아니라,
파일을 직접 이용하실 경우엔 파일 path에는 도메인 값이 없죠.. 그래서 동작하지 않습니다.

현 상황에서 동작하게 하실려면, 저희 서비스를 띄우는 html 파일을 웹앱에서 바로 파일 로딩 하지 마시고, 따로 웹서버를 통해서 html 파일을 불러와야 합니다.

해당내용은 FAQ 10번 에 적혀 있으니 이부분도 참고 부탁드립니다.

감사합니다.

@ethan-223
Copy link
Author

ethan-223 commented Jul 31, 2020

상세한 답변 감사합니다.
그럼 서버 없이 로컬만으로는 우편번호 서비스를 사용할 수 없다고 이해하여도 될까요? 😞

@daumPostcode
Copy link
Owner

@SEONGGYU96
넵 맞습니다. 현재 저희 API는 Web전용 API라 말씀하신 것처럼 별도 서버가 없으면 사용이 어려우십니다.
데이터만 필요한 경우에는 행안부API나, postcodify를 한번 고려해 보시는게 좋으실것 같습니다.

감사합니다.

@ethan-223
Copy link
Author

네 감사합니다 큰 도움이 되었습니다 :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants