MobileAds.initialize(Context, String) 已弃用

Mar*_*ler 26 java android admob deprecation-warning

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

MobileAds.initialize(this, getString(R.string.admob_application_id));
Run Code Online (Sandbox Code Playgroud)

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());
    }
});
Run Code Online (Sandbox Code Playgroud)

在模拟器上它说READY,但.getDescription()有一个相当混乱的信息:

Google Mobile Ads SDK initialization functionality unavailable for this session.
Ad requests can be made at any time.
Run Code Online (Sandbox Code Playgroud)

在具有互联网连接的物理设备上,它显示了另外四个适配器:

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.
Run Code Online (Sandbox Code Playgroud)

om.google.android.gms.ads.MobileAds读取READY,另一个com.google.ads.mediation.*读取NOT_READYFailed to create Adapter(没有设置中介,但它可以加载测试广告)。

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


它似乎没有R.string.admob_application_id,因此我的实际问题是:

在设置R.string.admob_publisher_idR.string.admob_application_id仍然需要-或者是它只是广告单元ID呢?大多数文档仍然使用已弃用的初始化方法(与上面显示的方法类似),因此不清楚。

Pab*_*nso 13

使用以下内容初始化 MobileAds:

MobileAds.initialize(this, initializationStatus -> { });
Run Code Online (Sandbox Code Playgroud)


Mar*_*ler 11

在您的 Android 项目中开始使用 AdMob似乎回答了应用程序 ID 部分:

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

重要提示:从 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>
Run Code Online (Sandbox Code Playgroud)

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