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.
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 .
Initialisieren Sie MobileAds stattdessen wie folgt:
MobileAds.initialize(this, initializationStatus -> { });