Migrazione SDK

Questa pagina illustra le migrazioni per la versione attuale e quella precedente.

Migrazione dalla v22 alla v23

Il livello API Android minimo è 21

A partire dalla versione 23.0.0, l'SDK Google Mobile Ads richiede che tutte le app abbiano un livello API Android 21 minimo per poter essere eseguite. Per regolare il livello API, modifica il valore minSdkVersion nel file build.gradle a livello di app impostandolo su 21 o su un valore superiore.

Metodi obsoleti rimossi/sostituiti

API v22.0.0 API v23.0.0
AdRequest.Builder.addTestDevice() RequestConfiguration.Builder.setTestDeviceIds()
AdRequest.Builder.tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment()
AdRequest.Builder.setIsDesignedForFamilies() RequestConfiguration.Builder.setMaxAdContentRating()
AdFormat.UNKNOWN Nessuna sostituzione
AdLoader.Builder.forUnifiedNativeAd() AdLoader.Builder.forNativeAd()
AdLoader.Builder.forCustomTemplateAd() AdLoader.Builder.forCustomFormatAd()
AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.formats.NativeAdOptions) AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.nativead.NativeAdOptions)
void MobileAds.setSameAppKeyEnabled() boolean MobileAds.putPublisherFirstPartyIdEnabled()

Migrazione dalla v21 alla v22

Utilizza MobileAds.getVersion() per recuperare la versione dell'SDK Google Mobile Ads

Il metodo MobileAds.getVersionString() è stato rimosso nella versione 22.0.0 a favore di MobileAds.getVersion().

Il nuovo metodo restituisce il numero di versione esterna previsto, ad esempio 22.0.0. Per ulteriori informazioni su questa modifica, consulta l'articolo Utilizzare il nuovo metodo getVersion() dell'SDK Google Mobile Ads.

Metodi rimossi o sostituiti

La tabella seguente elenca le modifiche specifiche nella versione 22.0.0.

v21.0.0 v22.0.0
MobileAds.getVersionString() MobileAds.getVersion()
NativeCustomFormatAd.getVideoMediaView() NativeCustomFormatAd.getMediaContent()
NativeCustomFormatAd.getVideoController() NativeCustomFormatAd.getMediaContent().getVideoController()
AdRequest.Builder.setAdInfo() AdRequest.Builder.setAdString()
MediationRewardedVideoAdAdapter Adattatore
MediationRewardedVideoAdListener
com.google.android.gms.ads.mediation.VersionInfo com.google.android.gms.ads.VersionInfo
com.google.android.gms.ads.doubleclick.AppEventListener com.google.android.gms.ads.admanager.AppEventListener

Migrazione da v20 a v21

Aggiorna minSdkVersion alla versione 19 o successiva

A partire dalla versione 21.0.0, l'SDK Google Mobile Ads richiede che tutte le app abbiano un livello API Android 19 minimo per poter essere eseguite. Per regolare il livello API, modifica il valore di minSdkVersion nel file di build dell'app impostandolo su 19 o su un valore superiore.

Applica il valore serverless restrittivo

In preparazione all'applicazione del livello di servizio nullo in regola, vengono aggiunte annotazioni @NonNull a tutte le API che in precedenza non avevano definito esplicitamente nulla.

Questa modifica potrebbe interrompere le app e le app Kotlin che utilizzano framework di controllo null Java se sono presenti violazioni di sicurezza nulle e in precedenza non gestivano i valori null in modo sicuro (consulta la documentazione di Kotlin su Null-safety).

Rimozione del metodo addNetworkExtras()

Il metodo addNetworkExtras() che trasmette parametri aggiuntivi come istanza NetworkExtras a uno specifico adattatore di rete pubblicitaria è stato ritirato nella versione dell'SDK 20.3.0 e verrà rimosso nella versione 21.0.0. Utilizza invece il metodo addNetworkExtrasBundle() della stessa classe AdRequest.Builder.

Rimozione dei metodi di geolocalizzazione

