在使用 R.string.admob_application_id
之前,它看起来是这样的:
MobileAds.initialize(this, getString(R.string.admob_application_id));
MobileAds
方法.initialize(Context context, String applicationCode)
现在已经过时:请使用initialize(Context, OnInitializationCompleteListener)
代替。
初始化Google移动广告SDK。尽早调用此方法可减少会话第一个广告请求的延迟。如果未调用此方法,则第一个广告请求将自动初始化Google移动广告SDK。
MobileAds.Settings也已被弃用。
我尝试过获取每个适配器的InitializationStatus
。
MobileAds.initialize(this, initializationStatus -> {
/* get the adapter status */
Map<String, AdapterStatus> map = initializationStatus.getAdapterStatusMap();
for (Map.Entry<String, AdapterStatus> entry : map.entrySet()) {
AdapterStatus adapterStatus = entry.getValue();
AdapterStatus.State state = adapterStatus.getInitializationState();
Log.d(LOG_TAG, "key = " + entry.getKey() + ", state = " + state.name() + ", desc = " + adapterStatus.getDescription());
}
});
在模拟器上它显示READY
,但是.getDescription()
的信息相当令人困惑:
Google Mobile Ads SDK initialization functionality unavailable for this session.
Ad requests can be made at any time.
在具有互联网连接的物理设备上,它会显示四个以上的适配器:
key = com.google.android.gms.ads.MobileAds, state = READY, desc =
key = com.google.ads.mediation.vungle.VungleMediationAdapter, state = NOT_READY, desc = Failed to create Adapter.
key = com.google.ads.mediation.applovin.AppLovinMediationAdapter, state = NOT_READY, desc = Failed to create Adapter.
key = com.google.ads.mediation.adcolony.AdColonyMediationAdapter, state = NOT_READY, desc = Failed to create Adapter.
key = com.google.ads.mediation.tapjoy.TapjoyMediationAdapter, state = NOT_READY, desc = Failed to create Adapter.
om.google.android.gms.ads.MobileAds
读取READY
,而其他的com.google.ads.mediation.*
读取NOT_READY
和Failed to create Adapter
(没有设置中介,但可以加载测试广告)。
MobileAds.initialize(this);
也可以运行(OnInitializationCompleteListener
是可选的)。
似乎没有R.string.admob_application_id
也可以工作,因此我的实际问题是:
是否仍需要设置R.string.admob_publisher_id
和R.string.admob_application_id
,或者现在只需要广告单元ID?大部分文档仍然使用已弃用的初始化方法(类似上面显示的方法),因此这不太清楚。