Unity3D

[유니티][안드로이드] Unity WebView Android 9.0 이상에서 화면 안 나오고 에러 처리

DragonTory 2021. 12. 1. 17:27
반응형

[유니티][안드로이드] Unity WebView Android 9.0 이상에서 화면 안 나오고 에러 처리 방법

 

유니티에서 웹페이지를 표시 하거나

웹브라우저를 사용 하기 위해서

웹뷰(WebView)를 사용 해야 하는데 

유니티에서 내장으로 된 웹뷰 모쥴이 없다. 

 

그래서 찾은 솔루션이 구글링 해보면 제일 많이 나오는 

Gree Unity WebView 플러그인을 사용 하기로 했다. 

 

Gree 웹뷰 설치 및 소스코드

https://dragontory.tistory.com/407

 

유니티 웹뷰 사용 하기 - Unity WebView Gree

유니티에서 웹 브라우저를 사용 할 일이 있을 때 WebView를 사용 하여 웹 브라우저를 구현 할 수 있다. 아래는 대표적인 플러그인. Gree Unity Webview https://github.com/gree/unity-webview GitHub - gree/unit..

dragontory.tistory.com

 

코드를 작성 하고 오브젝트 붙히고 버튼을 눌렀다.

 

정상 작동이 안 된다. 

 

그냥 하얀 화면만 나온다. 

 

인터넷 검색 결과

Android 9.0 (8.0도 마찬가지 인듯... ) 이상에서는 보안 정책 변경으로 

퍼미션 에러가 나서 그렇다.

에러:  Cleartext HTTP traffic not permitted

 

해결 1:  ( 간단히 해결 2로 해도 됨. )

AndroidManifest.xml를 커스터마이징 하여 권한을 추가 한다. 

 

<application
        android:label="..."
        ...
        android:usesCleartextTraffic="true">

 

android 9에서는 AndroidManifest.xml에 android:usesCleartextTraffic="true"를 추가 해줌. 

AndroidManifest.xml 파일은 어디에:

AndroidManifest.xml : 유니티 프로젝트 빌드 후

 -> project/Temp/StagingArea/AndroidManifest.xml 파일 복사

 -> Assets/Plugins/Android/에 복사 해주고 

 -> 편집 -> 다시 빌드.


<application android:theme="@style/UnityThemeSelector" android:icon="@mipmap/app_icon" android:label="@string/app_name" android:usesCleartextTraffic="true">

 

내 경우 이 방법으로는 해결이 안 됐다. 

 

그래서 또 찾아 봄.

 

해결 2:

 유니티에서 해결 1의 AndroidManifest.xml의 편집 대신에 

프로젝트에서 다음을 디파인 하고 빌드 하면 

에러가 해결 된다. 

  UNITYWEBVIEW_ANDROID_USES_CLEARTEXT_TRAFFIC

어디에 정의 해 주나 :

Project Settings ->Scripting Define Symbols

입력 칸데 추가 해준다. 

 

 

위와 같이 정의 하고 빌드 하면 

웹뷰가 정상적으로 나오는 것을 볼 수 있다. 

 

셋팅 창 말고 스크립트 코드로 디파인 정의 하고 싶을 때는 :

https://dragontory.tistory.com/60

 

유니티에서 스크립트 코드로 디파인 정의 추가 하기 - Unity Scripting Define Symbols

유니티에서 스크립트 코드로 디파인 정의 추가 하기 - Unity Scripting Define Symbols - Preprocessor Symbols 유니티에서 #define을 사용 하여 특정 상황에 맞게 혹은 다르게 동작 하게 하려고 할 때 사용..

dragontory.tistory.com

을 참고 하세요.

Happy~~~ 

반응형