מודעות מעברונים

מודעות מעברון הן מודעות במסך מלא שמכסות את הממשק של האפליקציה המארחת. הן מוצגות בדרך כלל בנקודות מעבר טבעיות בגלישה באפליקציה, למשל במהלך מעבר בין פעילויות או בזמן הפסקה בין שלבי משחק. כשמודעת מעברון מוצגת באפליקציה, המשתמש יכול ללחוץ על המודעה ולהמשיך ליעד שלה, או לסגור אותה ולחזור לאפליקציה. מומלץ לקרוא את אחד ממחקרים המקרה שלנו.

במדריך הזה מוסבר איך לשלב מודעות מעברון באפליקציית Android.

דרישות מוקדמות

  • קוראים את המדריך לתחילת העבודה.
  • תמיד כדאי לבצע בדיקות באמצעות מודעות בדיקה

    כשמפתחים ובודקים אפליקציות, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות שמוצגות למשתמשים. אם לא תעשו את זה, אנחנו עשויים להשעות את החשבון שלכם.

    הדרך הכי קלה לטעון מודעות בדיקה היא להשתמש במזהה יחידת המודעות הייעודי לבדיקה של מודעות מעברון ב-Android:

    ca-app-pub-3940256099942544/1033173712

    הוא הוגדר במיוחד כדי להחזיר לכל בקשה מודעות בדיקה, ואתם יכולים להשתמש בו באפליקציות שלכם בזמן תכנות, בדיקה וניפוי באגים. חשוב להקפיד להחליף אותו במזהה יחידת המודעות שלכם לפני פרסום האפליקציה.

    מידע נוסף על אופן הפעולה של מודעות בדיקה ב-GMA Next Gen SDK זמין במאמר בנושא מודעות בדיקה.

    טעינת מודעה

    כדי לטעון מודעה, GMA Next Gen SDK מציע את האפשרויות הבאות:

    • טעינה באמצעות single ad loading API.

    • טעינה באמצעות ad preloading API, שמבטל את הצורך בטעינה ובשמירה במטמון של מודעות באופן ידני.

    טעינה באמצעות API לטעינת מודעה יחידה

    בדוגמה הבאה אפשר לראות איך טוענים מודעה יחידה:

    Kotlin

    import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
    import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
    import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
    import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
    import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd
    import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback
    import com.google.android.libraries.ads.mobile.sdk.MobileAds
    
    class InterstitialActivity : Activity() {
      private var interstitialAd: InterstitialAd? = null
    
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        // Load ads after you initialize GMA Next Gen SDK.
        InterstitialAd.load(
          AdRequest.Builder(AD_UNIT_ID).build(),
          object : AdLoadCallback<InterstitialAd> {
            override fun onAdLoaded(ad: InterstitialAd) {
              // Interstitial ad loaded.
              interstitialAd = ad
            }
    
            override fun onAdFailedToLoad(adError: LoadAdError) {
              // Interstitial ad failed to load.
              interstitialAd = null
            }
          },
        )
      }
    
      companion object {
        // Sample interstitial ad unit ID.
        const val AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712"
      }
    }
    

    Java

    import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
    import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
    import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
    import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
    import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd;
    import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback;
    import com.google.android.libraries.ads.mobile.sdk.MobileAds;
    
    class InterstitialActivity extends Activity {
      // Sample interstitial ad unit ID.
      private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712";
      private InterstitialAd interstitialAd;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        // Load ads after you initialize GMA Next Gen SDK.
        InterstitialAd.load(
            new AdRequest.Builder(AD_UNIT_ID).build(),
            new AdLoadCallback<InterstitialAd>() {
              @Override
              public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                // Interstitial ad loaded.
                AdLoadCallback.super.onAdLoaded(interstitialAd);
                InterstitialActivity.this.interstitialAd = interstitialAd;
              }
    
              @Override
              public void onAdFailedToLoad(@NonNull LoadAdError adError) {
                // Interstitial ad failed to load.
                AdLoadCallback.super.onAdFailedToLoad(adError);
                interstitialAd = null;
              }
            }
        );
      }
    }
    

    טעינה באמצעות Ad Preloading API

    כדי להתחיל בטעינה מראש:

    1. מפעילים הגדרת טעינה מראש באמצעות בקשה להצגת מודעה.

    2. מפעילים את טעינת המודעות הביניים מראש באמצעות מזהה יחידת המודעות והגדרת הטעינה מראש:

    Kotlin

    private fun startPreloading(adUnitId: String) {
      val adRequest = AdRequest.Builder(adUnitId).build()
      val preloadConfig = PreloadConfiguration(adRequest)
      InterstitialAdPreloader.start(adUnitId, preloadConfig)
    }
    
    

    Java

    private void startPreloading(String adUnitId) {
      AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
      PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
      InterstitialAdPreloader.start(adUnitId, preloadConfig);
    }
    
    

    מודעות הופכות לזמינות באופן רציף בזמן שאתם מציגים אותן. בדוגמה הבאה מתבצעת בדיקה חוזרת של טעינת מודעה מראש:

    Kotlin

    // Polling returns the next available ad and loads another ad in the background.
    val ad = InterstitialAdPreloader.pollAd(adUnitId)
    

    Java

    // Polling returns the next available ad and loads another ad in the background.
    final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
    

    הגדרת InterstitialAdEventCallback

    ה-InterstitialAdEventCallback מטפל באירועים שקשורים להצגת InterstitialAd. לפני שמציגים את מודעת המעברון, צריך להגדיר את הקריאה החוזרת (callback):

    Kotlin

    // Listen for ad events.
    interstitialAd?.adEventCallback =
      object : InterstitialAdEventCallback {
        override fun onAdShowedFullScreenContent() {
          // Interstitial ad did show.
        }
    
        override fun onAdDismissedFullScreenContent() {
          // Interstitial ad did dismiss.
          interstitialAd = null
        }
    
        override fun onAdFailedToShowFullScreenContent(
          fullScreenContentError: FullScreenContentError
        ) {
          // Interstitial ad failed to show.
          interstitialAd = null
        }
    
        override fun onAdImpression() {
          // Interstitial ad did record an impression.
        }
    
        override fun onAdClicked() {
          // Interstitial ad did record a click.
        }
      }
    

    Java

    // Listen for ad events.
    interstitialAd.setAdEventCallback(
        new InterstitialAdEventCallback() {
          @Override
          public void onAdShowedFullScreenContent() {
            // Interstitial ad did show.
            InterstitialAdEventCallback.super.onAdShowedFullScreenContent();
          }
    
          @Override
          public void onAdDismissedFullScreenContent() {
            // Interstitial ad did dismiss.
            InterstitialAdEventCallback.super.onAdDismissedFullScreenContent();
            interstitialAd = null;
          }
    
          @Override
          public void onAdFailedToShowFullScreenContent(
              @NonNull FullScreenContentError fullScreenContentError) {
            // Interstitial ad failed to show.
            InterstitialAdEventCallback.super.onAdFailedToShowFullScreenContent(
                fullScreenContentError);
            initerstitialAd = null;
          }
    
          @Override
          public void onAdImpression() {
            // Interstitial ad did record an impression.
            InterstitialAdEventCallback.super.onAdImpression();
          }
    
          @Override
          public void onAdClicked() {
            // Interstitial ad did record a click.
            InterstitialAdEventCallback.super.onAdClicked();
          }
        }
    );
    

    הצגת המודעה

    כדי להציג מודעת מעברון, משתמשים בשיטה show().

    Kotlin

    // Show the ad.
    interstitialAd?.show(this@InterstitialActivity)
    

    Java

    // Show the ad.
    interstitialAd.show(InterstitialActivity.this);
    

    כמה שיטות מומלצות

    כדאי לשקול אם מודעות מעברון הן סוג המודעה המתאים לאפליקציה שלכם.
    מודעות מעברון פועלות בצורה הכי טובה באפליקציות עם נקודות מעבר טבעיות. נקודת מעבר יכולה להיות סיום של משימה כלשהי באפליקציה, כמו שיתוף תמונה או השלמת שלב במשחק. חשוב לחשוב באילו נקודות בתהליך העבודה של האפליקציה תוצגנה מודעות מעברון ואיך המשתמשים צפויים להגיב.
    חשוב לזכור להשהות את הפעולה כשמציגים מודעת מעברון.
    יש כמה סוגים של מודעות מעברון: טקסט, תמונה, וידאו ועוד. חשוב לוודא שכשהאפליקציה מציגה מודעה מעברית, היא גם מפסיקה להשתמש בחלק מהמשאבים כדי שהמודעה תוכל לנצל אותם. לדוגמה, כשמבצעים קריאה להצגת מודעה מתגמלת, חשוב להשהות את כל פלט האודיו שנוצר על ידי האפליקציה.
    הקפידו להקצות מספיק זמן לטעינה.
    חשוב להציג מודעות מעברון בזמן המתאים, אבל חשוב גם לוודא שהמשתמש לא יצטרך לחכות שהן ייטענו. טעינת המודעה מראש על ידי קריאה ל-load() לפני שמתכוונים לקרוא ל-show() יכולה להבטיח שבזמן שבו צריך להציג מודעת מעברון, האפליקציה תהיה מוכנה עם מודעה שנטענה במלואה.
    אל תציפו את המשתמש במודעות.
    הגדלת התדירות של מודעות מעברון באפליקציה אולי נראית כמו דרך מצוינת להגדיל את ההכנסות, אבל היא עלולה גם לפגוע בחוויית המשתמש ולהקטין את שיעורי הקליקים. חשוב לוודא שההפרעות למשתמשים לא תכופות מדי, כדי שהם יוכלו ליהנות מהשימוש באפליקציה.

    דוגמה

    מורידים ומריצים את האפליקציה לדוגמה שמדגימה את השימוש ב-GMA Next Gen SDK.