Migration du SDK

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

Migrer vers SDK v21

Pour éviter les échecs de compilation potentiels avec la version 21.0.0 du SDK Google Mobile Ads (prévue pour une version début 2022), suivez les vérifications et les consignes présentées dans ce guide.

Mettre à jour minSdkVersion vers 19 ou supérieur

À partir de la version 21.0.0, le SDK Google Mobile Ads exige que toutes les applications soient au niveau 19 minimum de l'API Android pour s'exécuter. Pour ajuster le niveau d'API, remplacez la valeur de minSdkVersion dans le fichier de build de votre application par 19 ou plus.

Appliquer la nullabilité stricte

En préparation de l'application de la nullabilité stricte, des annotations @NonNull sont ajoutées dans toutes les API qui ne définissaient pas explicitement la nullabilité auparavant.

Cette modification peut casser les applications Kotlin et les applications qui utilisent des frameworks de vérification Java null s'il y a des violations de sécurité null et qu'elles ne géraient pas auparavant les valeurs null de manière sûre (voir la documentation Kotlin sur Null-safety ).

Suppression de la méthode addNetworkExtras()

La méthode addNetworkExtras() qui transmet des paramètres supplémentaires en tant NetworkExtras à un adaptateur de réseau publicitaire spécifique a été dépréciée dans la version 20.3.0 du SDK et sera supprimée dans la version 21.0.0. Utilisez plutôt la méthode addNetworkExtrasBundle() de la même classe AdRequest.Builder .

Suppression des méthodes de localisation

Les méthodes de localisation suivantes seront supprimées dans la version 21.0.0 :

  • La setLocation(Location location) de la classe AdRequest.Builder qui définit l'emplacement de l'utilisateur à des fins de ciblage de la médiation.
  • La méthode getLocation() de la classe AdRequest qui renvoie les informations de ciblage géographique de l'utilisateur précédemment transmises à la setLocation(Location location) .
  • La méthode getLocation() de la classe MediationAdConfiguration qui renvoie l'emplacement de l'utilisateur, s'il est défini par AdRequest .

Les données de localisation ne sont pas utilisées par Google pour cibler les annonces. Vous devez utiliser des API tierces pour fournir les informations aux réseaux publicitaires tiers si nécessaire.

Abandon des interfaces d'événements personnalisées

Les événements personnalisés permettent aux éditeurs utilisant la médiation AdMobd'ajouter une médiation en cascade pour un réseau publicitaire qui ne fait pas partie des réseaux publicitaires pris en charge parAdMob.

Toutes les interfaces d'événements personnalisées sont obsolètes au profit de la classe Adapter et de l'interface MediationAdLoadCallback .

Le tableau ci-dessous répertorie la classe ou l'interface correspondante qui doit être utilisée pour chaque interface d'événement personnalisée à partir de la version 21.0.0 :

Interface v20.0.0 v21.0.0 Classe/Interface
Événement personnalisé Adaptateur
CustomEventBanner
CustomEventInterstitiel
CustomEventNative
CustomEventBannerListenerCustomEventBannerListener Adaptateur , MédiationAdLoadCallback
CustomEventInterstitialListenerCustomEventInterstitialListener
CustomEventListenerCustomEventListenerCustomEventListener
CustomEventNativeListenerCustomEventNativeListener

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é