Android 5.0 / API 21 이상 PG(KCP)모듈 결제시 Webview Session 오류

Android 5.0 / API 21 이상 PG(KCP)모듈 결제시 Webview Session 오류

API 레벨을 21이상으로 변경 후
KCP PG모듈 호출 및 결제완료 리턴시 오류가 났다. 마치 세션이 끊기는 듯한 증상이 나타났다. 
아래와 같이 사용되는 webView에 setMixedContentMode() / setAcceptThirdPartyCookies()
셋팅을 적용시켜준다.

mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setAcceptThirdPartyCookies(mWebView, true);

안드로이드 5.0부터 웹뷰에 아래와 같은 변경사항이 적용된다. 
제대로 대응하지 않는경우 http content, session, cookie등에서 문제가 생길 것 같다.
MixedContentMode를 Allow하지 않는 경우 https에서 이미지가 안보이는 문제가 발생하기도 한다.
https://developer.android.com/about/versions/android-5.0-changes.html#custom_permissions

WebView


Android 5.0은 앱의 기본 동작을 변경합니다.

  • 앱이 API 레벨 21 이상을 대상으로 하는 경우:
    • 시스템은 기본적으로 혼합 콘텐츠와 타사 쿠키를 차단합니다. 혼합 콘텐츠와 타사 쿠키를 허용하려면 각각 setMixedContentMode() 및 setAcceptThirdPartyCookies() 메서드를 사용합니다.
    • 이제 시스템이 HTML 문서 중에서 그릴 수 있는 부분을 지능적으로 선택합니다. 이러한 새 기본 동작은 메모리 공간을 줄이고 성능을 향상시킵니다. 문서 전체를 즉시 렌더링하려는 경우 enableSlowWholeDocumentDraw()를 호출하여 이 최적화를 비활성화합니다.
  • 앱이 21 이하의 API 레벨을 대상으로 하는 경우: 시스템이 혼합 콘텐츠와 타사 쿠키를 허용하며 항상 전체 문서를 한 번에 렌더링합니다.
해당 문제시 콘솔에 아래와 같은 block메시지가 뜨기도 하는 것 같다.

[blocked] The page at ‘https://xxx’ was loaded over HTTPS, but ran insecure content from http://xxx.css’: this content should also be loaded over HTTPS.

You may also like...

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.