Admob Unity奖励视频无法正常工作。

3

我之前在我的安卓游戏中使用Unity广告,一切都运行得很好,但有些设备上Unity广告有时不会显示。因此,我想尝试使用Admob激励视频来看是否能获得更好的性能。这是我用于Admob的代码:

 public void RequestRewardBasedVideo()
    {
#if UNITY_EDITOR
        string adUnitId = "unused";
#elif UNITY_ANDROID
        string adUnitId = "ca-app-pub-243186545632812xxxxxxxxxxxx";
#elif UNITY_IPHONE
        string adUnitId = "unused";
#else
        string adUnitId = "unexpected_platform";
#endif

        RewardBasedVideoAd rewardBasedVideo = RewardBasedVideoAd.Instance;

        AdRequest request = new AdRequest.Builder().Build();
        rewardBasedVideo.LoadAd(request, adUnitId);
        showAdvertisment(rewardBasedVideo);
    }

    private void showAdvertisment(RewardBasedVideoAd rewardBasedVideo)
    {
        if (rewardBasedVideo.IsLoaded())
        {

            rewardBasedVideo.Show();
            rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        }


    }
    public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        //reward 
    }

我将RequestRewardBasedVideo()分配给一个按钮,但问题是视频没有显示!我认为我走对了路,因为当我点击按钮时,控制台记录:

Dummy .ctor
Dummy CreateRewardBasedVideoAd
Dummy LoadAd
Dummy IsLoaded
Dummy ShowRewardBasedVideoAd

我已经尝试将应用程序放在我的Android设备上,并导入了Unity的Google Admob包,还在Admob面板中配置了广告。有没有什么想法可以解决这个问题?


我也有同样的问题,我的输出与你完全相同,什么也没有显示出来。 - Big Money
我也卡在这里了。 - pewpew
#metoo。有人成功解决了吗? - Yehuda Shapira
3个回答

0

你的代码有问题。你应该将请求广告和展示广告拆分成两个函数。在 Start() 函数中,你调用请求函数,而展示广告函数应该挂接到你的按钮上。这是因为当你请求广告时,它需要一些时间才能为你提供可用的广告。


0

这可能是由于当前没有奖励视频或广告视频可用。尝试使用测试广告进行测试。在请求代码中包括测试设备ID,例如:

 AdRequest request = new AdRequest.Builder()
                         .AddTestDevice("34343")
                         .Build();

尝试使用示例广告单元ID。希望它能正常工作。


0
如果视频没有加载怎么办?你需要处理这种情况,监听加载事件,然后显示。
    if (rewardBasedVideo.IsLoaded())
        {

            rewardBasedVideo.Show();
            rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        }else{
             rewardBasedVideo.OnAdLoaded += HandleVideoLoaded;
}



public void HandleVideoLoaded(object sender, Reward args)
{
     rewardBasedVideo.Show();
            rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
}


 public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
       rewardBasedVideo.OnAdRewarded -= HandleRewardBasedVideoRewarded;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接