官网文档(前提:注册GoogleAdMob账号、确保能连海外网络)
1、一定要按照文档流程走,一步都不能少!特别是类似
2、SDK初始化方法区别:
...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
public void Start()
{
//使用中介广告的初始化方式,无需指定APPID
MobileAds.Initialize(initStatus => { });
//非中介广告的初始化形式,以下id是2019年11月9日官网提供的横幅Banner广告测试ID(示例ID)
/*#if UNITY_ANDROID
string appId = "ca-app-pub-3940256099942544~3347511713";
#elif UNITY_IPHONE
string appId = "ca-app-pub-3940256099942544~1458002511";
#else
string appId = "unexpected_platform";
#endif */
//MobileAds.Initialize(appId);
}
}
3、以横幅广告为例:请求、打开、关闭
//横幅对象
GoogleMobileAds.Api.BannerView bannerView;
//横幅请求
public void SendRequest()
{
//adUnitId是官网提供的测试广告ID
// Create a 320x50 banner at the top of the screen.
bannerView = new GoogleMobileAds.Api.BannerView(adUnitId, GoogleMobileAds.Api.AdSize.Banner, GoogleMobileAds.Api.AdPosition.Top);
// Create an empty ad request.
//GoogleMobileAds.Api.AdRequest request = new GoogleMobileAds.Api.AdRequest.Builder().AddTestDevice("D2274BD43A961E608AB96AF29D9E6239").Build();
//上面的初始化方式是加了测试设备ID的,D2274BD43A961E608AB96AF29D9E6239是测试设备ID,
//使用它能让你在没有通过审核时就能使用正式广告ID测试,设备测试ID是通过在AS模拟器上进行测试横幅广告
//(此时广告ID用的还是官网提供的测试广告ID)在logcat上的打印输出得到的。具体在官网文档说明。
//请求构建(不加设备测试ID的构建方式)
GoogleMobileAds.Api.AdRequest request = new GoogleMobileAds.Api.AdRequest.Builder().Build();//在模拟器上,广告ID不需要测试ID【测试广告ID使用官方提供的】
//发起请求
bannerView.LoadAd(request);
}
//显示横幅
public void Show(){
bannerView.Show();
}
//隐藏横幅
public void Hide(){
bannerView.Hide();
}
2022年10月9日更新补充说明:测试广告ID官方会提供,下面链接文档里就会有说明,例如:
注意:设备测试ID获取方法https://developers.google.com/admob/unity/test-ads?hl=zh-CN#enable_test_devices
简单来说,在SDK初始化处指定了你的APPID(即步骤2的非中介方式初始化)后,进行使用步骤3的测试代码(必须要用官网提供的横幅广告测试ID,以及不需要指定设备测试ID的请求构建方式)进行广告请求步骤,最后调用广告Show方法显示出广告.
2022年10月9日更新:已经不需要显式指定APPID初始化。
观察发现,横幅广告上会有一个标签"Test Ad"/"测试广告"表示你目前是测试模式,此时Google Admob后台是不会进行记录此广告的请求报告单的!
只有在Google Admob应用关联Google Play应用后,使用正式广告ID才会有广告请求报告单在Google Admob后台上。
极其重要,测试正式广告时安卓手机必须要有Google Play Service 即谷歌服务,不然会报错!
这个时候我们就能在Android Studio的logcat窗口:
11-09 19:17:38.289 9168-9168/com.Milk.GoogleAdmobSdk I/Ads: Use AdRequest.Builder.addTestDevice("D2274BD43A961E608AB96AF29D9E6239") to get test ads on this device.
其中,D2274BD43A961E608AB96AF29D9E6239就是设备测试ID!
注意:你要准备好一条数据线和安卓手机进行连接到Android Studio进行测试,才能拿到设备测试ID,不然是无法查找到的
其他报错问题记录:
1、 java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener
解决方法:等待Resolve窗口执行下载com.google.android相关的包文件即可
(这个就是Resolve窗口)
打开方式:
这个东西必须要连VPN去下载的,其实上面所有操作都必须在能连海外网络前提下进行,不然可能是有很多文件无法下载完整,导致的问题
2022年1月13日补充说明:
必须要持有这个AndroidManifest
这里填写的广告ID是你创建的广告ID 而不是测试的。
2022年10月9日更新:填写的是广告APPID
同理这里也是你创建的广告ID。
2022年10月9日更新:这2个也是填写广告APPID
添加测试广告ID代码案例,在初始化ads之前进行。
List<string> deviceIds = new List<string>();
deviceIds.Add("85******************************67"); //测试设备ID
RequestConfiguration requestConfiguration = new RequestConfiguration
.Builder()
.SetTestDeviceIds(deviceIds)//添加测试ID,正式包需去除
.build();
//将 requestConfiguration 设置为 MobileAds(全局)。
MobileAds.SetRequestConfiguration(requestConfiguration);
//初始化
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize(initStatus => { });
85******************************67:测试设备ID,它在Debug模式打包出去的apk里执行请求广告就会打印出来,在上面已经说到。
测试广告必须在debug模式下打包测试,release调试模式是无法正常测试的。