טעינה מראש של מודעות (אלפא)

טעינה מראש של מודעות היא תכונה לטעינת מודעות שמנוהלת על ידי Google ב-Google Mobile Ads SDK. התכונה מנהלת את הטעינה של המודעות ואת השמירה שלהן במטמון בשמכם. טעינה מראש של מודעות מחייבת שינוי באופן שבו אתם מנהלים את טעינת המודעות. כדי לשפר את הביצועים באמצעות טעינה מראש של מודעות, צריך להשבית את השמירה במטמון בהתאמה אישית ולהעביר את האחריות הזו אל Google Mobile Ads SDK.

לטעינה מראש של מודעות יש יתרונות לעומת טעינה ידנית של מודעות:

  • ניהול הפניות: מחזיק מודעות שנטענו, כך שלא צריך לשמור הפניות עד שמוכנים להציג אותן.
  • טעינה אוטומטית מחדש: טוענת מודעה חדשה באופן אוטומטי כשמוציאים מודעה מהמטמון.
  • ניסיונות חוזרים מנוהלים: ניסיונות חוזרים של בקשות שנכשלו מתבצעים אוטומטית באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
  • טיפול בתפוגה: המערכת מרעננת אוטומטית את המודעות לפני שהתוקף שלהן פג (בדרך כלל אחרי שעה).
  • אופטימיזציה של מטמון: אם משתמשים בגודל מטמון גדול מ-1, Google Mobile Ads SDK המערכת מבצעת אופטימיזציה של סדר המטמון כדי להציג את המודעה הטובה ביותר.

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

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

לפני שממשיכים במדריך, צריך לבצע את הפעולות הבאות:

  • מתקינים את Google Mobile Ads SDK גרסה 24.4.0 ואילך. משאבי מפתחים לגרסאות קודמות זמינים בכתובות 23.6.1 עד 24.3.0, אבל מומלץ להשתמש בגרסה 24.4.0 ואילך ולפעול לפי המדריך הזה.
  • הגדרה של Google Mobile Ads SDK
  • אופציונלי: מורידים ומריצים את האפליקציה לדוגמה ב-Java או ב-Kotlin.

התחלת טעינה מראש של מודעות

כדי להתחיל בטעינה מראש של מודעות, צריך להתקשר למספר start(). צריך להפעיל את השיטה הזו רק פעם אחת בתחילת האפליקציה. אחרי שמפעילים את start(), ‏ Google Mobile Ads SDK טוען מראש מודעות באופן אוטומטי ומנסה שוב בקשות שנכשלו להגדרות שנטענו מראש.

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

Kotlin

// Define a PreloadConfiguration.
val configuration = PreloadConfiguration.Builder("AD_UNIT_ID").build()
// Start the preloading with a given preload ID, preload configuration.
InterstitialAdPreloader.start("AD_UNIT_ID", configuration)

Java

// Define a PreloadConfiguration.
PreloadConfiguration configuration = new PreloadConfiguration.Builder("AD_UNIT_ID").build();
// Start the preloading with a given preload ID, preload configuration.
InterstitialAdPreloader.start("AD_UNIT_ID", configuration);

מחליפים את AD_UNIT_ID במזהה יחידת המודעות.

אחזור והצגה של המודעה שנטענה מראש

כשמשתמשים בטעינה מראש של מודעות, Google Mobile Ads SDK שומר מודעות במטמון. כשרוצים להציג מודעה, קוראים ל-pollAd(). Google Mobile Ads SDK מאחזרת את המודעה הזמינה ומטעינה מראש באופן אוטומטי את המודעה הבאה ברקע.

מומלץ להימנע מהפעלת ה-method הזו עד שמוכנים להציג מודעה. שמירת מודעות במטמון מאפשרת ל-Google Mobile Ads SDK לרענן באופן אוטומטי מודעות שתוקפן פג ולבצע אופטימיזציה של המטמון.

