KKGRAM
[Android] SSL Error Handler 구글 스토어 경고 대응하기 본문
[Android] SSL Error Handler 구글 스토어 경고 대응하기
구글스토어에 어플을 올려두고 신경을 끄고있다가 어느날 들어와보니 업데이트가 되어있지 않았다. (정말 관심 안가짐) 경고문을 보니 아무래도 웹뷰를 사용하기 위해서 인증서를 무조건 패스하게 한 부분이 문제였던 것 같다.
SSL Error Handler
For more information on how to address WebView SSL Error Handler alerts, please see this Google Help Center article.
경고에는 이런식으로 적혀있었고, 다른 블로그들을 확인 해 보니 대응하는 방법이 존재해서 바로 적용하고 올렸더니 문제없이 업데이트 되었다. 그 전에 해 둔 소스에서는 사용자의 선택없이 '무조건' 인증서가 없어도 true로 리턴해서 입장이 가능하도록 했는데 이 부분을 사용자의 선택에 맡기면 된다.
기존소스.java
private class WebViewClientClass extends WebViewClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); showWaitingDialog(); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); cancelWaitingDialog(); } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); cancelWaitingDialog(); } @Override public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { handler.proceed(); // SSL 에러가 발생해도 계속 진행! } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }
수정한지 좀 뒤에 작성하는 거라서 아마 그 전 소스는 대충 이랬을 것이다. onReceivedSslError에서 바로 계속 진행하도록 두었는데, 이 부분을 dialog 등을 통하여 사용자의 선택으로 돌리면 넘어갈 수 있다.
소스변경 후.java
private class WebViewClientClass extends WebViewClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); showWaitingDialog(); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); cancelWaitingDialog(); } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); cancelWaitingDialog(); } @Override public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { final MessageDialog msg = new MessageDialog(ManualActivity.this); msg.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialogInterface) { msg.setMode("YESNO"); msg.setText("다음 페이지로 이동하시겠습니까?"); } }); msg.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { if(msg.getResult()!=null && msg.getResult().equals("YES")){ handler.proceed(); }else{ handler.cancel(); } } }); msg.show(); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }
소스에 있는 MessageDialog는 본인이 커스텀해서 사용하는 다이얼로그 이므로 각자 사용하는 메시지 다이얼로그를 통해 yes or no의 값대로 proceed또는 cancel로 돌려준 뒤 다시 플레이스토어에 업데이트하면 반려없이 반영된다.
'개발' 카테고리의 다른 글
[Android] WebView에서 IScroll 사용시 스크롤이 버벅이는 현상 (0) | 2018.07.02 |
---|---|
[Spinner] 안드로이드 콤보박스 만들기 (1) | 2016.04.22 |
(다이얼로그) Adroid Studio custom dialog 생성하기 (5) | 2016.04.11 |
[RatingBar] 안드로이드 RatingBar 자바 코드로 스타일 바꾸기 (1) | 2016.03.25 |
android studio 버튼 클릭 표현 하기 (0) | 2016.02.06 |
Comments