Interstitial ads — это полноэкранные объявления, которые покрывают интерфейс своего хост-приложения. Обычно они отображаются в естественных точках перехода в потоке приложения, например, между действиями или во время паузы между уровнями в игре. Когда приложение показывает interstitial ads, у пользователя есть выбор: нажать на рекламу и продолжить к месту назначения или закрыть ее и вернуться в приложение. Прочитайте одно из наших исследований случаев .
В этом руководстве объясняется, как интегрировать рекламные объявления в приложение Android.
Всегда проводите тестирование с помощью тестовых объявлений
При создании и тестировании приложений убедитесь, что вы используете тестовые объявления, а не живые, производственные объявления. Невыполнение этого требования может привести к блокировке вашего аккаунта.
Самый простой способ загрузить тестовую рекламу — использовать наш специальный идентификатор тестового рекламного блока для полноэкранных объявлений Android:
ca-app-pub-3940256099942544/1033173712
Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете свободно использовать его в своих приложениях при кодировании, тестировании и отладке. Просто убедитесь, что вы заменили его на свой собственный идентификатор рекламного блока перед публикацией приложения.
Дополнительную информацию о том, как работают тестовые объявления Mobile Ads SDK, см. в разделе Тестовые объявления .
Загрузить объявление
Чтобы загрузить промежуточную рекламу, вызовите статический метод загрузки InterstitialAdload() и передайте InterstitialAdLoadCallback для получения загруженной рекламы или любых возможных ошибок. Обратите внимание, что, как и другие обратные вызовы загрузки формата, InterstitialAdLoadCallback использует LoadAdError для предоставления более точных сведений об ошибках.
Ява
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 обрабатывает события, связанные с отображением вашего InterstitialAd . Перед показом InterstitialAd обязательно установите обратный вызов:
Ява
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.")}}
Рекламные объявления Interstitial должны отображаться во время естественных пауз в потоке приложения. Хорошим примером является пауза между уровнями игры или после того, как пользователь выполнил задачу. Чтобы показать interstitial, используйте метод show() .
Ява
if(interstitialAd!=null){interstitialAd.show(this);}else{Log.d(TAG,"The interstitial ad is still loading.");}
Подумайте, являются ли межстраничные объявления подходящим типом рекламы для вашего приложения.
Interstitial ads лучше всего работают в приложениях с естественными точками перехода. Завершение задачи в приложении, например, обмен изображением или завершение игрового уровня, создает такую точку. Обязательно продумайте, в каких точках рабочего процесса вашего приложения вы будете показывать interstitial ads и как, скорее всего, отреагирует пользователь.
Не забудьте приостановить действие при отображении рекламного объявления.
Существует несколько различных типов промежуточной рекламы: текст, изображение, видео и т. д. Важно убедиться, что когда ваше приложение отображает промежуточную рекламу, оно также приостанавливает использование некоторых ресурсов, чтобы реклама могла воспользоваться ими. Например, когда вы делаете вызов для отображения промежуточной рекламы, обязательно приостановите любой аудиовыход, производимый вашим приложением.
Уделите достаточно времени загрузке.
Так же, как важно убедиться, что вы показываете промежуточную рекламу в подходящее время, также важно убедиться, что пользователю не придется ждать, пока она загрузится. Загрузка рекламы заранее путем вызова load() до того, как вы собираетесь вызвать show() , может гарантировать, что ваше приложение будет иметь полностью загруженную промежуточную рекламу наготове, когда придет время ее отобразить.
Не перегружайте пользователя рекламой.
Хотя увеличение частоты показов рекламных вставок в вашем приложении может показаться отличным способом увеличить доход, это также может ухудшить пользовательский опыт и снизить показатели кликабельности. Убедитесь, что пользователи не будут отвлекаться так часто, что они больше не смогут наслаждаться использованием вашего приложения.
Исходный код
Моя активность.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;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.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=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"}}
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-06-06 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."]]],["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"]]