Notice
Recent Posts
Archives
Today
Total
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Recent Comments
관리 메뉴

우당탕탕 개발일지

[Unity] Google Admob 광고보고 간헐적으로 튕기는 현상 본문

Unity

[Unity] Google Admob 광고보고 간헐적으로 튕기는 현상

devchop 2023. 11. 2. 10:26

디버깅을 해보면 다음과 같은 에러가 발생하면서 튕긴다.

2023-11-02 10:11:39.515 12968 13673 Error Unity Graphics device is null.
2023-11-02 10:11:39.515 12968 13673 Error Unity TMPro.TextMeshProUGUI:Awake()
2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.Object:Instantiate(Object, Transform, Boolean)
2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.Object:Instantiate(T, Transform, Boolean)
2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider:ProvideInstance(ResourceManager, AsyncOperationHandle`1, InstantiationParameters)

2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.ResourceManagement.InstanceOperation:Execute()
2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:InvokeExecute()
2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:Start(ResourceManager, AsyncOperationHandle, DelegateList`1)
2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.ResourceManagement.ResourceManager:StartOperation(AsyncOperationBase`1, AsyncOperationHandle)
2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.ResourceManagement.ResourceManager:ProvideInstance(IInstanceProvider, IResourceLocation, InstantiationParameters)
2023-11-02 10:11:39.515 12968 13673 Error Unity UnityEngine.AddressableAssets.AddressablesImpl:InstantiateAsync(IResourceLocation, InstantiationParameters, Boolean)

 

"Grahphics device is null" 을 잘 살펴봐야하는데, Admob 광고 시청 후 바로 TMP 를 사용해서 그런다고 한다.

두가지 방법이 있는데,

 

1. 광고가 끝난 뒤 코루틴을 이용하여 0.2초 이상의 딜레이를 준 뒤 UI 갱신작업 수행

2. MobileAds를 초기화 할 때 아래 명령문 추가

MobileAds.RaiseAdEventsOnUnityMainThread = true;

 

 

아래는 나의 adMobViewer.Initialize() 

 

 public void Init(AdManager mgr)
    {
        this.mgr = mgr;
        // Initialize the Mobile Ads SDK.
        MobileAds.RaiseAdEventsOnUnityMainThread = true;
        MobileAds.Initialize((initStatus) =>
        {
            Dictionary<string, AdapterStatus> map = initStatus.getAdapterStatusMap();
            foreach (KeyValuePair<string, AdapterStatus> keyValuePair in map)
            {
                string className = keyValuePair.Key;
                AdapterStatus status = keyValuePair.Value;
                switch (status.InitializationState)
                {
                    case AdapterState.NotReady:
                        // The adapter initialization did not complete.
                        Debug.LogWarning("Adapter: " + className + " not ready.");
                        break;
                    case AdapterState.Ready:
                        // The adapter was successfully initialized.
                        Debug.Log("Adapter: " + className + " is initialized.");
                        break;
                }
                LoadRewardedAd();
            }
        });
    }