webentwicklung-frage-antwort-db.com.de

MobileAds.initialize (Context, String) ist veraltet

Bevor es so aussah (vorbei R.string.admob_application_id):

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

MobileAds Methode .initialize(Context context, String applicationCode) lautet jetzt:

Diese Methode ist veraltet. Verwenden Sie stattdessen initialize(Context, OnInitializationCompleteListener) .

Was lautet:

Initialisiert das Google Mobile Ads SDK. Rufen Sie diese Methode so früh wie möglich auf, um die Latenz bei der ersten Anzeigenanforderung der Sitzung zu verringern. Wenn diese Methode nicht aufgerufen wird, initialisiert die erste Anzeigenanforderung automatisch das Google Mobile Ads SDK.

MobileAds.Settings war ebenfalls veraltet.


Was ich bisher versucht habe, ist das InitializationStatus pro Adapter zu bekommen:

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());
    }
});

Auf einem Emulator steht READY, aber .getDescription() hat eine ziemlich verwirrende Meldung:

Google Mobile Ads SDK initialization functionality unavailable for this session.
Ad requests can be made at any time.

Auf einem physischen Gerät mit Internetverbindung werden vier weitere Adapter angezeigt:

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 Liest READY, die anderen com.google.ads.mediation.* Lesen NOT_READY Und Failed to create Adapter (Es ist kein Mediation eingerichtet , aber es kann Testanzeigen laden).

MobileAds.initialize(this); funktioniert auch (OnInitializationCompleteListener ist optional).


Es scheint ohne den R.string.admob_application_id Zu funktionieren, daher lautet meine eigentliche Frage:

Ist die Einstellung R.string.admob_publisher_id Und R.string.admob_application_id Noch erforderlich - oder ist es jetzt nur die Anzeigenblock-ID? Der Großteil der Dokumentation verwendet immer noch die veraltete Initialisierungsmethode (wie die oben gezeigte), daher ist dies nicht klar.

6
Martin Zeitler

Erste Schritte mit AdMob in Ihrem Android Projekt scheint den Teil der Anwendungs-ID zu beantworten:

Fügen Sie Ihre AdMob-App-ID zu AndroidManifest.xml Datei durch Hinzufügen der <meta-data> tag wie unten gezeigt.

Wichtig: Dieser Schritt ist ab Google Mobile Ads SDK v17.0.0 erforderlich. Wenn Sie dies nicht hinzufügen <meta-data> Tag, Ihre App stürzt mit der Meldung ab: "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>

Die Herausgeber-ID ist weiterhin erforderlich für Einverständniserklärung europäischer Benutzer .

1
Martin Zeitler

Initialisieren Sie MobileAds stattdessen wie folgt:

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