Os anúncios intersticiais são anúncios de tela cheia que cobrem a interface do app host.
Normalmente, eles são exibidos em pontos de transição naturais no fluxo de um app,
como entre atividades ou durante a pausa entre os níveis de um jogo.
Quando um app mostra um anúncio intersticial, o usuário pode tocar no
anúncio e continuar para o destino ou fechá-lo e retornar ao app.
Leia um dos nossos estudos de caso.
Este guia explica como integrar anúncios intersticiais a um app
Android.
Pré-requisitos
SDK dos anúncios para dispositivos móveis do Google 19.7.0 ou mais recente.
Ao criar e testar seus apps, use anúncios de teste em vez de
publicidade de produção ativa. Sua conta poderá ser suspensa se isso não for feito.
A maneira mais fácil de carregar anúncios de teste é usar nosso ID de bloco de anúncios de teste dedicado para
interstícios do Android:
ca-app-pub-3940256099942544/1033173712
Ele foi configurado especialmente para retornar anúncios de teste para cada solicitação, e você pode
usá-lo nos seus próprios apps durante a programação, o teste e a depuração. Basta
substituí-lo pelo seu ID de bloco de anúncios antes de publicar o app.
Para mais informações sobre como os anúncios de teste do SDK para dispositivos móveis funcionam, consulte
Anúncios de teste.
Carregar um anúncio
Para carregar um anúncio intersticial, chame o método estático
load()InterstitialAd e transmita um
InterstitialAdLoadCallback para receber o anúncio
carregado ou possíveis erros. Assim como outros callbacks de carregamento de formato,
InterstitialAdLoadCallback usa
LoadAdError para fornecer detalhes de erro de maior fidelidade.
Java
importcom.google.android.gms.ads.interstitial.InterstitialAd;importcom.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;publicclassMainActivityextendsActivity{privateInterstitialAdmInterstitialAd;privatestaticfinalStringTAG="MainActivity";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);AdRequestadRequest=newAdRequest.Builder().build();InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712",adRequest,newInterstitialAdLoadCallback(){@OverridepublicvoidonAdLoaded(@NonNullInterstitialAdinterstitialAd){// The mInterstitialAd reference will be null until// an ad is loaded.mInterstitialAd=interstitialAd;Log.i(TAG,"onAdLoaded");}@OverridepublicvoidonAdFailedToLoad(@NonNullLoadAdErrorloadAdError){// Handle the errorLog.d(TAG,loadAdError.toString());mInterstitialAd=null;}});}}
O FullScreenContentCallback processa eventos relacionados à exibição da
InterstitialAd. Antes de mostrar InterstitialAd, defina o
callback:
Java
mInterstitialAd.setFullScreenContentCallback(newFullScreenContentCallback(){@OverridepublicvoidonAdClicked(){// Called when a click is recorded for an ad.Log.d(TAG,"Ad was clicked.");}@OverridepublicvoidonAdDismissedFullScreenContent(){// Called when ad is dismissed.// Set the ad reference to null so you don't show the ad a second time.Log.d(TAG,"Ad dismissed fullscreen content.");mInterstitialAd=null;}@OverridepublicvoidonAdFailedToShowFullScreenContent(AdErroradError){// Called when ad fails to show.Log.e(TAG,"Ad failed to show fullscreen content.");mInterstitialAd=null;}@OverridepublicvoidonAdImpression(){// Called when an impression is recorded for an ad.Log.d(TAG,"Ad recorded an impression.");}@OverridepublicvoidonAdShowedFullScreenContent(){// Called when ad is shown.Log.d(TAG,"Ad showed fullscreen content.");}});
Kotlin
mInterstitialAd?.fullScreenContentCallback=object:FullScreenContentCallback(){overridefunonAdClicked(){// Called when a click is recorded for an ad.Log.d(TAG,"Ad was clicked.")}overridefunonAdDismissedFullScreenContent(){// Called when ad is dismissed.Log.d(TAG,"Ad dismissed fullscreen content.")mInterstitialAd=null}overridefunonAdFailedToShowFullScreenContent(adError:AdError?){// Called when ad fails to show.Log.e(TAG,"Ad failed to show fullscreen content.")mInterstitialAd=null}overridefunonAdImpression(){// Called when an impression is recorded for an ad.Log.d(TAG,"Ad recorded an impression.")}overridefunonAdShowedFullScreenContent(){// Called when ad is shown.Log.d(TAG,"Ad showed fullscreen content.")}}
Mostrar o anúncio
Os anúncios intersticiais precisam ser exibidos durante pausas naturais no fluxo de um app.
Entre as fases de um jogo é um bom exemplo, ou depois que o usuário conclui uma tarefa.
Para mostrar um intersticial, use o
método show().
Java
if(mInterstitialAd!=null){mInterstitialAd.show(MyActivity.this);}else{Log.d("TAG","The interstitial ad wasn't ready yet.");}
Kotlin
if(mInterstitialAd!=null){mInterstitialAd?.show(this)}else{Log.d("TAG","The interstitial ad wasn't ready yet.")}
Algumas práticas recomendadas
Avalie se os anúncios intersticiais são o tipo certo de anúncio para seu app.
Os anúncios intersticiais funcionam melhor em apps com pontos de transição naturais.
A conclusão de uma tarefa em um app, como compartilhar uma imagem ou passar de fase em um
jogo, cria um ponto como esse. Considere em quais pontos do
fluxo de trabalho do app você vai mostrar anúncios intersticiais e qual a probabilidade de o usuário
responder.
Lembre-se de pausar a ação ao exibir um anúncio intersticial.
Há vários tipos diferentes de anúncios intersticiais: de texto, de imagem,
em vídeo e muito mais. É importante garantir que, quando o app exibe um
anúncio intersticial, ele também suspende o uso de alguns recursos para permitir que o anúncio
faça uso deles. Por exemplo, ao fazer uma chamada para exibir um
anúncio intersticial, pause a saída de áudio que esteja sendo produzida pelo app.
Conceda tempo suficiente para o carregamento.
Tão importante quanto garantir a exibição de anúncios intersticiais em um
momento adequado, é importante garantir que o usuário não precise
esperar o carregamento. Carregar o anúncio com antecedência chamando
load() antes de chamar
show() pode garantir que o app tenha um anúncio intersticial totalmente carregado
pronto para quando o momento de exibição chegar.
Não sobrecarregue o usuário com anúncios.
Embora aumentar a frequência dos anúncios intersticiais no seu app possa parecer
uma ótima maneira de aumentar a receita, isso também pode prejudicar a experiência do usuário
e reduzir as taxas de cliques. Certifique-se de que os usuários não sejam interrompidos com muita frequência
de modo que não possam mais usar o app.
Código-fonte
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;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);//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;AdRequestadRequest=newAdRequest.Builder().build();InterstitialAd.load(this,AD_UNIT_ID,adRequest,newInterstitialAdLoadCallback(){@OverridepublicvoidonAdLoaded(@NonNullInterstitialAdinterstitialAd){//ThemInterstitialAdreferencewillbenulluntil//anadisloaded.MyActivity.this.interstitialAd=interstitialAd;adIsLoading=false;Log.i(TAG,"onAdLoaded");Toast.makeText(MyActivity.this,"onAdLoaded()",Toast.LENGTH_SHORT).show();interstitialAd.setFullScreenContentCallback(newFullScreenContentCallback(){@OverridepublicvoidonAdDismissedFullScreenContent(){//Calledwhenfullscreencontentisdismissed.//Makesuretosetyourreferencetonullsoyoudon't//showitasecondtime.MyActivity.this.interstitialAd=null;Log.d("TAG","The ad was dismissed.");}@OverridepublicvoidonAdFailedToShowFullScreenContent(AdErroradError){//Calledwhenfullscreencontentfailedtoshow.//Makesuretosetyourreferencetonullsoyoudon't//showitasecondtime.MyActivity.this.interstitialAd=null;Log.d("TAG","The ad failed to show.");}@OverridepublicvoidonAdShowedFullScreenContent(){//Calledwhenfullscreencontentisshown.Log.d("TAG","The ad was shown.");}});}@OverridepublicvoidonAdFailedToLoad(@NonNullLoadAdErrorloadAdError){//HandletheerrorLog.i(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{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.AppCompatActivityimportcom.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)//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=truevaladRequest=AdRequest.Builder().build()InterstitialAd.load(this,AD_UNIT_ID,adRequest,object:InterstitialAdLoadCallback(){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()}overridefunonAdLoaded(ad:InterstitialAd){Log.d(TAG,"Ad was loaded.")interstitialAd=adadIsLoading=falseToast.makeText(this@MainActivity,"onAdLoaded()",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(){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){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(){Log.d(TAG,"Ad showed fullscreen content.")//Calledwhenadisdismissed.}}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"}}
[null,null,["Última atualização 2024-11-19 UTC."],[[["Interstitial ads are full-screen ads displayed at natural transition points within an Android app, such as between activities or game levels."],["Before publishing your app, replace the test ad unit ID (`ca-app-pub-3940256099942544/1033173712`) with your own ad unit ID to display live ads."],["To avoid overwhelming users and maintain a positive experience, ensure you implement interstitial ads at natural pauses in the app flow and avoid excessive frequency."],["The provided source code offers a comprehensive example of integrating interstitial ads, covering ad loading, display, error handling, and best practices for implementation within an Android activity."],["Remember to implement consent management and allow users to access privacy settings and the ad inspector, as demonstrated in the provided source code."]]],[]]