Gli annunci interstitial sono annunci a schermo intero che coprono l'interfaccia dell'app host. Vengono di solito visualizzati in punti di transizione naturali nel flusso di un'app, ad esempio tra un'attività e l'altra durante la pausa tra i livelli di un gioco.
Quando un'app mostra un annuncio interstitial, l'utente può toccare
l'annuncio e continuare fino alla sua destinazione oppure chiuderlo e tornare all'app.
Leggi uno dei nostri case study.
Questa guida spiega come integrare gli annunci interstitial in un'app Android.
Prerequisiti
Google Mobile Ads SDK 19.7.0 o versioni successive.
Quando crei e testi le tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione live. In caso contrario, il tuo account potrebbe essere sospeso.
Il modo più semplice per caricare gli annunci di prova è utilizzare il nostro ID unità pubblicitaria di prova dedicato per gli annunci interstitial Android:
ca-app-pub-3940256099942544/1033173712
È stato configurato appositamente per restituire annunci di prova per ogni richiesta e puoi utilizzarlo liberamente nelle tue app durante la codifica, i test e il debug. Assicurati di sostituirlo con il tuo ID unità pubblicitaria prima di pubblicare l'app.
Per informazioni dettagliate sugli annunci di prova Google Mobile Ads SDK, consulta la sezione
Attivare gli annunci di prova.
Carica un annuncio
Per caricare un annuncio interstitial, chiama il metodo InterstitialAd
statico
load() e passa un
InterstitialAdLoadCallback per ricevere l'
annuncio caricato o eventuali errori. Tieni presente che, come altri callback di caricamento del formato, InterstitialAdLoadCallback utilizza LoadAdError per fornire dettagli sugli errori con fedeltà superiore.
Java
InterstitialAd.load(this,AD_UNIT_ID,newAdRequest.Builder().build(),newInterstitialAdLoadCallback(){@OverridepublicvoidonAdLoaded(@NonNullInterstitialAdinterstitialAd){Log.d(TAG,"Ad was loaded.");MyActivity.this.interstitialAd=interstitialAd;}@OverridepublicvoidonAdFailedToLoad(@NonNullLoadAdErrorloadAdError){Log.d(TAG,loadAdError.getMessage());interstitialAd=null;}});
InterstitialAd.load(this,AD_UNIT_ID,AdRequest.Builder().build(),object:InterstitialAdLoadCallback(){overridefunonAdLoaded(ad:InterstitialAd){Log.d(TAG,"Ad was loaded.")interstitialAd=ad}overridefunonAdFailedToLoad(adError:LoadAdError){Log.d(TAG,adError.message)interstitialAd=null}},)
FullScreenContentCallback gestisce gli eventi relativi alla visualizzazione di InterstitialAd. Prima di mostrare InterstitialAd, assicurati di impostare il callback:
Java
interstitialAd.setFullScreenContentCallback(newFullScreenContentCallback(){@OverridepublicvoidonAdDismissedFullScreenContent(){// Called when fullscreen content is dismissed.Log.d(TAG,"The ad was dismissed.");// Make sure to set your reference to null so you don't// show it a second time.MyActivity.this.interstitialAd=null;}@OverridepublicvoidonAdFailedToShowFullScreenContent(AdErroradError){// Called when fullscreen content failed to show.Log.d(TAG,"The ad failed to show.");// Make sure to set your reference to null so you don't// show it a second time.MyActivity.this.interstitialAd=null;}@OverridepublicvoidonAdShowedFullScreenContent(){// Called when fullscreen content is shown.Log.d(TAG,"The ad was shown.");}@OverridepublicvoidonAdImpression(){// Called when an impression is recorded for an ad.Log.d(TAG,"The ad recorded an impression.");}@OverridepublicvoidonAdClicked(){// Called when ad is clicked.Log.d(TAG,"The ad was clicked.");}});
interstitialAd?.fullScreenContentCallback=object:FullScreenContentCallback(){overridefunonAdDismissedFullScreenContent(){// Called when fullscreen content is dismissed.Log.d(TAG,"Ad was dismissed.")// Don't forget to set the ad reference to null so you// don't show the ad a second time.interstitialAd=null}overridefunonAdFailedToShowFullScreenContent(adError:AdError){// Called when fullscreen content failed to show.Log.d(TAG,"Ad failed to show.")// Don't forget to set the ad reference to null so you// don't show the ad a second time.interstitialAd=null}overridefunonAdShowedFullScreenContent(){// Called when fullscreen content is shown.Log.d(TAG,"Ad showed fullscreen content.")}overridefunonAdImpression(){// Called when an impression is recorded for an ad.Log.d(TAG,"Ad recorded an impression.")}overridefunonAdClicked(){// Called when ad is clicked.Log.d(TAG,"Ad was clicked.")}}
Gli annunci interstitial devono essere visualizzati durante le pause naturali nel flusso di un'app. Un buon esempio è tra i livelli di un gioco o dopo che l'utente ha completato un'attività.
Per mostrare un annuncio interstitial, utilizza il
show() metodo.
Java
if(interstitialAd!=null){interstitialAd.show(this);}else{Log.d(TAG,"The interstitial ad is still loading.");}
Valuta se gli annunci interstitial sono il tipo di annuncio giusto per la tua app.
Gli annunci interstitial funzionano meglio nelle app con punti di transizione naturali.
La conclusione di un'attività all'interno di un'app, come la condivisione di un'immagine o il completamento di un livello di un gioco, crea un punto di questo tipo. Assicurati di considerare in quali punti del flusso di lavoro della tua app mostrerai gli annunci interstitial e come è probabile che l'utente risponda.
Ricorda di mettere in pausa l'azione quando mostri un annuncio interstitial.
Esistono diversi tipi di annunci interstitial: di testo, illustrati, video e altro ancora. È importante assicurarsi che, quando la tua app mostra un annuncio interstitial, sospenda anche l'utilizzo di alcune risorse per consentire all'annuncio di sfruttarle. Ad esempio, quando effettui la chiamata per mostrare un annuncio interstitial, assicurati di mettere in pausa qualsiasi output audio prodotto dalla tua app.
Consenti un tempo di caricamento adeguato.
È importante assicurarsi di mostrare gli annunci interstitial in un momento appropriato, ma anche che l'utente non debba attendere il caricamento. Il caricamento anticipato dell'annuncio chiamando
load() prima di chiamare
show() può garantire che la tua app abbia un annuncio interstitial completamente caricato e pronto quando è il momento di mostrarlo.
Non sommergere l'utente di annunci.
Aumentare la frequenza degli annunci interstitial nella tua app potrebbe sembrare un ottimo modo per incrementare le entrate, ma può anche peggiorare l'esperienza utente e ridurre le percentuali di clic. Assicurati che gli utenti non vengano interrotti così spesso da non poter più apprezzare l'utilizzo dell'app.
Codice sorgente
MyActivity.java
/**Copyright(C)2013Google,Inc.**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*YoumayobtainacopyoftheLicenseat**http://www.apache.org/licenses/LICENSE-2.0**Unlessrequiredbyapplicablelaworagreedtoinwriting,software*distributedundertheLicenseisdistributedonan"AS IS"BASIS,*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.*SeetheLicenseforthespecificlanguagegoverningpermissionsand*limitationsundertheLicense.*/packagecom.google.android.gms.example.interstitialexample;importandroid.annotation.SuppressLint;importandroid.os.Bundle;importandroid.os.CountDownTimer;importandroid.util.Log;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.Button;importandroid.widget.PopupMenu;importandroid.widget.TextView;importandroid.widget.Toast;importandroidx.annotation.NonNull;importandroidx.appcompat.app.AppCompatActivity;importandroidx.core.graphics.Insets;importandroidx.core.view.ViewCompat;importandroidx.core.view.WindowInsetsCompat;importcom.google.android.gms.ads.AdError;importcom.google.android.gms.ads.AdRequest;importcom.google.android.gms.ads.FullScreenContentCallback;importcom.google.android.gms.ads.LoadAdError;importcom.google.android.gms.ads.MobileAds;importcom.google.android.gms.ads.RequestConfiguration;importcom.google.android.gms.ads.interstitial.InterstitialAd;importcom.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;importjava.util.Arrays;importjava.util.concurrent.atomic.AtomicBoolean;/**MainActivity.Inflatesmainactivityxml.*/@SuppressLint("SetTextI18n")publicclassMyActivityextendsAppCompatActivity{//CheckyourlogcatoutputforthetestdevicehashedIDe.g.//"Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("ABCDEF012345"))//togettestadsonthisdevice" or//"Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("ABCDEF012345") to set this as//adebugdevice".publicstaticfinalStringTEST_DEVICE_HASHED_ID="ABCDEF012345";privatestaticfinallongGAME_LENGTH_MILLISECONDS=3000;privatestaticfinalStringAD_UNIT_ID="ca-app-pub-3940256099942544/1033173712";privatestaticfinalStringTAG="MyActivity";privatefinalAtomicBooleanisMobileAdsInitializeCalled=newAtomicBoolean(false);privateGoogleMobileAdsConsentManagergoogleMobileAdsConsentManager;privateInterstitialAdinterstitialAd;privateCountDownTimercountDownTimer;privateButtonretryButton;privatebooleangamePaused;privatebooleangameOver;privatebooleanadIsLoading;privatelongtimerMilliseconds;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_my);setSupportActionBar(findViewById(R.id.toolBar));ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.container),(view,insets)-> {InsetssystemBarsInsets=insets.getInsets(WindowInsetsCompat.Type.systemBars());view.setPadding(systemBarsInsets.left,0,systemBarsInsets.right,systemBarsInsets.bottom);returninsets;});//LogtheMobileAdsSDKversion.Log.d(TAG,"Google Mobile Ads SDK Version: "+MobileAds.getVersion());googleMobileAdsConsentManager=GoogleMobileAdsConsentManager.getInstance(getApplicationContext());googleMobileAdsConsentManager.gatherConsent(this,consentError-> {if(consentError!=null){//Consentnotobtainedincurrentsession.Log.w(TAG,String.format("%s: %s",consentError.getErrorCode(),consentError.getMessage()));}startGame();if(googleMobileAdsConsentManager.canRequestAds()){initializeMobileAdsSdk();}if(googleMobileAdsConsentManager.isPrivacyOptionsRequired()){//Regeneratetheoptionsmenutoincludeaprivacysetting.invalidateOptionsMenu();}});//Thissampleattemptstoloadadsusingconsentobtainedintheprevioussession.if(googleMobileAdsConsentManager.canRequestAds()){initializeMobileAdsSdk();}//Createthe"retry"button,whichtriestoshowaninterstitialbetweengameplays.retryButton=findViewById(R.id.retry_button);retryButton.setVisibility(View.INVISIBLE);retryButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){showInterstitial();}});}publicvoidloadAd(){//Requestanewadifoneisn't already loaded.if(adIsLoading||interstitialAd!=null){return;}adIsLoading=true;InterstitialAd.load(this,AD_UNIT_ID,newAdRequest.Builder().build(),newInterstitialAdLoadCallback(){@OverridepublicvoidonAdLoaded(@NonNullInterstitialAdinterstitialAd){Log.d(TAG,"Ad was loaded.");MyActivity.this.interstitialAd=interstitialAd;adIsLoading=false;Toast.makeText(MyActivity.this,"onAdLoaded()",Toast.LENGTH_SHORT).show();interstitialAd.setFullScreenContentCallback(newFullScreenContentCallback(){@OverridepublicvoidonAdDismissedFullScreenContent(){//Calledwhenfullscreencontentisdismissed.Log.d(TAG,"The ad was dismissed.");//Makesuretosetyourreferencetonullsoyoudon't//showitasecondtime.MyActivity.this.interstitialAd=null;}@OverridepublicvoidonAdFailedToShowFullScreenContent(AdErroradError){//Calledwhenfullscreencontentfailedtoshow.Log.d(TAG,"The ad failed to show.");//Makesuretosetyourreferencetonullsoyoudon't//showitasecondtime.MyActivity.this.interstitialAd=null;}@OverridepublicvoidonAdShowedFullScreenContent(){//Calledwhenfullscreencontentisshown.Log.d(TAG,"The ad was shown.");}@OverridepublicvoidonAdImpression(){//Calledwhenanimpressionisrecordedforanad.Log.d(TAG,"The ad recorded an impression.");}@OverridepublicvoidonAdClicked(){//Calledwhenadisclicked.Log.d(TAG,"The ad was clicked.");}});}@OverridepublicvoidonAdFailedToLoad(@NonNullLoadAdErrorloadAdError){Log.d(TAG,loadAdError.getMessage());interstitialAd=null;adIsLoading=false;Stringerror=String.format(java.util.Locale.US,"domain: %s, code: %d, message: %s",loadAdError.getDomain(),loadAdError.getCode(),loadAdError.getMessage());Toast.makeText(MyActivity.this,"onAdFailedToLoad() with error: "+error,Toast.LENGTH_SHORT).show();}});}privatevoidcreateTimer(finallongmilliseconds){//Createthegametimer,whichcountsdowntotheendofthelevel//andshowsthe"retry"button.if(countDownTimer!=null){countDownTimer.cancel();}finalTextViewtextView=findViewById(R.id.timer);countDownTimer=newCountDownTimer(milliseconds,50){@OverridepublicvoidonTick(longmillisUnitFinished){timerMilliseconds=millisUnitFinished;textView.setText("seconds remaining: "+((millisUnitFinished/1000)+1));}@OverridepublicvoidonFinish(){gameOver=true;textView.setText("done!");retryButton.setVisibility(View.VISIBLE);}};countDownTimer.start();}@OverridepublicvoidonResume(){//Startorresumethegame.super.onResume();resumeGame();}@OverridepublicvoidonPause(){super.onPause();pauseGame();}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.action_menu,menu);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){ViewmenuItemView=findViewById(item.getItemId());PopupMenupopup=newPopupMenu(this,menuItemView);popup.getMenuInflater().inflate(R.menu.popup_menu,popup.getMenu());popup.show();popup.getMenu().findItem(R.id.privacy_settings).setVisible(googleMobileAdsConsentManager.isPrivacyOptionsRequired());popup.setOnMenuItemClickListener(popupMenuItem-> {if(popupMenuItem.getItemId()==R.id.privacy_settings){pauseGame();//Handlechangestouserconsent.googleMobileAdsConsentManager.showPrivacyOptionsForm(this,formError-> {if(formError!=null){Toast.makeText(this,formError.getMessage(),Toast.LENGTH_SHORT).show();}resumeGame();});returntrue;}elseif(popupMenuItem.getItemId()==R.id.ad_inspector){MobileAds.openAdInspector(this,error-> {//Errorwillbenon-nullifadinspectorclosedduetoanerror.if(error!=null){Toast.makeText(this,error.getMessage(),Toast.LENGTH_SHORT).show();}});returntrue;}returnfalse;});returnsuper.onOptionsItemSelected(item);}privatevoidshowInterstitial(){//Showtheadifit's ready. Otherwise restart the game.if(interstitialAd!=null){interstitialAd.show(this);}else{Log.d(TAG,"The interstitial ad is still loading.");startGame();if(googleMobileAdsConsentManager.canRequestAds()){loadAd();}}}privatevoidstartGame(){//Hidethebutton,andkickoffthetimer.retryButton.setVisibility(View.INVISIBLE);createTimer(GAME_LENGTH_MILLISECONDS);gamePaused=false;gameOver=false;}privatevoidresumeGame(){if(gameOver||!gamePaused){return;}//Createanewtimerforthecorrectlength.gamePaused=false;createTimer(timerMilliseconds);}privatevoidpauseGame(){if(gameOver||gamePaused){return;}countDownTimer.cancel();gamePaused=true;}privatevoidinitializeMobileAdsSdk(){if(isMobileAdsInitializeCalled.getAndSet(true)){return;}//Setyourtestdevices.MobileAds.setRequestConfiguration(newRequestConfiguration.Builder().setTestDeviceIds(Arrays.asList(TEST_DEVICE_HASHED_ID)).build());newThread(()-> {//InitializetheGoogleMobileAdsSDKonabackgroundthread.MobileAds.initialize(this,initializationStatus-> {});//Loadanadonthemainthread.runOnUiThread(()-> loadAd());}).start();}}
MainActivity.kt
packagecom.google.android.gms.example.interstitialexampleimportandroid.os.Bundleimportandroid.os.CountDownTimerimportandroid.util.Logimportandroid.view.Menuimportandroid.view.MenuItemimportandroid.view.Viewimportandroid.widget.PopupMenuimportandroid.widget.Toastimportandroidx.appcompat.app.AppCompatActivityimportandroidx.core.view.ViewCompatimportandroidx.core.view.WindowInsetsCompatimportcom.google.android.gms.ads.*importcom.google.android.gms.ads.interstitial.InterstitialAdimportcom.google.android.gms.ads.interstitial.InterstitialAdLoadCallbackimportcom.google.android.gms.example.interstitialexample.databinding.ActivityMainBindingimportjava.util.concurrent.atomic.AtomicBooleanimportkotlinx.coroutines.CoroutineScopeimportkotlinx.coroutines.Dispatchersimportkotlinx.coroutines.launchclassMainActivity:AppCompatActivity(){privatevalisMobileAdsInitializeCalled=AtomicBoolean(false)privatelateinitvarbinding:ActivityMainBindingprivatelateinitvargoogleMobileAdsConsentManager:GoogleMobileAdsConsentManagerprivatevarinterstitialAd:InterstitialAd?=nullprivatevarcountdownTimer:CountDownTimer?=nullprivatevargamePaused=falseprivatevargameOver=falseprivatevaradIsLoading:Boolean=falseprivatevartimerMilliseconds=0LoverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)binding=ActivityMainBinding.inflate(layoutInflater)valview=binding.rootsetContentView(view)setSupportActionBar(binding.toolBar)ViewCompat.setOnApplyWindowInsetsListener(binding.root){view,insets->
valsystemBars=insets.getInsets(WindowInsetsCompat.Type.systemBars())view.setPadding(systemBars.left,0,systemBars.right,systemBars.bottom)insets}//LogtheMobileAdsSDKversion.Log.d(TAG,"Google Mobile Ads SDK Version: "+MobileAds.getVersion())googleMobileAdsConsentManager=GoogleMobileAdsConsentManager.getInstance(this)googleMobileAdsConsentManager.gatherConsent(this){consentError->
if(consentError!=null){//Consentnotobtainedincurrentsession.Log.w(TAG,"${consentError.errorCode}: ${consentError.message}")}//Kickoffthefirstplayofthe"game".startGame()if(googleMobileAdsConsentManager.canRequestAds){initializeMobileAdsSdk()}if(googleMobileAdsConsentManager.isPrivacyOptionsRequired){//Regeneratetheoptionsmenutoincludeaprivacysetting.invalidateOptionsMenu()}}//Thissampleattemptstoloadadsusingconsentobtainedintheprevioussession.if(googleMobileAdsConsentManager.canRequestAds){initializeMobileAdsSdk()}//Createthe"retry"button,whichtriggersaninterstitialbetweengameplays.binding.retryButton.visibility=View.INVISIBLEbinding.retryButton.setOnClickListener{showInterstitial()}}overridefunonCreateOptionsMenu(menu:Menu?):Boolean{menuInflater.inflate(R.menu.action_menu,menu)returnsuper.onCreateOptionsMenu(menu)}overridefunonOptionsItemSelected(item:MenuItem):Boolean{valmenuItemView=findViewById<View>(item.itemId)valactivity=thisPopupMenu(this,menuItemView).apply{menuInflater.inflate(R.menu.popup_menu,menu)menu.findItem(R.id.privacy_settings).setVisible(googleMobileAdsConsentManager.isPrivacyOptionsRequired)show()setOnMenuItemClickListener{popupMenuItem->
when(popupMenuItem.itemId){R.id.privacy_settings-> {pauseGame()//Handlechangestouserconsent.googleMobileAdsConsentManager.showPrivacyOptionsForm(activity){formError->
if(formError!=null){Toast.makeText(activity,formError.message,Toast.LENGTH_SHORT).show()}resumeGame()}true}R.id.ad_inspector-> {MobileAds.openAdInspector(activity){error->
//Errorwillbenon-nullifadinspectorclosedduetoanerror.error?.let{Toast.makeText(activity,it.message,Toast.LENGTH_SHORT).show()}}true}//Handleotherbrancheshere.else-> false}}returnsuper.onOptionsItemSelected(item)}}privatefunloadAd(){//Requestanewadifoneisn't already loaded.if(adIsLoading||interstitialAd!=null){return}adIsLoading=trueInterstitialAd.load(this,AD_UNIT_ID,AdRequest.Builder().build(),object:InterstitialAdLoadCallback(){overridefunonAdLoaded(ad:InterstitialAd){Log.d(TAG,"Ad was loaded.")interstitialAd=adadIsLoading=falseToast.makeText(this@MainActivity,"onAdLoaded()",Toast.LENGTH_SHORT).show()}overridefunonAdFailedToLoad(adError:LoadAdError){Log.d(TAG,adError.message)interstitialAd=nulladIsLoading=falsevalerror="domain: ${adError.domain}, code: ${adError.code}, "+"message: ${adError.message}"Toast.makeText(this@MainActivity,"onAdFailedToLoad() with error $error",Toast.LENGTH_SHORT,).show()}},)}//Createthegametimer,whichcountsdowntotheendofthelevel//andshowsthe"retry"button.privatefuncreateTimer(milliseconds:Long){countdownTimer?.cancel()countdownTimer=object:CountDownTimer(milliseconds,50){overridefunonTick(millisUntilFinished:Long){timerMilliseconds=millisUntilFinishedbinding.timer.text="seconds remaining: ${ millisUntilFinished / 1000 + 1 }"}overridefunonFinish(){gameOver=truebinding.timer.text="done!"binding.retryButton.visibility=View.VISIBLE}}countdownTimer?.start()}//Showtheadifit's ready. Otherwise restart the game.privatefunshowInterstitial(){if(interstitialAd!=null){interstitialAd?.fullScreenContentCallback=object:FullScreenContentCallback(){overridefunonAdDismissedFullScreenContent(){//Calledwhenfullscreencontentisdismissed.Log.d(TAG,"Ad was dismissed.")//Don't forget to set the ad reference to null so you//don't show the ad a second time.interstitialAd=null}overridefunonAdFailedToShowFullScreenContent(adError:AdError){//Calledwhenfullscreencontentfailedtoshow.Log.d(TAG,"Ad failed to show.")//Don't forget to set the ad reference to null so you//don't show the ad a second time.interstitialAd=null}overridefunonAdShowedFullScreenContent(){//Calledwhenfullscreencontentisshown.Log.d(TAG,"Ad showed fullscreen content.")}overridefunonAdImpression(){//Calledwhenanimpressionisrecordedforanad.Log.d(TAG,"Ad recorded an impression.")}overridefunonAdClicked(){//Calledwhenadisclicked.Log.d(TAG,"Ad was clicked.")}}interstitialAd?.show(this)}else{startGame()if(googleMobileAdsConsentManager.canRequestAds){loadAd()}}}//Hidethebutton,andkickoffthetimer.privatefunstartGame(){binding.retryButton.visibility=View.INVISIBLEcreateTimer(GAME_LENGTH_MILLISECONDS)gamePaused=falsegameOver=false}privatefunpauseGame(){if(gameOver||gamePaused){return}countdownTimer?.cancel()gamePaused=true}privatefunresumeGame(){if(gameOver||!gamePaused){return}createTimer(timerMilliseconds)gamePaused=true}privatefuninitializeMobileAdsSdk(){if(isMobileAdsInitializeCalled.getAndSet(true)){return}//Setyourtestdevices.MobileAds.setRequestConfiguration(RequestConfiguration.Builder().setTestDeviceIds(listOf(TEST_DEVICE_HASHED_ID)).build())CoroutineScope(Dispatchers.IO).launch{//InitializetheGoogleMobileAdsSDKonabackgroundthread.MobileAds.initialize(this@MainActivity){}runOnUiThread{//Loadanadonthemainthread.loadAd()}}}//Resumethegameifit's in progress.publicoverridefunonResume(){super.onResume()resumeGame()}publicoverridefunonPause(){super.onPause()pauseGame()}companionobject{//ThisisanadunitIDforatestad.ReplacewithyourowninterstitialadunitID.privateconstvalAD_UNIT_ID="ca-app-pub-3940256099942544/1033173712"privateconstvalGAME_LENGTH_MILLISECONDS=3000LprivateconstvalTAG="MainActivity"//CheckyourlogcatoutputforthetestdevicehashedIDe.g.//"Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("ABCDEF012345"))//togettestadsonthisdevice" or//"Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("ABCDEF012345") to set this as//adebugdevice".constvalTEST_DEVICE_HASHED_ID="ABCDEF012345"}}
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2026-04-11 UTC."],[],["Interstitial ads are full-screen ads displayed at natural app transition points. Implementations require the Google Mobile Ads SDK. Key actions include loading ads using `InterstitialAd.load()`, with callbacks for success or failure, and handling errors through `LoadAdError`. Display ads with `show()`, after verifying that the ad is not null. A `FullScreenContentCallback` manages ad events, including clicks and dismissal. Use test ads during development, and preload ads to improve user experience, but avoid excessive frequency. The `MyActivity` example (Java/Kotlin) details game implementation, consent management and integration with the SDK.\n"]]