简体   繁体   English

unity AdMob 打赏广告正常运行,但在android上得到NullReferenceException

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

I implemented Admob rewarded ads and they work perfectly in unity, but when building and running the game on my Android the ad doesn't run.我实施了 Admob 奖励广告,它们完美地统一工作,但在我的 Android 上构建和运行游戏时,广告没有运行。

This is the LogCat error这是 LogCat 错误

This is the code when I run the WatchAd(int ID) the game seems to get stuck on rewardedAd.IsLoaded()这是我运行WatchAd(int ID)时的代码,游戏似乎卡在了 rewardedAd.IsLoaded( 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++;
}

I Have tried doing this with test ads and my own AdMob ad IDs, also added my device as a test device.我已经尝试使用测试广告和我自己的 AdMob 广告 ID 来执行此操作,还将我的设备添加为测试设备。 there are no errors displayed when i run it with unity.当我统一运行它时没有显示任何错误。

In this part在这部分

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

It should be should Ad unit ID not App ID.它应该是广告单元 ID 而不是 App ID。 Check this Admob Unity tutorial if you need more help.如果您需要更多帮助,请查看此Admob Unity 教程

Fixed my issue by Force Resolving:通过强制解决解决了我的问题:

Assets > External Dependency Manager > Android Resolver > Force Resolve资产 > 外部依赖管理器 > Android 解析器 > 强制解析

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM