Migration du SDK

Cette page couvre les migrations pour les versions actuelles et précédentes.

Migrer vers SDK v21

To avoid potential build failures with version 21.0.0 of the Google Mobile Ads SDK (slated for an early 2022 release), follow the checks and guidelines introduced in this guide.

Update minSdkVersion to 19 or higher

Starting from version 21.0.0, the Google Mobile Ads SDK requires all apps to be on a minimum Android API level 19 to run. To adjust the API level, change the value of minSdkVersion in your app’s build file to 19 or higher.

Enforce strict nullability

In preparation for enforcing strict nullability, @NonNull annotations are added in all the APIs that previously did not explicitly define nullability.

This change may break the Kotlin apps and apps that use Java null checking frameworks if there are null safety violations and did not previously handle null values in a safe way (see the Kotlin documentation on Null-safety ).

Removal of addNetworkExtras() method

The addNetworkExtras() method that passes extra parameters as a NetworkExtras instance to a specific ad network adapter was deprecated in SDK version 20.3.0, and will be removed in version 21.0.0. Use the addNetworkExtrasBundle() method from the same AdRequest.Builder() class instead.

Custom event interfaces deprecation

Custom events enable publishers using AdMob mediation to add waterfall mediation for an ad network that isn't one of AdMob's supported ad networks.

All the custom event interfaces are deprecated in favor of the Adapter class and MediationAdLoadCallback interface.

The table below lists the corresponding class or interface that should be used for each custom event interface starting from version 21.0.0:

v20.0.0 Interfaces v21.0.0 Class/ Interface
CustomEvent Adapter
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adapter, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Migrer vers SDK v20

Il y a de nombreux changements de rupture à venir dans la version 20.0.0. La version 19.7.0 a introduit de nombreuses nouvelles API et a rendu obsolète ou renommé de nombreuses classes en préparation de la version 20.0.0. Ce guide met en lumière les principaux changements apportés à la version 19.7.0 ainsi que les nouveautés de la version 20.0.0 (début 2021).

Mises à jour de l'API au format plein écran

À partir de la version 20.0.0, les formats d'annonces interstitielles, avec récompense, interstitielles avec récompense et App Open sont standardisés pour suivre une conception d'API cohérente.

Toutes les API au format plein écran utilisent les principes suivants :

  • Une méthode de charge statique
  • Un rappel de charge ou un mécanisme de gestionnaire similaire
  • Dépendance à la classe FullScreenContentCallback pour les rappels de présentation

Suppression de l'ancienne API RewardedVideoAd

La nouvelle API RewardedAd a été introduite pour la première fois en mars 2019 et est l'API récompensée préférée depuis plus de 18 mois. Il a eu plus d'améliorations par rapport à l'ancienne API RewardedVideoAd , y compris la possibilité de charger plus d'une publicité récompensée à la fois.

L'ancienne API RewardedVideoAd est supprimée dans la version 20.0.0 du SDK.

Abandon des bannières intelligentes au profit des bannières adaptatives

Les bannières publicitaires intelligentes sont obsolètes au profit des bannières publicitaires adaptatives . Les bannières adaptatives offrent des performances supérieures et une plus grande flexibilité dans la définition de la largeur des annonces. Si vous préférez continuer à utiliser des bannières pleine largeur, cela peut toujours être fait à l'aide de bannières adaptatives, comme indiqué dans l'extrait de code suivant :

Java

public class MyActivity extends AppCompatActivity {
  ...
  private AdSize getFullWidthAdaptiveSize() {
    Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics();
    display.getMetrics(outMetrics);

    float widthPixels = outMetrics.widthPixels;
    float density = outMetrics.density;

    int adWidth = (int) (widthPixels / density);
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
  }
}

Kotlin

class MyActivity : AppCompatActivity() {
  ...
  private val adaptiveAdSize: AdSize
    get() {
      val display = windowManager.defaultDisplay
      val outMetrics = DisplayMetrics()
      display.getMetrics(outMetrics)

      val density = outMetrics.density

      var adWidthPixels = ad_view_container.width.toFloat()
      if (adWidthPixels == 0f) {
        adWidthPixels = outMetrics.widthPixels.toFloat()
      }

      val adWidth = (adWidthPixels / density).toInt()
      return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
    }
}

Quitter la suppression du rappel d'application

Le rappel onAdLeftApplication pour tous les formats d'annonces a été supprimé au profit de ProcessLifecycleOwner . L'utilisation d'une API au niveau du système d'exploitation vous avertit chaque fois que les utilisateurs quittent votre application, que cela soit dû ou non à une interaction publicitaire.

Notez que le rappel onAdLeftApplication n'a jamais été conçu pour être un gestionnaire de clics publicitaires, et s'appuyer sur ce rappel pour signaler les clics n'a pas produit une métrique précise. Par exemple, un clic sur l'icône AdChoices qui a lancé un navigateur externe a appelé le rappel mais n'a pas compté comme un clic.

Renommer les classes

Le tableau ci-dessous répertorie les noms de classe spécifiques qui ont été modifiés ou supprimés. En résumé:

  • La plupart des classes liées à UnifiedNativeAd ont été renommées NativeAd .
  • Les classes et vues MobileAds.Settings , NativeExpressAdView , NativeAppInstallAd , NativeContentAd et InstreamAd ont été supprimées.
  • Toutes les classes avec le préfixe Publisher ont été remplacées par un préfixe AdManager .
  • Le nom du package InterstitialAd a changé.
19.5.0 Classe 20.0.0 Classe
com.google.android.gms.ads. com.google.android.gms.ads.
récompense.RewardedVideoAd récompense.RewardedAd
récompense.RewardedVideoAdListener recompense.RewardedAdLoadCallback et FullScreenContentCallback
récompense.RewardItem récompense.RewardItem
recompense.RewardedAdCallback OnUserEarnedRewardListenerOnUserEarnedRewardListener
formats.UnifiedNativeAdView nativead.NativeAdView
formats.UnifiedNativeAd nativead.NativeAd
formats.UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
formats.AdChoicesView nativead.AdChoicesView
formats.NativeAd.AdChoicesInfo nativead.NativeAd.AdChoicesInfo
formats.MediaView nativead.MediaView
formats.NativeAdViewHolder nativead.NativeAdViewHolder
formats.NativeAdOptions nativead.NativeAdOptions
formats.NativeCustomTemplateAd nativead.NativeCustomFormatAd
formats.NativeCustomTemplateAd .OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd .OnCustomFormatAdLoadedListener
MobileAds.Paramètres Supprimé
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
Annonce interstitielle interstitial.InterstitialAd
NativeExpressAdView Supprimé
instream.InstreamAd Supprimé
médiation.admob.AdMobExtras Supprimé
Corrélateur Supprimé
search.SearchAdRequest Supprimé
Interface AdRequest.TagForUnderAgeOfConsent Supprimé
Interface AdRequest.MaxAdContentRating Supprimé
formats.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
médiation.NativeAppInstallAdMapper médiation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
médiation.NativeContentAdMapper médiation.UnifiedNativeAdMapper

Méthodes supprimées/remplacées

Le tableau ci-dessous répertorie les modifications spécifiques apportées à la version 20.0.0. En résumé:

  • Les méthodes d'initialisation obsolètes ont été supprimées de la classe MobileAds.
  • Certaines méthodes de la classe AdRequest.Builder() ont été supprimées ou déplacées vers la classe RequestConfiguration .
  • Les API RewardedAd et InterstitialAd ont été mises à jour pour s'aligner sur tous les formats plein écran.
  • Les fonctionnalités de corrélation ont été supprimées.
Classer API v19.5.0 API v20.0.0 Remarques
Taille de l'annonce getPortraitBanner AdSizeWithWidth() getPortraitAnchored AdaptiveBannerAdSize()
getLandscapeBanner AdSizeWithWidth() getLandscapeAnchored AdaptiveBannerAdSize()
getCurrentOrientation BannerAdSizeWithWidth() getCurrentOrientationAnchored AdaptiveBannerAdSize()
MobileAds initialiser (contexte, chaîne) MobileAds.initialize(Context, OnInitializationComplete Listener) L'ID d'application est désormais défini dans AndroidManifest.xml.
initialize(Context, String, MobileAds.Settings) initialize(Context, OnInitializationComplete Listener) La classe Settings est obsolète.
getRewardedVideo AdInstance() Supprimé Utilisez plutôt l'API RewardedAd.
AdListener onAdFailedToLoad(entier) Échec du chargement de l'annonce (erreur de chargement de l'annonce)
onAdLeftApplication() Supprimé Les formats d'annonces plein écran utilisent FullscreenContentCallback à la place de AdListener, et il n'existe pas de méthode équivalente sur FullscreenContentCallback. La méthode a été supprimée de AdListener.
Contrôleur vidéo getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() Supprimé
obtenirAnniversaire() Supprimé
getNetworkExtras() Supprimé
setManualImpressions Enabled() Supprimé
mise à jourCorrélateur() Supprimé Voir Filtrage du contenu des annonces .
AdRequest.Builder setAnniversaire() Supprimé
setGender() Supprimé
setIsDesignedForFamilies() Supprimé Voir guide .
addTestDevice() DemandeConfiguration .Builder .setTestDeviceIds() Voir Activation des annonces test .
tagForChildDirectedTreatment() RequestConfiguration .Builder.setTagFor ChildDirectedTreatment() Voir Filtrage du contenu des annonces .
setTagFor UnderAgeOfConsent() RequestConfiguration .Builder.setTagFor UnderAgeOfConsent()
setMaxAdContentRating() DemandeConfiguration .Builder .setMaxAdContentRating()
AdView getMediationAdapter ClassName() ResponseInfo .getMediationAdapter ClassName() Un objet ResponseInfo est désormais disponible via la méthode AdView getResponseInfo().
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
Annonce récompensée loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) RewardedAd utilise désormais la même approche de chargement statique que les autres formats plein écran.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load (contexte, chaîne, AdManagerAdRequest, RewardedAdLoadCallback)
est chargé() Supprimé Le rappel de la méthode de chargement statique fournit une annonce déjà chargée.
show(Activity, RewardedAdCallback) show(Activity, OnUserEarnedRewardListener) Cette méthode d'affichage adhère à l'approche plus large du format plein écran.
AdLoadCallback récompensé onRewardedAd FailedToLoad(entier) Échec du chargement de l'annonce (erreur de chargement de l'annonce)
Échec du chargement de l'annonce récompensée (erreur de chargement de l'annonce) Échec du chargement de l'annonce (erreur de chargement de l'annonce)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAd FailedToLoad(entier) Échec du chargement de l'annonce (erreur de chargement de l'annonce)
Échec du chargement de l'annonce ouverte sur l'application (erreur de chargement de l'annonce) Échec du chargement de l'annonce (erreur de chargement de l'annonce)
onAppOpenAd chargé(AppOpenAd) onAdLoaded(AppOpenAd)
Rappel RewardedInterstitialAdLoad onRewardedInterstitialAd FailedToLoad(int) Échec du chargement de l'annonce (erreur de chargement de l'annonce)
onRewardedInterstitialAd FailedToLoad(LoadAdError) Échec du chargement de l'annonce (erreur de chargement de l'annonce)
onRewardedInterstitialAd Loaded(RewardedInterstitialAd) onAd Loaded (RewardedInterstitialAd)
InterstitialAd nouveau InterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd utilise désormais la même approche de chargement statique que les autres formats plein écran.
setAdListener()
Demande d'annonce DynamicHeightSearch getNetworkExtras() Supprimé La classe NetworkExtras est obsolète.
AdLoader forContentAd() Supprimé
forAppInstallAd() Supprimé
avecCorrélateur() Supprimé
getMediationAdapter ClassName() Supprimé