Unity AdMob 奖励广告正常运行,但在 android 上出现 NullReferenceException

Unity AdMob reward ad runs normally, but gets a NullReferenceException on android

提问人:DenDen 提问时间:10/4/2022 更新时间:10/5/2022 访问量:591

问:

我实现了 Admob 激励广告,它们在 Unity 中完美运行,但在我的 Android 设备上构建和运行游戏时,广告无法投放。

这是 LogCat 错误

这是我运行游戏时似乎卡住的代码WatchAd(int ID)rewardedAd.IsLoaded()

private RewardedAd rewardedAd;
public void Start()
{
    MobileAds.Initialize(HandleInitComplete);
    rewardPopUp.SetActive(false);
    CreateAndLoadRewardedAd();
}
private void HandleInitComplete(GoogleMobileAds.Api.InitializationStatus status) =>
#if UNITY_ANDROID
    appID = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
    appID = "ca-app-pub-3940256099942544/5224354917";
#else
    appID = "Probably Pc";
#endif
public void WatchAd(int ID)
{
    Debug.Log("Ran WatchAD");
    if (rewardedAd.IsLoaded())
    {
        Debug.Log("IsLoaded");
        rewardedAd.Show();
        rewardPopUp.SetActive(true);
        AdType = ID;
    }
    else { 
        CreateAndLoadRewardedAd(); 
        Debug.Log("Can't Load");}
}
public void CreateAndLoadRewardedAd()
{
    rewardedAd = new RewardedAd(appID);

    rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
    rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
    rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;

    AdRequest request = new AdRequest.Builder().Build();
    rewardedAd.LoadAd(request);
}
public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    switch (timesFailed)
    {
        case 0:
            Invoke("CreateAndLoadRewardedAd()", 60);
            break;
        case 1:
            Invoke("CreateAndLoadRewardedAd()", 120);
            break;
        default:
            Invoke("CreateAndLoadRewardedAd()", 240);
            break;
    }
    timesFailed++;
}

我尝试使用测试广告和我自己的 AdMob 广告 ID 执行此操作,并将我的设备添加为测试设备。 当我使用Unity运行它时,没有显示任何错误。

Android unity-game-engine admob nullreferenceexception logcat

评论


答:

0赞 Vionix 10/4/2022 #1

在这一部分中

#if UNITY_ANDROID
    appID = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
    appID = "ca-app-pub-3940256099942544/5224354917";
#else
    appID = "Probably Pc";
#endif

它应该是广告单元 ID,而不是应用 ID。 如果您需要更多帮助,请查看此 Admob Unity 教程

评论

0赞 DenDen 10/4/2022
将其更改为我的广告单元 ID,并将广告设置更改为我的 App ID,但出现相同的错误
0赞 Vionix 10/5/2022
在 Unity 中发布 Admob 设置窗口的更新代码和屏幕截图。只需在 Admob 网站上仔细检查您的 AD 单元 ID 和 App ID。
0赞 DenDen 10/5/2022
虽然变量被命名为 appID,但 ID 本身仍然是正确的,所以错误完全相同,但我确实通过强制解决解决了这个问题。
0赞 DenDen 10/5/2022 #2

通过强制解决解决了我的问题:

外部依赖项管理器> Android Resolver >强制解析> Assets