MobileAds.initialize(Context, String) 已弃用

2022-09-01 14:42:17

在它看起来像这样之前(通过):R.string.admob_application_id

MobileAds.initialize(this, getString(R.string.admob_application_id));

MobileAds 方法现在显示为:.initialize(Context context, String applicationCode)

此方法已弃用。请改用 initialize(Context, OnInitializationCompleteListener)。

内容如下:

初始化 Google Mobile Ads SDK。尽早调用此方法,以减少会话的第一个广告请求的延迟。如果未调用此方法,则第一个广告请求会自动初始化 Google 移动广告 SDK。

MobileAds.Settings也被弃用。


到目前为止,我尝试的是获取每个适配器的初始化状态

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读取 ,另一个读取和(没有设置中介,但它可以加载测试广告)。READYcom.google.ads.mediation.*NOT_READYFailed to create Adapter

MobileAds.initialize(this);也有效(可选)。OnInitializationCompleteListener


它似乎在没有 的情况下工作,因此我的实际问题是:R.string.admob_application_id

设置是否仍为必填项 - 或者现在只是广告单元 ID?大多数文档仍然使用已弃用的初始化方法(类似于上面显示的方法),因此这并不清楚。R.string.admob_publisher_idR.string.admob_application_id


答案 1

在您的 Android 项目中开始使用 AdMob 似乎可以回答应用 ID 部分的问题:

通过添加代码,将您的 AdMob 应用 ID 添加到您的应用文件中,如下所示。AndroidManifest.xml<meta-data>

重要提示:从 Google 移动广告 SDK v17.0.0 开始,此步骤是必需的。如果不添加此标记,你的应用将崩溃并显示以下消息:”<meta-data>The Google Mobile Ads SDK was initialized incorrectly."

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

请求欧洲用户的同意仍然需要发布商 ID。


答案 2

改为使用以下方法初始化 MobileAds:

MobileAds.initialize(this, initializationStatus -> { });

推荐