I seguenti metodi di percorso verranno rimossi nella versione 21.0.0:

  • Il metodo setLocation(Location location) nella classe AdRequest.Builder che imposta la località dell'utente ai fini del targeting per la mediazione.
  • Il metodo getLocation() nella classe AdRequest che restituisce le informazioni sul targeting per località dell'utente precedentemente trasmesse al metodo setLocation(Location location).
  • Il metodo getLocation() nella classe MediationAdConfiguration che restituisce la posizione dell'utente, se definita dal criterio AdRequest.

I dati sulla posizione non vengono utilizzati da Google per il targeting degli annunci. Devi utilizzare API di terze parti per fornire le informazioni a reti pubblicitarie di terze parti, se necessario.

Ritiro delle interfacce eventi personalizzati

Gli eventi personalizzati consentono ai publisher che utilizzano la AdMob mediazione di aggiungere la mediazione a cascata per una rete pubblicitaria che non fa parte di AdMobreti pubblicitarie supportate.

Tutte le interfacce degli eventi personalizzati sono deprecate a favore della classe Adapter e dell'interfaccia MediationAdLoadCallback.

La seguente tabella elenca la classe o l'interfaccia corrispondente da utilizzare per ogni interfaccia di eventi personalizzati a partire dalla versione 21.0.0:

Interfacce v20.0.0 v21.0.0 Interfaccia classe/
CustomEvent Adattatore
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener Adattatore, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

Migrazione dalla v19 alla v20

Nella versione 20.0.0 sono state apportate molte modifiche che provocano errori. La versione 19.7.0 ha introdotto molte nuove API e ha deprecato o rinominato molte classi in preparazione alla versione 20.0.0. Questa guida evidenzia le principali modifiche apportate alla versione 20.0.0.

Aggiornamenti dell'API del formato a schermo intero

A partire dalla versione 20.0.0, i formati di annunci interstitial, con premio, interstitial con premio e apertura app sono standardizzati per seguire un design API coerente.

Tutte le API di formato a schermo intero utilizzano i seguenti principi:

  • Un metodo di caricamento statico
  • Un meccanismo di gestore o callback del carico simile
  • Fai affidamento sulla classe FullScreenContentCallback per i callback della presentazione

Rimozione dell'API RewardedVideoAd legacy

La nuova API RewardedAd è stata introdotta per la prima volta a marzo 2019 ed è stata l'API con premio preferita da oltre 18 mesi. Ha apportato più miglioramenti rispetto all'API RewardedVideoAd legacy, tra cui la possibilità di caricare più di un annuncio con premio alla volta.

L'API RewardedVideoAd precedente è stata rimossa nella versione 20.0.0 dell'SDK.

Ritiro dei banner intelligenti a favore di quelli adattivi

Gli annunci banner intelligente sono stati ritirati a favore degli annunci banner adattivi. I banner adattivi offrono prestazioni superiori e una maggiore flessibilità nell'impostazione della larghezza dell'annuncio. Se preferisci continuare a utilizzare i banner a larghezza intera, puoi comunque farlo utilizzando i banner adattivi, come mostrato nel seguente snippet di codice:

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)
    }
}

Rimuovi rimozione applicazione di callback

Il callback onAdLeftApplication per tutti i formati degli annunci è stato rimosso a favore di ProcessLifecycleOwner. L'utilizzo di un'API a livello di sistema operativo ti avvisa ogni volta che gli utenti abbandonano la tua app, indipendentemente dal fatto che sia dovuta o meno a un'interazione con l'annuncio.

Tieni presente che il callback onAdLeftApplication non è mai stato pensato come gestore dei clic sugli annunci e l'utilizzo di questo callback per registrare i clic non ha prodotto una metrica accurata. Ad esempio, un clic sull'icona Scegli Tu! che ha avviato un browser esterno richiama il callback, ma non viene conteggiato come un clic.

Rinominazioni dei corsi

Nella tabella che segue sono elencati i nomi delle classi che sono state modificate o sono state rimosse. In breve:

  • La maggior parte dei corsi correlati a UnifiedNativeAd è stata rinominata in NativeAd.
  • I corsi e le visualizzazioni MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAd e InstreamAd sono stati rimossi.
  • Tutte le classi con il prefisso Publisher sono state sostituite con un prefisso AdManager.
  • Il nome del pacchetto InterstitialAd è cambiato.
