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 classeAdRequest.Builder
qui définit l'emplacement de l'utilisateur à des fins de ciblage de la médiation. - La méthode
getLocation()
de la classeAdRequest
qui renvoie les informations de ciblage géographique de l'utilisateur précédemment transmises à lasetLocation(Location location)
. - La méthode
getLocation()
de la classeMediationAdConfiguration
qui renvoie l'emplacement de l'utilisateur, s'il est défini parAdRequest
.
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 :
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éesNativeAd
. - Les classes et vues
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
etInstreamAd
ont été supprimées. - Toutes les classes avec le préfixe
Publisher
ont été remplacées par un préfixeAdManager
. - 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 classeRequestConfiguration
. - 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é |