我正在尝试将AdMobs集成到我的统一2D项目中(游戏是为移动平台设计的。)
在网上搜索并回答之后,我找不到解决我问题的方法。
当我将游戏移植到每个平台时,iOS会运行并显示 横幅视图。
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");
}
}
此脚本附加到我的主菜单场景中的游戏对象上。
希望您对此事有所帮助。
最亲切的问候。
罗尼。
答案 0 :(得分:1)
以下是一些常见原因:
您还可以参考测试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();
}
}