개발 관련/SW, App 관련

Unity에서 php를 활용한 웹데이터(text)를 Android 앱에서 읽기

by 소서리스25 2023. 6. 16.
반응형

이전 포스팅에서 Unity 에디터 상에서 웹서버의 Text 데이터를 읽어 오는 것을 다뤘었다. 이것을 포스팅 한 계기가 기존에 구글 플레이에서 앱도 업데이트하는 중인데 API 변경과 google mobile ads의 업데이트를 진행하면서 나온 내용을 포스팅한 것이다.

 

그런데 문제는 안드로이드 환경에서 문제가 발생했다.(결론적으론 Unity 2018.4를 너무 쥐어짠 것이....)

이전 버전들에서는 아주 잘 돌아갔던 것이 업데이트하면서 종종 누락되거나 안되는 것들이 속출했다.

앱의 광고를 업데이트 했는데도 나오지 않는 경우도 있고, 물론 빌드도 정상으로 진행되어 가끔 늦게 광고데이터를 받아오는 경우도 있어서, 그리고 다른 앱들은 광고가 잘만 나오기도 해서 큰 문제로 생각지 않았는데...

 

진짜로 광고가 안나오는 것이었다.

 

확인해 보니 프로젝트별로 상이한데, 어떤 프로젝트는 Android Resolver의 Force Resolve를 해도 aar이나 라이브러리가 생성되고 다시 지워지는 것이었다. (왜 그런지 잘 모르겠다. 전문가가 아니라서...)

어떤 건 되고 어떤 건 안되고...

이런 경우 상황이 비슷한 앱의 라이브러리를 복사하여 매니페스트만 바꿔서 빌드하니 임시적으로나마 잘 되긴 했다.

아직도 이것은 원인을 모르겠다.

 

아무튼 이 모든 것이 Unity 2018.4.3을 가지고 API 31과 이에 맞는 광고 GoogleMobileAds를 설치하면서 발생되는 문제이다. 한마디로 Unity의 버전이 너무 낮아서 생기는 현상이라 보면 될 것 같다.

 

해결과정에서 안 사실중에 Unity 2018.4.3에서 지원하는 버전이 GoogleMobileAds-v5.3.0.unitypackage 까지만 지원된다는 것이다. 그 이상은 에디터 속성에서 오류가 발생한다. (아니면 내가 방법을 못 찾은 것일 수도...)

 

결과적으로 Unity에서 UnityWebRequest를 사용하여 웹서버의 데이터를 Android에서 그냥 사용하는 데는 문제가 없다. 다만  GoogleMobileAds를 그냥 사용하면 데이터를 불러오지 못한다.

별도의 프로젝트로 가져와서 테스트해 봤을 때 원인은 둘이 안 맞는다. 분명 권한문제일 것으로 판단되는데...

아무리 구글에서 서치를 해도 못 찾겠다.

 

그런데 다른 글들을 찾다가 unity에서 웹뷰를 사용하려면 매니페스트에서 한 가지를 더 추가해줘야 한다는 것을 찾았다. 웹데이터를 읽는 것이니까 이걸로 되지 않을까 했는데.. 

결국 해당 방법으로 해결하게 되었다... 며칠 동안 찾아 헤맸는데...

 

즉, <application .... android:usesCleartextTraffic  = "true"> 이걸 넣어줘야 한다.

그리고 빌드하면 정상적으로 광고도 나오면서 Android 앱에서 데이터를 불러온다.

 

사실 광고가 아니면 저걸 넣지 않아도 제대로 작동하였는데... 이걸 같이 하니까 안 되는 현상이었다.

아무튼 이것으로 앱의 업데이트가 가능해졌다. 

 

위의 내용을  삽입한 AndroidManifest.XML의 내용은 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
 
<manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.unity3d.player" 
        xmlns:tools="http://schemas.android.com/tools">
  <application android:label="@string/app_name"
               android:usesCleartextTraffic = "true">
    <activity android:name="com.unity3d.player.UnityPlayerActivity"
              android:theme="@style/UnityThemeSelector"
              android:exported="true" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
  </application>
</manifest>
cs

 

버전업을 해야 할지 휴....

다른 앱을 버전업 했더니 앱이 현저히 느려지는 현상이 발생되어서 아직 검토 중... 원인 파악이 안 되는 상태..

 

반응형

댓글