Questa pagina riguarda le migrazioni per le versioni correnti e precedenti.
Eseguire la migrazione dalla versione 23 alla versione 24
Le seguenti sottosezioni descrivono le modifiche che comportano interruzioni e le differenze di comportamento tra le versioni principali 23 e 24 dell'SDK Google Mobile Ads.
Il livello API Android minimo è 23
A partire dalla versione 24.0.0, l'SDK Google Mobile Ads richiede che tutte le app funzionino su un livello API Android minimo pari a 23. Per modificare il livello API, imposta il valore minSdk
nel file build.gradle
a livello di app su 23 o versioni successive.
Modifiche all'inizializzazione e al caricamento ottimizzati
Per impostazione predefinita, i flag OPTIMIZE_INITIALIZATION
e OPTIMIZE_AD_LOADING
sono impostati su true
. Per ulteriori informazioni su questi flag, consulta
Ottimizzare l'inizializzazione e il caricamento.
Sono state rimosse le dipendenze firebase-ads e firebase-ads-lite
A partire dalla versione 24.0.0, le release dell'SDK non distribuiscono più le dipendenze firebase-ads
e firebase-ads-lite
. Utilizza invece la dipendenza play-services-ads
.
Sono state rimosse le API di orientamento obsolete per gli annunci apertura app
- Sono stati rimossi i metodi
AppOpenAd.load()
che accettano un parametro di input per l'orientamento. Utilizza invece i metodiAppOpenAd.load()
che non richiedono un orientamento. - Enum
AppOpenAdOrientation
rimosso.
Callback per i premi semplificato per gli adattatori di mediazione
La versione 24.0.0 aggiunge il callback onUserEarnedReward()
in
MediationRewardedAdCallback
e ritira onUserEarnedReward(RewardItem)
.
Gli adattatori di mediazione devono iniziare a chiamare onUserEarnedReward()
quando l'utente guadagna un premio.
Quando inoltri i callback dagli adattatori di mediazione, tutte le versioni dell'SDK Google Mobile Ads restituiscono il premio definito nell'interfaccia utente di Ad Manager in OnUserEarnedRewardListener
.
Corsi rimossi
I seguenti corsi sono stati rimossi senza sostituzione:
DynamicHeightSearchAdRequest
SearchAdRequest
SearchAdView
Metodi rimossi
I seguenti metodi sono stati rimossi senza alcuna sostituzione:
Classe | Metodo |
---|---|
RewardedInterstitialAdLoadCallback | onRewardedInterstitialAdLoaded() |
onRewardedInterstitialAdFailedToLoad(int) |
|
onRewardedInterstitialAdFailedToLoad(LoadAdError) |
Metodi ritirati
I seguenti metodi sono deprecati senza alcuna sostituzione:
Classe | Metodo |
---|---|
Alimentatore | loadInterscrollerAd() |
RtbAdapter | loadRtbInterscrollerAd() |
Migrazione dalla versione 22 alla versione 23
Le seguenti sottosezioni descrivono le modifiche che comportano interruzioni e le differenze di comportamento tra le versioni principali 22 e 23 dell'SDK Google Mobile Ads.
Il livello API Android minimo è 21
A partire dalla versione 23.0.0, l'SDK Google Mobile Ads richiede che tutte le app funzionino su un livello API Android minimo pari a 21. Per regolare il livello API, imposta il valore di minSdkVersion
nel file build.gradle
a livello di app su 21 o versioni successive.
I metodi AdManagerAdRequest.Builder
ereditati dalla superclasse possono essere messi in catena
Nella versione 23.0.0, i metodi AdManagerAdRequest.Builder
ereditati dall'elemento principale possono essere messi in catena per creare un AdManagerAdRequest
utilizzando una singola chiamata:
Java
AdManagerAdRequest request = new AdManagerAdRequest.Builder() .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method. .setContentUrl("https://www.example.com") // Method inherited from parent. .build(); // Builds an AdManagerAdRequest.
Kotlin
var request = AdManagerAdRequest.Builder() .addCustomTargeting("age", "25") // AdManagerAdRequest.Builder method. .setContentUrl("https://www.example.com") // Method inherited from parent. .build() // Builds an AdManagerAdRequest.
Metodi obsoleti rimossi/sostituiri
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 versione 21 alla versione 22
Le seguenti sottosezioni descrivono le modifiche che comportano interruzioni e le differenze di comportamento tra le versioni principali 21 e 22 dell'SDK Google Mobile Ads.
Utilizza MobileAds.getVersion() per ottenere la versione dell'SDK Google Mobile Ads
Il metodo MobileAds.getVersionString()
viene 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 Utilizzare il nuovo metodo getVersion()
dell'SDK Google Mobile Ads.
Rimozione di NativeCustomFormatAd.getVideoMediaView(), metodo deprecato
Nella versione 21, l'SDK Google Mobile Ads forniva il metodo NativeCustomFormatAd.getVideoMediaView()
per recuperare l'asset media per un formato dell'annuncio personalizzato nativo.
A partire dalla versione 22, puoi creare il tuo MediaView
, impostarne i contenuti multimediali e utilizzare MediaContent.getVideoController()
per visualizzare i controlli video.
v22
// Called when a custom native ad loads. @Override public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) { // Assumes you have a FrameLayout in your view hierarchy with the ID media_placeholder. FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder); MediaContent mediaContent = ad.getMediaContent(); if (mediaContent != null && mediaContent.hasVideoContent()) { // Create a MediaView and set its media content. MediaView mediaView = new MediaView(mediaPlaceholder.getContext()); mediaView.setMediaContent(mediaContent); mediaPlaceholder.addView(mediaView); } }
v21
// Called when a custom native ad loads. @Override public void onCustomFormatAdLoaded(NativeCustomFormatAd ad) { // Assumes you have a FrameLayout in your view hierarchy with the ID media_placeholder. FrameLayout mediaPlaceholder = (FrameLayout) findViewById(R.id.media_placeholder); VideoController videoController = ad.getVideoController(); if (videoController.hasVideoContent()) { // Add the media view provided by the native ad. mediaPlaceholder.addView(ad.getVideoMediaView()); } }
Per ulteriori informazioni, consulta la guida agli annunci in formato nativo personalizzati.
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 | Alimentatore |
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 |
Eseguire la migrazione dalla versione 20 alla versione 21
Le seguenti sottosezioni descrivono le modifiche che comportano interruzioni e le differenze di comportamento tra le versioni principali 20 e 21 dell'SDK Google Mobile Ads:
Aggiorna minSdkVersion alla versione 19 o successive
A partire dalla versione 21.0.0, l'SDK Google Mobile Ads richiede che tutte le app funzionino su un livello API Android minimo pari a 19. Per regolare il livello API, imposta il valore di minSdkVersion
nel file di compilazione dell'app su 19 o versioni successive.
Impostare la nullità rigorosa
In preparazione all'applicazione della nullità rigorosa, le annotazioni @NonNull
vengono aggiunte a tutte le API che in precedenza non definivano esplicitamente la nullità.
Questa modifica potrebbe causare un malfunzionamento delle app Kotlin e di quelle che utilizzano framework di controllo dei valori null di Java se sono presenti violazioni della sicurezza di null e in precedenza non venivano gestiti in modo sicuro i valori null
(consulta la documentazione di Kotlin sulla sicurezza di null).
Rimozione del metodo addNetworkExtras()
Il metodo addNetworkExtras()
che passa parametri aggiuntivi come istanza NetworkExtras
a un adattatore della rete pubblicitaria specifico è stato ritirato nella versione 20.3.0 dell'SDK 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 geolocalizzazione verranno rimossi nella versione 21.0.0:
- Il metodo
setLocation(Location location)
nella classeAdRequest.Builder
che imposta la posizione dell'utente a fini di targeting della 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 daAdRequest
.
I dati sulla posizione non vengono utilizzati da Google per scegliere gli annunci target. Se necessario, devi utilizzare API di terze parti per fornire le informazioni alle reti pubblicitarie di terze parti.
Ritiro delle interfacce di eventi personalizzati
Gli eventi personalizzati consentono ai publisher che utilizzano la mediazione di configurare un'origine annuncio con struttura a cascata che non è una delle origini annuncio supportate di Ad Manager.
Tutte le interfacce di eventi personalizzati sono ritirate a favore della classe e dell'interfaccia MediationAdLoadCallback
.Adapter
La tabella seguente elenca la classe o l'interfaccia corrispondente che devi utilizzare per ogni interfaccia evento personalizzata a partire dalla versione 21.0.0:
Interfacce della versione 20.0.0 | Classe/ interfaccia v21.0.0 |
---|---|
CustomEvent | Alimentatore |
CustomEventBanner | |
CustomEventInterstitial | |
CustomEventNative | |
CustomEventBannerListener |
Adapter,
|
CustomEventInterstitialListener | |
CustomEventListener | |
CustomEventNativeListener |
Migrazione dalla versione 19 alla versione 20
La versione 20.0.0 presenta molte modifiche che comportano interruzioni. La versione 19.7.0 ha introdotto molte nuove API e ha ritirato o rinominato molte classi in vista della versione 20.0.0. Questa guida mette in evidenza le modifiche principali nella versione 20.0.0.
Aggiornamenti dell'API per i formati a schermo intero
A partire dalla versione 20.0.0, i formati degli annunci interstitial, con premio, interstitial con premio e apertura app sono standardizzati per seguire un design API coerente.
Tutte le API per i formati a schermo intero utilizzano i seguenti principi:
- Un metodo di caricamento statico
- Un meccanismo di callback o gestore di caricamento simile
- Utilizzo della classe
FullScreenContentCallback
per i callback della presentazione
Rimozione dell'API RewardedVideoAd precedente
La nuova API
RewardedAd
è stata introdotta per la prima volta a marzo 2019 ed è stata l'API con premio preferita per oltre 18 mesi. Ha subito più miglioramenti rispetto all'APIRewardedVideoAd
precedente, inclusa la possibilità di caricare più di un annuncio con premio alla volta.
L'API RewardedVideoAd
precedente viene rimossa nella versione 20.0.0 dell'SDK.
Ritiro dei banner intelligenti a favore dei banner adattivi
Gli annunci banner intelligenti non sono più supportati in favore degli annunci banner adattivi. I banner adattivi offrono un rendimento superiore e una maggiore flessibilità per impostare la larghezza dell'annuncio. Se preferisci continuare a utilizzare i banner a larghezza intera, puoi farlo anche con 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) } }
Rimozione del callback per la richiesta di recesso
Il callback onAdLeftApplication
per tutti i formati degli annunci è stato rimosso in favore di
ProcessLifecycleOwner
.
L'utilizzo di un'API a livello di sistema operativo ti avvisa ogni volta che gli utenti escono dalla tua app, indipendentemente dal fatto che sia o meno dovuta a un'interazione con l'annuncio.
Tieni presente che il callout onAdLeftApplication
non è mai stato pensato come gestore dei clic sugli annunci e fare affidamento su questo callout per segnalare i clic non ha prodotto una metrica accurata. Ad esempio, un clic sull'icona Scegli Tu! che ha avviato un browser esterno ha attivato il callback, ma non è stato conteggiato come clic.
Ridenominazioni dei corsi
La tabella seguente elenca nomi di classi specifici che sono stati modificati o rimossi:
- La maggior parte dei corsi correlati a
UnifiedNativeAd
è stata rinominata inNativeAd
. - Le classi e le visualizzazioni
MobileAds.Settings
,NativeExpressAdView
,NativeAppInstallAd
,NativeContentAd
eInstreamAd
sono state rimosse. - Tutti i corsi con il prefisso
Publisher
sono stati sostituiti con un prefissoAdManager
. - Il nome del pacchetto
InterstitialAd
è cambiato.
Classe 19.5.0 | Classe 20.0.0 |
---|---|
com.google.android.gms.ads. | com.google.android.gms.ads. |
reward.RewardedVideoAd | rewarded.RewardedAd |
reward.RewardedVideoAdListener | rewarded.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 |
formats.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 |
Correlator | Rimosso |
search.SearchAdRequest | Rimosso |
Interfaccia AdRequest.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/sostituiri
La tabella seguente elenca le modifiche specifiche nella versione 20.0.0:
- 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 RewardedAd e InterstitialAd sono state aggiornate in modo da allinearsi a tutti i formati a schermo intero.
- Le funzionalità di correlazione sono state rimosse.
Classe | API v19.5.0 | API v20.0.0 | Note |
---|---|---|---|
AdSize | getPortraitBanner |
getPortraitAnchored |
|
getLandscapeBanner |
getLandscapeAnchored |
||
getCurrentOrientation |
getCurrentOrientationAnchored |
||
MobileAds | initialize(Context, String) | MobileAds.initialize(Context, OnInitializationComplete |
L'ID app è ora impostato in AndroidManifest.xml. |
initialize(Context, String, MobileAds.Settings) | initialize(Context, OnInitializationComplete |
La classe Settings è stata ritirata. | |
getRewardedVideo |
Rimosso | Utilizza l'API RewardedAd. | |
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() | |
PublisherAdRequest | getGender() | Rimosso | |
getBirthday() | Rimosso | ||
getNetworkExtras() | Rimosso | ||
setManualImpressions |
Rimosso | ||
updateCorrelator() | Rimosso | Consulta Filtro dei contenuti degli annunci. | |
PublisherAdRequest.Builder | setBirthday() | Rimosso | |
setGender() | Rimosso | ||
setIsDesignedForFamilies() | Rimosso | Consulta la guida. | |
addTestDevice() | RequestConfiguration |
Consulta l'articolo Attivare gli annunci di prova. | |
tagForChildDirectedTreatment() | RequestConfiguration |
Consulta Filtro dei contenuti degli annunci. | |
setTagFor |
RequestConfiguration |
||
setMaxAdContentRating() | RequestConfiguration |
||
AdView | getMediationAdapter |
ResponseInfo |
Un oggetto ResponseInfo è disponibile utilizzando il metodo AdView , getResponseInfo() .
|
NativeAdOptions | setImageOrientation() | setMediaAspectRatio() | |
getImageOrientation | getMediaAspectRatio() | ||
RewardedAd | loadAd(AdRequest, RewardedAdLoadCallback) | RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) | Ora RewardedAd utilizza lo stesso approccio di 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. | |
show(Activity, RewardedAdCallback) | show(Activity, OnUserEarnedRewardListener) | Questo metodo di visualizzazione è conforme all'approccio più ampio del formato a schermo intero. | |
RewardedAdLoadCallback | onRewardedAd |
onAd |
|
onRewardedAd |
onAd |
||
onRewardedAdLoaded() | onAdLoaded(RewardedAd) | ||
AppOpenAdLoadCallback | onAppOpenAd |
onAd |
|
onAppOpenAd |
onAd |
||
onAppOpenAd |
onAdLoaded(AppOpenAd) | ||
RewardedInterstitialAdLoad |
onRewardedInterstitialAd |
onAd |
|
onRewardedInterstitialAd |
onAd |
||
onRewardedInterstitialAd |
onAd |
||
PublisherInterstitialAd | new PublisherInterstitialAd() | InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) | InterstitialAd ora utilizza lo stesso approccio di caricamento statico degli altri formati a schermo intero. |
setAdListener() | |||
DynamicHeightSearchAd |
getNetworkExtras() | Rimosso | La classe NetworkExtras è stata ritirata. |
AdLoader | forContentAd() | Rimosso | |
forAppInstallAd() | Rimosso | ||
withCorrelator() | Rimosso | ||
getMediationAdapter |
Rimosso |