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 classeAdRequest.Builder
che imposta la località dell'utente ai fini del targeting per la mediazione. - Il metodo
getLocation()
nella classeAdRequest
che restituisce le informazioni sul targeting per località dell'utente precedentemente trasmesse al metodosetLocation(Location location)
. - Il metodo
getLocation()
nella classeMediationAdConfiguration
che restituisce la posizione dell'utente, se definita dal criterioAdRequest
.
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,
|
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 inNativeAd
. - I corsi e le visualizzazioni
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
eInstreamAd
sono stati rimossi. - Tutte le classi con il prefisso
Publisher
sono state sostituite con un prefissoAdManager
. - 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 |
nativead.NativeCustomFormatAd |
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 classeRequestConfiguration
. - 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 | getVerticalBanner |
getPortraitAnchored |
|
getLandscapeBanner |
getLandscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | inizializza(Contesto, Stringa) | MobileAds.initialize(Context, OnInitializationComplete |
Ora l'ID app è impostato nel file AndroidManifest.xml. |
inizializza(Contesto, Stringa, MobileAds.Settings) | inizializza(Contesto, OnInitializationComplete |
La classe Impostazioni è stata ritirata. | |
getRewardVideo |
Rimosso | Utilizza l'API RewardAd. | |
AdListener | onAdFailedToLoad(int) | onAd |
|
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 | ||
setManualImpressioni |
Rimosso | ||
updateCorrelator() | Rimosso | Consulta la sezione Filtro dei contenuti degli annunci. | |
AdRequest.Builder | setBirthday() | Rimosso | |
setGender() | Rimosso | ||
setIsDesignedForFamilies() | Rimosso | Vedi la guida. | |
addTestDevice() | RequestConfiguration |
Consulta Attivazione degli annunci di prova. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Consulta la sezione Filtro dei contenuti degli annunci. | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
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 | onPremiumAd |
onAd |
|
onRewardAd |
onAd |
||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
onAppOpenAd |
onAd |
||
onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
Caricamento dell'annuncio interstitial con premio |
on RewardsInterstitialAd |
onAd |
|
on RewardsInterstitialAd |
onAd |
||
onOverlayAnnuncio con premio |
onAd |
||
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() | |||
Richiesta |
getNetworkExtras() | Rimosso | La classe NetworkExtras è stata ritirata. |
AdLoader | forContentAd() | Rimosso | |
forAppInstallAd() | Rimosso | ||
withCorrelator() | Rimosso | ||
getMediationAdapter |
Rimosso |