מודעות מעברון הן מודעות במסך מלא שמכסות את הממשק של האפליקציה המארחת.
הן מוצגות בדרך כלל בנקודות מעבר טבעיות בזרימה של האפליקציה, למשל בין פעילויות או בזמן הפסקה בין שלבים במשחק.
כשבאפליקציה מוצגת מודעת מעברון, המשתמשים יכולים להקיש על המודעה ולהמשיך ליעדה, או לסגור אותה ולחזור לאפליקציה.
כאן אפשר לקרוא על מקרים לדוגמה.
במדריך הזה מוסבר איך לשלב מודעות מעברון באפליקציה ל-Android.
כשאתם מפתחים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה במקום במודעות פעילות בסביבת הייצור. אם לא תעשו זאת, החשבון שלכם עלול להיחסם.
הדרך הקלה ביותר לטעון מודעות בדיקה היא באמצעות המזהה הייעודי של יחידת מודעות לבדיקה עבור מודעות מעברון ב-Android:
ca-app-pub-3940256099942544/1033173712
היא מוגדרת במיוחד להחזרת מודעות בדיקה בכל בקשה, ואפשר להשתמש בה באפליקציות משלכם בזמן התכנות, הבדיקה וניפוי הבאגים. רק הקפידו להחליף אותו במזהה של יחידת המודעות שלכם לפני פרסום האפליקציה.
מידע נוסף על אופן הפעולה של מודעות הבדיקה של Mobile Ads SDK זמין במאמר מודעות בדיקה.
טעינת מודעה
כדי לטעון מודעה מעברון, צריך להפעיל את השיטה הסטטית InterstitialAdload() ולהעביר את הערך InterstitialAdLoadCallback כדי לקבל את המודעה הטעונה או שגיאות אפשריות. שימו לב שכמו פונקציות קריאה חוזרת אחרות של טעינת פורמט, גם InterstitialAdLoadCallback משתמשת ב-LoadAdError כדי לספק פרטי שגיאה ברמת דיוק גבוהה יותר.
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;}});}}
FullScreenContentCallback מטפל באירועים שקשורים להצגת InterstitialAd. לפני הצגת InterstitialAd, חשוב להגדיר את הפונקציה להפעלה חוזרת (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.")}}
הצגת המודעה
מודעות מעברון צריכות להופיע במהלך הפסקות טבעיות בזרימה של האפליקציה. לדוגמה, בין שלבים במשחק או אחרי שהמשתמש משלים משימה.
כדי להציג מודעה מעברון, משתמשים בשיטה 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.")}
כמה שיטות מומלצות
כדאי לבדוק אם מודעות מעברון הן סוג המודעה המתאים לאפליקציה שלכם.
מודעות מעברון פועלות בצורה הטובה ביותר באפליקציות עם נקודות מעבר טבעיות.
נקודת מעבר כזו נוצרת בסיום משימה באפליקציה, כמו שיתוף תמונה או השלמת רמה במשחק. חשוב לשקול באילו נקודות בתהליך העבודה של האפליקציה יופיעו מודעות מעברון, ואיך סביר שהמשתמש יגיב.
חשוב לזכור להשהות את הפעולה כשמוצגת מודעת מעברון.
יש כמה סוגים של מודעות מעברון: טקסט, תמונה, וידאו ועוד. חשוב לוודא שכאשר האפליקציה מציגה מודעה מסוג מודעה מעברון, היא גם משהה את השימוש במשאבים מסוימים כדי לאפשר למודעה לנצל אותם. לדוגמה, כשאתם קוראים להצגת מודעה מעברון, חשוב להשהות את כל הפלט של האודיו שנוצר על ידי האפליקציה.
צריך לאפשר זמן טעינה מתאים.
כמו שחשוב להציג מודעות מעברון בזמן המתאים, חשוב גם לוודא שהמשתמשים לא יצטרכו להמתין עד שהן ייטענו. כדי לוודא שתהיה באפליקציה מודעת מעברון טעונה במלואה כשתרצו להציג אותה, תוכלו לטעון את המודעה מראש באמצעות קריאה ל-load() לפני שאתם מתכוונים לקרוא ל-show().
אסור להציף את המשתמש במודעות.
הגדלת התדירות של מודעות מעברון באפליקציה יכולה להיראות כדרך מצוינת להגדיל את ההכנסות, אבל היא גם עלולה לפגוע בחוויית המשתמש ולהוריד את שיעורי הקליקים. חשוב לוודא שההפרעות למשתמשים לא תהיינה תכופות מדי, כדי שהם יוכלו ליהנות מהשימוש באפליקציה.
קוד מקור
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,["עדכון אחרון: 2024-11-08 (שעון 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."]]],[]]