3

我在我的 android 游戏上使用 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 面板中配置了广告。有人对我能做些什么来解决这个问题有任何想法吗?

4

3 回答 3

0

你的代码是错误的。您应该将请求广告和展示广告分成两个功能。在 Start() 函数中,您调用请求函数和显示广告函数应该挂接到您的按钮中。这是因为当您请求广告时,需要一些时间才能为您提供广告。

于 2018-05-22T02:23:53.507 回答
0

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

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

尝试使用示例ad UNIT Id。希望它有效。

于 2018-02-04T10:01:57.433 回答
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;
    }
于 2018-10-04T17:39:22.170 回答