web-dev-qa-db-ja.com

MobileAds.initialize(Context、String)は廃止予定です

このようになる前(_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 Mobile Ads 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.
_

インターネット接続のある物理デバイスでは、さらに4つのアダプターが表示されます。

_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のみですか?ほとんどのドキュメントでは、廃止された初期化メソッド(上記に示したものと同様)がまだ使用されているため、これは明確ではありません。

6
Martin Zeitler

Androidプロジェクト でAdMobを使ってみると、アプリケーションIDの部分に答えているようです:

以下に示すようにAndroidManifest.xmlタグを追加して、AdMobアプリIDをアプリの<meta-data>ファイルに追加します。

重要:この手順は、Google Mobile Ads 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は ヨーロッパのユーザーからの同意の要求 にも必要です。

1
Martin Zeitler

代わりに、以下を使用してMobileAdsを初期化します。

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