בדוגמה הבאה מוצגת מודעה שנטענה מראש:

Kotlin

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

// [Optional] Interact with the ad as needed.
ad?.onPaidEventListener = OnPaidEventListener {
  // [Optional] Send the impression-level ad revenue information to your preferred
  // analytics server directly within this callback.
}

// Show the ad immediately.
ad?.show(activity)

Java

// pollAd() returns the next available ad and loads another ad in the background.
InterstitialAd ad = InterstitialAdPreloader.pollAd("AD_UNIT_ID");

if (ad != null) {
  // [Optional] Interact with the ad object as needed.
  ad.setOnPaidEventListener(
      adValue -> {
        // [Optional] Send the impression-level ad revenue information to your preferred
        // analytics server directly within this callback.
      });

  // Show the ad immediately.
  ad.show(activity);
}

בדיקת הזמינות של מודעות לטעינה מראש

כדי לבדוק אם יש מודעות זמינות, בוחרים באחת מהאפשרויות הבאות:

קבלת מידע על הזמינות של מודעות שנטענו מראש

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

Kotlin

// Verify that a preloaded ad is available.
if (!InterstitialAdPreloader.isAdAvailable("AD_UNIT_ID")) {
  // No ads are available to show.
}

Java

// Verify that a preloaded ad is available.
if (!InterstitialAdPreloader.isAdAvailable("AD_UNIT_ID")) {
  // No ads are available to show.
}

האזנה לזמינות של מודעות שנטענו מראש

כדאי להירשם לאירועי טרום-טעינה כדי לקבל התראה כשטרום-הטעינה של המודעות מצליח, כשטרום-הטעינה נכשל או כשמטמון המודעות מתרוקן.

אירועי טעינה מראש מיועדים למטרות ניתוח נתונים. בתוך קריאות חוזרות (callback) של אירוע טרום-טעינה:

  • אל תתקשר אל start().
  • מומלץ להימנע מהפעלת הפונקציה pollAd() אלא אם המודעה תוצג באופן מיידי.

בדוגמה הבאה מתבצעת הרשמה לאירועים שקשורים למודעות:

Kotlin

// Define a callback to receive preload events.
val callback =
  object : PreloadCallbackV2() {
    override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo?) {
      // Called when preloaded ads are available.
    }

    override fun onAdsExhausted(preloadId: String) {
      // Called when no preloaded ads are available.
    }

    override fun onAdFailedToPreload(preloadId: String, adError: AdError) {
      // Called when preloaded ads failed to load.
    }
  }

Java

// Define a callback to receive preload events.
PreloadCallbackV2 callback =
    new PreloadCallbackV2() {
      @Override
      public void onAdPreloaded(
          @NonNull String preloadId, @Nullable ResponseInfo responseInfo) {
        // Called when preloaded ads are available.
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        // Called when no preloaded ads are available.
      }

      @Override
      public void onAdFailedToPreload(@NonNull String preloadId, @NonNull AdError adError) {
        // Called when preloaded ads failed to load.
      }
    };

הפסקת הטעינה מראש של מודעות

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

Kotlin

// Stops the preloading and destroy preloaded ads.
InterstitialAdPreloader.destroy("AD_UNIT_ID")
// Stops the preloading and destroy all ads.
InterstitialAdPreloader.destroyAll()

Java

// Stops the preloading and destroy preloaded ads.
InterstitialAdPreloader.destroy("AD_UNIT_ID");
// Stops the preloading and destroy all ads.
InterstitialAdPreloader.destroyAll();

הגדרת גודל המאגר

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

Kotlin

// Define a PreloadConfiguration and buffer up to 5 preloaded ads.
val configuration = PreloadConfiguration.Builder("AD_UNIT_ID").setBufferSize(5).build()

Java

// Define a PreloadConfiguration and buffer up to 5 preloaded ads.
PreloadConfiguration configuration =
    new PreloadConfiguration.Builder("AD_UNIT_ID").setBufferSize(5).build();