【问题标题】:Unity adMobs Android not displaying bannerViewUnity adMobs Android不显示bannerView
【发布时间】:2019-04-30 18:50:23
【问题描述】:

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

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

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

  • Android 不显示横幅视图。

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

我完全按照这个链接中的谷歌教程描述的做了。 https://developers.google.com/admob/unity/start

但还是不行Android 不会在广告中显示横幅视图(在 2 个单独的设备上测试)。 这是我的代码,我将 appId 字符串添加到项目中的清单和 plist 处理程序中。

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");
    }
}

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

非常感谢您对此事的帮助。

最诚挚的问候。

罗尼。

【问题讨论】:

    标签: android unity3d admob 2d-games adbannerview


    【解决方案1】:

    您试图在不检查广告是否已加载且可能未加载的情况下显示添加。在调用bannerView.LoadAd()bannerView.Show() 之前,您应该订阅HandleOnAdLoaded 事件。

    您的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();
        }
    }
    

    【讨论】:

    • 问候所有人都尝试了上面提供的答案以及包括重新安装统一包和Android工作室在内的所有事情,如果有人知道如何解决这个问题,它将像iOS之前一样非常感激Android 不工作
    • 在脚本中更改您的 android appId 和 adUnitId 以测试 admob 提供的 id:“ca-app-pub-3940256099942544~3347511713”和“ca-app-pub-3940256099942544/6300978111”。如果您收到测试横幅广告,请告诉我。
    • 嗨。您必须为生产提供错误的 android 应用程序和 android 横幅 ID。确保从 admob 控制台复制正确的 id。小心真实的广告,如果您想使用真实的生产 ID,您需要将您的设备设置为测试设备,否则您将面临帐户被屏蔽的风险。你可以在这里阅读更多:enable test devices
    • 你的应用发布了吗?我不确定,但也许 google 正在使用您的 google 帐户在您的设备上阻止“实时”广告。当应用程序发布时,我会尝试使用不同的设备、不同的帐户和不同的网络。其他一切似乎都设置正确。您可以使用 OnAdFailedToLoad 和 adb logcat 检查错误。
    • 好吧,问题就像 Dave 说应用程序需要首先在 Google Play 商店中发布我发布了应用程序(在导出 APK 之前,我从 Unity Assets 运行 Android rsolver -> Play service Resolve -> Android Resolver -> Force resolver)然后导出一个上传到 Google Play 商店的 APK,现在广告出现了,谢谢大家的帮助。
    【解决方案2】:

    以下是一些常见原因:

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

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

    【讨论】:

    • 我已经更新了我的答案,请参考链接以检查您的 AdMob 代码和测试 ID
    • 您好,感谢您的回复,我尝试了以上所有方法仍然没有成功,已经快 2 周了,就像我在 iOS 上说的那样,它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多