Kakao i Connect Live 커뮤니티

Android 크롬 업데이트 이후 Remon Web Livecast watch 실패

수고 많으십니다.
Android 앱에 WebView로 Remon Livecast watch/view 를 구현하여 작업 중에 있습니다.

잘동작하던 안드로이드 휴대폰(Oreo)에서, 얼마전 부터 갑자기 Livecast view가 실패하는 현상이 발견되어 확인해본 결과
아래와 같이 안드로이드 크롬앱 버전에 따라 동작결과가 다릅니다.
안드로이드 크롬 버전 70.0.3538.80 (정상동작) -> 71.0.3578.98 (동작안함)

현재 시간 기준으로 크롬 최신 버전이 71.0.3578.98 이고, 이 업데이트를 제거하면 정상동작합니다.
(참고로 최신버전의 크롬으로 직접 Remon SDK가 적용된 사이트를 직접 연결하면 잘 동작합니다. 안드로이드앱 웹뷰상에서만 오동작합니다.)

테스트해본 Remon SDK는 아래와 같으며, Remon SDK 버전과 상관없이 결과는 위와 동일했습니다.
https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js

웹뷰 콘솔로그가 제한적이라서 알아보기 힘들지만 참고 부탁드립니다.

12-17 17:33:40.291 W 25328 25328 test : JS Console :: LOG logServer: at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.291 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.291 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.294 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.470 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.526 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.578 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.580 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.582 W 25375 25644 chromium: [WARNING:mediasession.cc(349)] Duplicate id found. Reassigning from 103 to 127
12-17 17:33:40.585 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.586 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.588 W 25328 25328 test : JS Console :: LOG onJoin: $ at 1210 of https://m.testshop.net/mypage/show_livecast?mseq=1&seq=105
12-17 17:33:40.589 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.620 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.676 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.711 I 25328 25328 chatty : uid=10430(com.test.android.debug) identical 2 lines
12-17 17:33:40.714 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.719 W 25328 25328 test : JS Console :: LOG [RM]G> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.721 W 25328 25328 test : JS Console :: LOG console.groupEnd at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.722 W 25328 25328 test : JS Console :: LOG [RM]G> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.723 W 25328 25328 test : JS Console :: LOG console.groupEnd at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.724 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.726 W 25375 25645 chromium: [WARNING:jseptransportcontroller.cc(296)] Not adding candidate because the JsepTransport doesnt exist. Ignore it.
12-17 17:33:40.755 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.766 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.785 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.786 I 25328 25328 chatty : uid=10430(com.test.android.debug) identical 3 lines
12-17 17:33:40.786 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.795 W 25375 25645 chromium: [WARNING:stunport.cc(422)] Port[c71a6c00:audio:1:0:local:Net[any:0:0:0:x::x::x::x:x/0:Wildcard:id=0]]: StunPort: stun host lookup received error 0
12-17 17:33:40.796 W 25375 25645 chromium: [WARNING:turnport.cc(787)] Port[c74c8800:audio:1:0:relay:Net[any:0:0:0:x::x::x::x:x/0:Wildcard:id=0]]: TURN host lookup received error 0
12-17 17:33:40.804 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.805 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.814 W 25375 25645 chromium: [WARNING:stunport.cc(422)] Port[c71a6c00:audio:1:0:local:Net[any:0:0:0:x::x::x::x:x/0:Wildcard:id=0]]: StunPort: stun host lookup received error 0
12-17 17:33:40.856 W 25375 25645 chromium: [WARNING:basicportallocator.cc(922)] Discarding candidate because port is already done gathering.
12-17 17:33:40.979 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:40.980 I 25328 25328 chatty : uid=10430(com.test.android.debug) identical 3 lines
12-17 17:33:40.980 W 25328 25328 test : JS Console :: LOG [RM]I> at 1 of https://cdn.jsdelivr.net/npm/@remotemonster/[email protected]/remon.min.js
12-17 17:33:41.182 V 25328 27848 FA : Inactivity, disconnecting from the service
12-17 17:33:41.328 W 25375 28131 chromium: [WARNING:video_receive_stream.cc(471)] No decodable frame in 200 ms, requesting keyframe.

확인해보겠습니다. 혹시 안드로이드에서는 webview대신 android 전용 sdk를 사용하시는 것은 어려우실까요?

성능과 상황을 고려해서 안드로이드나 IOS SDK를 활용해보는 방향도 검토 중입니다만,
안타깝게도 당장은 Web SDK로 진행해야하는 상황입니다.

wvRTC.setWebViewClient(new WebViewClient());
wvRTC.getSettings().setBuiltInZoomControls(true);
wvRTC.getSettings().setDatabaseEnabled(true);
wvRTC.getSettings().setJavaScriptEnabled(true);
wvRTC.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wvRTC.getSettings().setLoadsImagesAutomatically(true);
wvRTC.getSettings().setUseWideViewPort(true);
wvRTC.getSettings().setSupportZoom(false);
wvRTC.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
wvRTC.getSettings().setAppCacheEnabled(false);
wvRTC.getSettings().setDomStorageEnabled(true);
wvRTC.getSettings().setAllowFileAccess(true);
wvRTC.getSettings().setAppCacheEnabled(true);
wvRTC.getSettings().setMediaPlaybackRequiresUserGesture(true);
wvRTC.getSettings().setAllowContentAccess(true);

확인 감사드립니다.
위 설정그대로 다시 시도해보았으나 결과는 이전과 동일했습니다.
아래 구문 추가해도 동일한지 확인 부탁드립니다.

wvRTC.setWebChromeClient(new WebChromeClient());

가이드 해주신대로 video 태그에 controls를 추가하니 정상동작했습니다.
짐작하신것 처럼 크롬 최신버전에서 autoplay를 막아서 그렇게 된게 아닌가 싶기도합니다.
Web SDK를 수정할만한 부분은 아닌 것 같고, 앱서비스에서 보완할 수 있는 다른 방법으로 고민해보도록 하겠습니다.
적극적인 지원 감사드립니다!!

새롭게 바뀐 크롬 정책에 의한 결과로 보입니다.
video 태그 안에 다음과 같은 property를 넣으면 해결이 됩니다.
<video id=‘remoteVideo’ playsinline webkit-playsinline muted …

지속적인 지원에 감사드립니다!!!

몰랐던 새로운 방법이 있었네요. 이 방안도 같이 확인해보도록 하겠습니다.
일단 제가 확인한 부분으로는, 안드로이드 웹뷰(크롬) 기본 설정값 변경에 의한걸로 파악이 되어서 웹뷰에 설정값을 조정해서 해결했습니다.
위 예제 코드를 기반으로 했을 때 아래와 같이 설정해서 autoplay되게끔 조정했습니다.
감사합니다.

wvRTC.getSettings().setMediaPlaybackRequiresUserGesture(false);