web-dev-qa-db-fra.com

MobileAds.initialize (Context, String) est obsolète

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.

6
Martin Zeitler

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 .

1
Martin Zeitler

Initialisez plutôt MobileAds avec les éléments suivants:

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