Avant, cela ressemblait à ceci (en passant R.string.admob_application_id
):
MobileAds.initialize(this, getString(R.string.admob_application_id));
MobileAds
method .initialize(Context context, String applicationCode)
lit maintenant:
Cette méthode est obsolète. Utilisez plutôt
initialize(Context, OnInitializationCompleteListener)
.
Qui lit:
Initialise le SDK Google Mobile Ads. Appelez cette méthode le plus tôt possible pour réduire la latence lors de la première demande d'annonce de la session. Si cette méthode n'est pas appelée, la première demande d'annonce initialise automatiquement le SDK Google Mobile Ads.
MobileAds.Settings était également obsolète.
Ce que j'ai essayé jusqu'à présent, c'est d'obtenir le InitializationStatus
par adaptateur:
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());
}
});
Sur un émulateur, il dit READY
, mais .getDescription()
a un message plutôt déroutant:
Google Mobile Ads SDK initialization functionality unavailable for this session.
Ad requests can be made at any time.
Sur un appareil physique avec une connexion Internet, il affiche quatre autres adaptateurs:
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
Lit READY
, l'autre com.google.ads.mediation.*
Lit NOT_READY
Et Failed to create Adapter
(Il n'y a pas de médiation configuré , mais il peut charger des annonces de test).
MobileAds.initialize(this);
fonctionne également (OnInitializationCompleteListener
est facultatif).
Cela semble fonctionner sans le R.string.admob_application_id
, Donc ma vraie question est:
Les paramètres R.string.admob_publisher_id
Et R.string.admob_application_id
Sont-ils toujours requis, ou s'agit-il uniquement de l'identifiant du bloc d'annonces? La plupart de la documentation utilise toujours la méthode d'initialisation obsolète (semblable à celle illustrée ci-dessus), ce n'est donc pas clair.
Premiers pas avec AdMob dans votre Android project semble répondre à la partie ID d'application:
Ajoutez votre identifiant d'application AdMob à
AndroidManifest.xml
en ajoutant le<meta-data>
comme indiqué ci-dessous.Important: cette étape est requise à partir de la version 17.0.0 du SDK Google Mobile Ads. Si vous n'ajoutez pas cela
<meta-data>
, votre application plantera avec le message: "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>
Et l'identifiant de l'éditeur est toujours requis pour Demande de consentement des utilisateurs européens .
Initialisez plutôt MobileAds avec les éléments suivants:
MobileAds.initialize(this, initializationStatus -> { });