19.5.0 Classe 20.0.0 Classe
com.google.android.gms.ads. com.google.android.gms.ads.
reward.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener Rewards.RewardedAdLoadCallback e FullScreenContentCallback
reward.RewardItem rewarded.RewardItem
rewarded.RewardedAdCallback OnUserEarnedRewardListener
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
formati.NativeCustomTemplateAd.OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
MobileAds.Settings Rimosso
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView Rimosso
instream.InstreamAd Rimosso
mediation.admob.AdMobExtras Rimosso
Correlatore Rimosso
search.SearchAdRequest Rimosso
Interfaccia richiesta annuncio.TagForUnderAgeOfConsent Rimosso
Interfaccia AdRequest.MaxAdContentRating Rimosso
formats.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
mediation.NativeContentAdMapper mediation.UnifiedNativeAdMapper

Metodi rimossi/sostituiti

La tabella seguente elenca le modifiche specifiche nella versione 20.0.0. In sintesi:

  • I metodi di inizializzazione obsoleti sono stati rimossi dalla classe MobileAds.
  • Alcuni metodi della classe AdRequest.Builder() sono stati rimossi o spostati nella classe RequestConfiguration.
  • Le API RewardAd e InterstitialAd sono state aggiornate per essere in linea con tutti i formati a schermo intero.
  • Le funzionalità di correlatore sono state rimosse.
Classe API v19.5.0 API v20.0.0 Note
AdSize getVerticalBannerAdSizeWithLarghezza() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithLarghezza() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithLarghezza() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds inizializza(Contesto, Stringa) MobileAds.initialize(Context, OnInitializationCompleteListener) Ora l'ID app è impostato nel file AndroidManifest.xml.
inizializza(Contesto, Stringa, MobileAds.Settings) inizializza(Contesto, OnInitializationCompleteListener) La classe Impostazioni è stata ritirata.
getRewardVideoAdInstance() Rimosso Utilizza l'API RewardAd.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() Rimosso I formati degli annunci a schermo intero utilizzano FullscreenContentCallback al posto di AdListener e non esiste un metodo equivalente su FullscreenContentCallback. Il metodo è stato rimosso da AdListener.
VideoController getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() Rimosso
getBirthday() Rimosso
getNetworkExtras() Rimosso
setManualImpressioniEnabled() Rimosso
updateCorrelator() Rimosso Consulta la sezione Filtro dei contenuti degli annunci.
AdRequest.Builder setBirthday() Rimosso
setGender() Rimosso
setIsDesignedForFamilies() Rimosso Vedi la guida.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() Consulta Attivazione degli annunci di prova.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() Consulta la sezione Filtro dei contenuti degli annunci.
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() Un oggetto ResponseInfo è ora disponibile tramite il metodo AdView getResponseInfo().
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardAd.load(Context, String, AdRequest, RewardedAdLoadCallback) L'annuncio con premio ora utilizza lo stesso approccio al caricamento statico degli altri formati a schermo intero.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() Rimosso Il callback dal metodo di caricamento statico fornisce un annuncio già caricato.
programma(Attività, Callback dell'annuncio con premio) show(Attività, OnUser EarnedRewardListener) Questo metodo di visualizzazione segue l'approccio più ampio del formato a schermo intero.
RewardedAdLoadCallback onPremiumAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdLoaded(AppOpenAd) onAdLoaded(AppOpenAd)
Caricamento dell'annuncio interstitial con premioCallback on RewardsInterstitialAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
on RewardsInterstitialAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onOverlayAnnuncio con premioCaricato(AnnuncioInterstitial con premio) onAdLoaded(RewardedInterstitialAd)
InterstitialAd nuovo InterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd ora utilizza lo stesso approccio al caricamento statico degli altri formati a schermo intero.
setAdListener()
Richiestadi DynamicHeightSearchAd getNetworkExtras() Rimosso La classe NetworkExtras è stata ritirata.
AdLoader forContentAd() Rimosso
forAppInstallAd() Rimosso
withCorrelator() Rimosso
getMediationAdapterClassName() Rimosso