Iklan interstisial adalah iklan layar penuh yang menutupi antarmuka aplikasi host-nya. Iklan ini biasanya ditampilkan di titik transisi alami dalam alur aplikasi, seperti di antara aktivitas atau selama waktu jeda antarlevel dalam game. Saat aplikasi menampilkan iklan interstisial, pengguna dapat memilih untuk mengetuk iklan dan melanjutkan ke tujuannya atau menutupnya dan kembali ke aplikasi.
Baca salah satu studi kasus kami.
Panduan ini menjelaskan cara mengintegrasikan iklan interstisial ke dalam aplikasi Android.
Untuk memuat iklan interstisial, panggil metode statis InterstitialAdload() dan teruskan
InterstitialAdLoadCallback untuk menerima iklan yang dimuat atau kemungkinan
error. InterstitialAdLoadCallback menggunakan LoadAdError untuk memberikan detail error.
FullScreenContentCallback menangani peristiwa yang terkait dengan menampilkan
InterstitialAd Anda. Sebelum menampilkan InterstitialAd, pastikan untuk menyetel
callback:
Iklan interstisial harus ditampilkan selama jeda alami dalam alur
aplikasi. Di antara level game adalah contoh yang baik, atau setelah pengguna menyelesaikan
tugas. Untuk menampilkan interstisial, gunakan metode show.
Saat membangun dan menguji aplikasi, pastikan Anda menggunakan iklan percobaan, bukan iklan produksi langsung. Jika Anda tidak melakukannya, akun Anda dapat ditangguhkan.
Cara termudah untuk memuat iklan percobaan adalah dengan menggunakan ID unit iklan percobaan khusus kami untuk iklan interstisial Android:
ca-app-pub-3940256099942544/1033173712
Iklan ini telah dikonfigurasi secara khusus agar menampilkan iklan percobaan untuk setiap permintaan, dan Anda
dapat menggunakannya di aplikasi Anda sendiri saat melakukan coding, pengujian, dan proses debug. Pastikan Anda menggantinya dengan ID unit iklan Anda sendiri sebelum memublikasikan aplikasi.
Untuk mengetahui detail tentang iklan percobaan Google Mobile Ads SDK (Legacy), lihat artikel
Mengaktifkan iklan percobaan.
Kode sumber
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"}}
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2026-07-31 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"]]