Unity adMobs Android不显示bannerView

时间:2019-04-30 18:50:24

标签: android unity3d admob 2d-games adbannerview

我正在尝试将AdMobs集成到我的统一2D项目中(游戏是为移动平台设计的。)

在网上搜索并回答之后,我找不到解决我问题的方法。

  • 当我将游戏移植到每个平台时,iOS会运行并显示 横幅视图。

  • Android不显示横幅视图。

  • 我尝试删除并重新导入Google软件包,但仍然 Android不会显示横幅。

我完全按照此链接中的Google教程所述进行了操作。 https://developers.google.com/admob/unity/start

但仍然不能使用 Android不会随广告显示横幅视图(已在2个单独的设备上进行了测试)。 这是我的代码,我在项目的清单和plist处理程序中都添加了appId字符串。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using System;

public class GoogleAdsHandler:MonoBehaviour {

    private BannerView bannerView;

    // Use this for initialization
    void Start () {
#if UNITY_ANDROID
                string appId = Consts.ANDROID_AD_APPID;
#elif UNITY_IPHONE
        string appId = Consts.IOS_AD_APPID;
#else
                string appId = "unexpected_platform";
#endif
        InitilizeAdMob ();
    }

    private void InitilizeAdMob () {
#if UNITY_ANDROID
        string appId = Consts.ANDROID_AD_APPID;
#elif UNITY_IPHONE
        string appId = Consts.IOS_AD_APPID;
#else
        string appId = "unexpected_platform";
#endif
        MobileAds.Initialize (appId);

        this.RequestBanner ();
    }

    private void RequestBanner () {
#if UNITY_ANDROID
        string adUnitId = Consts.ANDROID_BANNER_ID;
#elif UNITY_IPHONE
        string adUnitId = Consts.IOS_BANNER_ID;
#else
            string adUnitId = "unexpected_platform";
#endif
        // Create a 320x50 banner at the top of the screen.
        bannerView = new BannerView (adUnitId, AdSize.Banner, AdPosition.Bottom);
        AdRequest request = new AdRequest.Builder ().Build ();
        bannerView.LoadAd (request);
        bannerView.Show ();
        bannerView.OnAdLoaded += HandleOnAdLoaded;
    }

    public void HandleOnAdLoaded (object sender, EventArgs args) {
        MonoBehaviour.print ("HandleAdLoaded event received");
    }
}

此脚本附加到我的主菜单场景中的游戏对象上。

希望您对此事有所帮助。

最亲切的问候。

罗尼。

2 个答案:

答案 0 :(得分:1)

以下是一些常见原因:

  1. 确保您已使用付款明细更新了AdMob
  2. 确保您在AdMob中创建的广告是横幅广告。
  3. 检查您的AdMob信息中心以查看广告的状态,它们是否处于活动状态?
  4. 验证您使用了正确的广告单元ID。
  5. 将其设置为24小时,广告可能需要一段时间才能在您所在的地区生效

您还可以参考测试ID来检查Google提供的adMOb代码: https://developers.google.com/admob/android/test-ads

答案 1 :(得分:1)

您正在尝试显示添加内容,而不检查广告是否已加载,是否可能没有加载。您应先订阅HandleOnAdLoaded事件,然后再调用bannerView.LoadAd()bannerView.Show()

您的Start方法只是调用InitilizeAdMob,因为您分配的字符串没有传递到任何地方,并且您在InitilizeAdMob中做同样的事情,所以我将像这样重写您的类:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using System;

public class GoogleAdsHandler : MonoBehaviour {

    private BannerView bannerView;

    // Use this for initialization
    void Start () {
       InitilizeAdMob ();
    }

    private void InitilizeAdMob () {
#if UNITY_ANDROID
        string appId = Consts.ANDROID_AD_APPID;
#elif UNITY_IPHONE
        string appId = Consts.IOS_AD_APPID;
#else
        string appId = "unexpected_platform";
#endif
        MobileAds.Initialize (appId);
        this.RequestBanner ();
    }

    private void RequestBanner () {
#if UNITY_ANDROID
        string adUnitId = Consts.ANDROID_BANNER_ID;
#elif UNITY_IPHONE
        string adUnitId = Consts.IOS_BANNER_ID;
#else
        string adUnitId = "unexpected_platform";
#endif
        // Create a 320x50 banner at the top of the screen.
        bannerView = new BannerView (adUnitId, AdSize.Banner, AdPosition.Bottom);
        bannerView.OnAdLoaded += HandleOnAdLoaded;
        AdRequest request = new AdRequest.Builder ().Build ();
        bannerView.LoadAd (request);
    }

    public void HandleOnAdLoaded (object sender, EventArgs args) {
        MonoBehaviour.print ("HandleAdLoaded event received");
        bannerView.Show();
    }
}