我正在尝试将ADMOB集成到我的Unity 2D项目中(游戏是为移动平台设计的(。
在搜索网络并在这里回答后,我找不到解决问题的解决方案。
-
当我将游戏移植到每个平台时,iOS可以工作并显示横幅视图。
-
Android不显示横幅视图。
- 我尝试删除并重新导入Google软件包,但仍在Android不会显示横幅。
我确实在此链接中描述的是Google教程。https://developers.google.com/admob/unity/start
但仍然没有GO Android不会使用AD显示横幅视图(在2个单独的设备上进行了测试(。这是我的代码,我将appid String添加到了项目中的清单和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");
}
}
此脚本连接到我的主菜单场景上的游戏对象。
很感谢有关此事的帮助。
最亲切的问候。
罗尼。
您正在尝试显示添加的情况,而无需检查广告是否已加载,而且可能不是。在调用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();
}
}
这是一些常见原因:
- 确保您已更新了付款详细信息的Admob
- 确保您在ADMOB中创建的广告是横幅广告。
- 检查您的Admob仪表板以查看您的广告状态,它们是否活动?
- 验证您使用了正确的广告单元ID。
- 给它24小时,广告在您的地区活跃 可能需要时间
您还可以参考测试ID以检查您的ADMOB代码,该代码由Google提供:https://developers.google.com/admob/android/test-ads