Search Unity

Bug Unity Ads 4.3.0 Cause A lot of ANRs on Android

Discussion in 'Unity Ads & User Acquisition' started by konsordo, Mar 2, 2023.

  1. konsordo

    konsordo

    Joined:
    Jun 25, 2013
    Posts:
    11
    Hello!

    I have some problems with Unity Ads version 4.3.0

    This a stack trace from Google Play ANRs Report:

    Main thread:

    #00 pc 0x00000000000c4ae8 /apex/com.android.runtime/lib64/bionic/libc.so (nanosleep+8)
    #01 pc 0x000000000090f014 /data/app/com.Konsordo.IdleShark-BzO8bkxSF5EMb5duOJ31QQ==/lib/arm64/libil2cpp.so
    #02 pc 0x000000000091b730 /data/app/com.Konsordo.IdleShark-BzO8bkxSF5EMb5duOJ31QQ==/lib/arm64/libil2cpp.so
    #03 pc 0x00000000008d1ae8 /data/app/com.Konsordo.IdleShark-BzO8bkxSF5EMb5duOJ31QQ==/lib/arm64/libil2cpp.so
    #04 pc 0x00000000008fc1ac /data/app/com.Konsordo.IdleShark-BzO8bkxSF5EMb5duOJ31QQ==/lib/arm64/libil2cpp.so
    #05 pc 0x0000000000561740 /data/app/com.Konsordo.IdleShark-BzO8bkxSF5EMb5duOJ31QQ==/lib/arm64/libunity.so
    #06 pc 0x00000000002193d8 /data/app/com.Konsordo.IdleShark-BzO8bkxSF5EMb5duOJ31QQ==/lib/arm64/libunity.so
    #07 pc 0x00000000002192f0 /data/app/com.Konsordo.IdleShark-BzO8bkxSF5EMb5duOJ31QQ==/lib/arm64/libunity.so
    at com.unity3d.player.ReflectionHelper.nativeProxyInvoke (Native method)
    at com.unity3d.player.ReflectionHelper.a (unavailable)
    at com.unity3d.player.ReflectionHelper$1.invoke (unavailable)
    at java.lang.reflect.Proxy.invoke (Proxy.java:1006)
    at com.unity3d.ads.IUnityAdsInitializationListener.onInitializationComplete (IUnityAdsInitializationListener.java)
    at com.unity3d.services.core.properties.d.t (SdkProperties.java:4)
    at com.unity3d.services.core.configuration.CoreModuleConfiguration$b.run (CoreModuleConfiguration.java:1)
    at android.os.Handler.handleCallback (Handler.java:899)
    at android.os.Handler.dispatchMessage (Handler.java:100)
    at android.os.Looper.loop (Looper.java:238)
    at android.app.ActivityThread.main (ActivityThread.java:7835)
    at java.lang.reflect.Method.invoke (Native method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:984)



    As you can see, the main problem in IUnityAdsInitializationListener and onInitializationComplete event. So How Can I fix this problem?


    MY CODE:

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using UnityEngine.Advertisements;
    5. //using Facebook.Unity;
    6. using UnityEngine.UI;
    7. public class UnityAdsManager : MonoBehaviour, IUnityAdsInitializationListener, IUnityAdsLoadListener, IUnityAdsShowListener
    8. {
    9.     public GameAdsManager gameAdsManager;
    10.  
    11.     [SerializeField] string _androidGameId;
    12.     [SerializeField] string _iOSGameId;
    13.     [SerializeField] bool _testMode = true;
    14.     private string _gameId;
    15.  
    16.     [SerializeField] BannerPosition _bannerPosition = BannerPosition.BOTTOM_CENTER;
    17.     //  [SerializeField] Button _showAdButton;
    18.     [SerializeField] string _androidAdUnitId = "Rewarded_Android";
    19.     [SerializeField] string _iOSAdUnitId = "Rewarded_iOS";
    20.     string _adUnitIdReward = null; // This will remain null for unsupported platforms
    21.  
    22.  
    23.     public string rewardedAdID = "RewardedAd";
    24.     public string interstitialAdID = "InterstitialAd";
    25.     public string bannerAd = "Banner";
    26.  
    27.  
    28.   //  public bool bSdkInit;
    29.  
    30.  
    31.     [Header("TIMERS")]
    32.     //TIMERS
    33.     public float rewardedLoadTime;
    34.  
    35.     public float interstitialLoadTime;
    36.  
    37.     public float rewardTimer;
    38.  
    39.     public float interstitialTimer;
    40.  
    41.     //=====================
    42.  
    43.     [Header("LOADED PLACEMENTS")]
    44.  
    45.     public bool bSdkInit;
    46.  
    47.     public bool bIntestitialLoaded;
    48.  
    49.  
    50.     public bool bRewardedLoaded;
    51.  
    52.     public bool bBannerLoaded;
    53.  
    54.  
    55.  
    56.  
    57.     void Awake()
    58.     {
    59.         GameCore.instance.OnBuyNoAds += OnNoAdsMode;
    60.         gameAdsManager.OnShowRewardVideoRequest += ShowRewardedAd;
    61.        gameAdsManager.OnShowInterstitialVideoRequest += ShowInterstitialAd;
    62.  
    63.         if (GameCore.instance.NoAdsMode == false)
    64.             InitializeAds();
    65.     }
    66.  
    67.     public void Start()
    68.     {
    69.        // Advertisement.Banner.SetPosition(_bannerPosition);
    70.     }
    71.  
    72.     public void OnNoAdsMode()
    73.     {
    74.       //  Advertisement.Banner.Hide();
    75.     }
    76.  
    77.     public void InitializeAds()
    78.     {
    79.         _gameId = (Application.platform == RuntimePlatform.IPhonePlayer)
    80.             ? _iOSGameId
    81.             : _androidGameId;
    82.  
    83.         if(Application.platform == RuntimePlatform.IPhonePlayer)
    84.         {
    85.             rewardedAdID = rewardedAdID + "IOS";
    86.         }
    87.         else
    88.         {
    89.             rewardedAdID = rewardedAdID+"Android";
    90.         }
    91.  
    92.         if (Application.platform == RuntimePlatform.IPhonePlayer)
    93.         {
    94.             interstitialAdID = interstitialAdID+"IOS";
    95.         }
    96.         else
    97.         {
    98.             interstitialAdID = interstitialAdID+"Android";
    99.         }
    100.  
    101.         //if (Application.platform == RuntimePlatform.IPhonePlayer)
    102.         //{
    103.         //    bannerAd = bannerAd + "IOS";
    104.         //}
    105.         //else
    106.         //{
    107.         //    bannerAd = bannerAd + "Android";
    108.         //}
    109.  
    110.        
    111.  
    112.         Advertisement.Initialize(_gameId, _testMode, this);
    113.     }
    114.  
    115. public void OnInitializationComplete()
    116.     {
    117.         bSdkInit= true;
    118.         Debug.Log("Unity Ads initialization complete.");
    119.  
    120.         //if (GameCore.instance.NoAdsMode == false)
    121.         //    StartCoroutine(loadBannerWithSmallDelay());
    122.  
    123.  
    124.        // LoadRewardedAd();
    125.        // LoadInterstitialAd();
    126.     }
    127.  
    128.  
     
  2. Unity-Boon

    Unity-Boon

    Unity Technologies

    Joined:
    Jan 18, 2017
    Posts:
    135
    I will suggest you update to the latest Unity Ads SDK as there are some ANRs-related improvements.