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

טעינת מודעות מראש מאפשרת לטעון, לשמור במטמון ולטעון מחדש מודעות באופן אוטומטי ב-GMA Next-Gen SDK. אם אתם משתמשים בטעינה יחידה, כדאי לעבור לטעינת מודעה מראש כדי ליהנות מניהול אוטומטי של מחזור החיים, מניסיונות חוזרים מנוהלים ומבחירת מודעות שעברה אופטימיזציה. פרטים על המושג "טעינת מודעה מראש" זמינים במאמר טעינת מודעה מראש. טעינת מודעה מראש תומכת בפורמטים הבאים: מודעות בפתיחת אפליקציה, מודעות מעברון, מודעות מתגמלות ומודעות מעברון מתגמלות.

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

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

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

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

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

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

Kotlin

שימוש אחד:

// Request a single ad.
val adRequest = AdRequest.Builder(adUnitId).build()
InterstitialAd.load(adRequest, adLoadCallback)

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

// Start the preloader once with a preload configuration.
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)

Java

שימוש אחד:

// Request a single ad.
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
InterstitialAd.load(adRequest, adLoadCallback);

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

// Start the preloader once with a preload configuration.
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);

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

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

בדוגמאות הבאות אפשר לראות איך רושמים קריאות חוזרות (callbacks) לטעינה מראש של מודעה אחת ושל כמה מודעות:

Kotlin

שימוש אחד:

// Listen for single ad request load results.
val adLoadCallback =
  object : AdLoadCallback<InterstitialAd> {
    override fun onAdLoaded(ad: InterstitialAd) {
      // Ad loaded for a single request.
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      Log.d(TAG, "Ad failed to load: ${adError.message}")
    }
  }

InterstitialAd.load(adRequest, adLoadCallback)

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

// Observe cache updates across multiple ads.
val preloadCallback =
  object : PreloadCallback {
    override fun onAdPreloaded(
      preloadId: String,
      responseInfo: ResponseInfo,
    ) {
      // Ad preloaded into the cache and is ready to show.
    }

    override fun onAdFailedToPreload(
      preloadId: String,
      adError: LoadAdError,
    ) {
      Log.d(TAG, "Ad failed to preload: ${adError.message}")
    }

    override fun onAdsExhausted(preloadId: String) {
      // All preloaded ads in the cache have been shown.
      Log.d(TAG, "Ads exhausted for: $preloadId")
    }
  }

InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)

Java

שימוש אחד:

// Listen for single ad request load results.
AdLoadCallback<InterstitialAd> adLoadCallback =
    new AdLoadCallback<InterstitialAd>() {
      @Override
      public void onAdLoaded(@NonNull InterstitialAd ad) {
        // Ad loaded for a single request.
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError adError) {
        Log.d(TAG, "Ad failed to load: " + adError.getMessage());
      }
    };

InterstitialAd.load(adRequest, adLoadCallback);

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

// Observe cache updates across multiple ads.
PreloadCallback preloadCallback =
    new PreloadCallback() {
      @Override
      public void onAdPreloaded(
          @NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        // Ad preloaded into the cache and is ready to show.
      }

      @Override
      public void onAdFailedToPreload(
          @NonNull String preloadId, @NonNull LoadAdError adError) {
        Log.d(TAG, "Ad failed to preload: " + adError.getMessage());
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        // All preloaded ads in the cache have been shown.
        Log.d(TAG, "Ads exhausted for: " + preloadId);
      }
    };

InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

הטעינה מראש מפעילה שיטות של קריאה חוזרת כש-GMA Next-Gen SDK טוען מודעה או שומר אותה במטמון, או כשהאפליקציה מציגה מודעה.

הצגת מודעות מהמטמון

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

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

Kotlin

שימוש אחד:

// Retrieve the ad from a saved variable.
val interstitialAd = this.interstitialAd ?: return
// Display the ad.
interstitialAd.show(activity)

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

// Retrieve the ad directly from the preloader cache.
val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return
// Display the ad.
interstitialAd.show(activity)

Java

שימוש אחד:

// Retrieve the ad from a saved variable.
InterstitialAd interstitialAd = this.interstitialAd;
if (interstitialAd == null) {
  return;
}
// Display the ad.
interstitialAd.show(activity);

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

// Retrieve the ad directly from the preloader cache.
InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId);
if (interstitialAd == null) {
  return;
}
// Display the ad.
interstitialAd.show(activity);

הסרת השמירה הידנית במטמון והטעינה מחדש

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

הסירו את התבניות הבאות מהקוד:

  • שמירת משתני חברים במטמון: מחיקת משתני חברים שמאחסנים אובייקטים של מודעות.
  • טעינות מחדש ידניות: מוחקים קריאות לטעינה אחרי שהמשתמש סוגר את המודעה או שהמודעה לא מוצגת.
  • טיימרים מותאמים אישית לניסיון חוזר: מחיקה של רכיבי handler לניסיון חוזר, לולאות השהיה וטיימרים. ‫GMA Next-Gen SDK retries מנסה מחדש בקשות טעינה מראש שנכשלו באופן אוטומטי.

השוואה בין דוגמאות פתורות

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

Kotlin

שימוש אחד:

// 1. Maintain a member variable to store the ad.
private var interstitialAd: InterstitialAd? = null

// 2. Load the ad and listen for load completion.
private fun loadAd() {
  val adRequest = AdRequest.Builder(adUnitId).build()
  InterstitialAd.load(
    adRequest,
    object : AdLoadCallback<InterstitialAd> {
      override fun onAdLoaded(ad: InterstitialAd) {
        interstitialAd = ad
      }

      override fun onAdFailedToLoad(adError: LoadAdError) {
        interstitialAd = null
      }
    },
  )
}

// 3. Show the saved ad.
private fun showAd(activity: Activity) {
  val interstitialAd = this.interstitialAd ?: return
  interstitialAd.adEventCallback =
    object : InterstitialAdEventCallback {
      override fun onAdDismissedFullScreenContent() {
        // Reload the ad after dismissal in single-load integrations.
        loadAd()
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError,
      ) {
        Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}")
      }
    }
  interstitialAd.show(activity)
}

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

// 1. Start preloading with a callback to listen for loaded ads.
private fun startPreloading(adUnitId: String) {
  val preloadCallback =
    object : PreloadCallback {
      override fun onAdPreloaded(
        preloadId: String,
        responseInfo: ResponseInfo,
      ) {
        // Ad preloaded successfully.
      }

      override fun onAdFailedToPreload(
        preloadId: String,
        adError: LoadAdError,
      ) {
        Log.d(TAG, "Ad failed to preload: ${adError.message}")
      }
    }

  val adRequest = AdRequest.Builder(adUnitId).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
}

// 2. Show the ad immediately after polling.
private fun showAd(activity: Activity, adUnitId: String) {
  val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return
  interstitialAd.adEventCallback =
    object : InterstitialAdEventCallback {
      override fun onAdDismissedFullScreenContent() {
        // Preloading automatically fetches a replacement ad.
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError,
      ) {
        Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}")
      }
    }
  interstitialAd.show(activity)
}

Java

שימוש אחד:

// 1. Maintain a member variable to store the ad.
private InterstitialAd interstitialAd;

// 2. Load the ad and listen for load completion.
private void loadAd() {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  InterstitialAd.load(
      adRequest,
      new AdLoadCallback<InterstitialAd>() {
        @Override
        public void onAdLoaded(@NonNull InterstitialAd ad) {
          interstitialAd = ad;
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          interstitialAd = null;
        }
      });
}

// 3. Show the saved ad.
private void showAd(Activity activity) {
  if (interstitialAd == null) {
    return;
  }
  interstitialAd.setAdEventCallback(
      new InterstitialAdEventCallback() {
        @Override
        public void onAdDismissedFullScreenContent() {
          // Reload the ad after dismissal in single-load integrations.
          loadAd();
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          Log.d(
              TAG,
              "Ad failed to show: " + fullScreenContentError.getMessage());
        }
      });
  interstitialAd.show(activity);
}

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

// 1. Start preloading with a callback to listen for loaded ads.
private void startPreloading(String adUnitId) {
  PreloadCallback preloadCallback =
      new PreloadCallback() {
        @Override
        public void onAdPreloaded(
            @NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
          // Ad preloaded successfully.
        }

        @Override
        public void onAdFailedToPreload(
            @NonNull String preloadId, @NonNull LoadAdError adError) {
          Log.d(TAG, "Ad failed to preload: " + adError.getMessage());
        }
      };

  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}

// 2. Show the ad immediately after polling.
private void showAd(Activity activity, String adUnitId) {
  InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId);
  if (interstitialAd == null) {
    return;
  }
  interstitialAd.setAdEventCallback(
      new InterstitialAdEventCallback() {
        @Override
        public void onAdDismissedFullScreenContent() {
          // Preloading automatically fetches a replacement ad.
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          Log.d(
              TAG,
              "Ad failed to show: " + fullScreenContentError.getMessage());
        }
      });
  interstitialAd.show(activity);
}

השלבים הבאים

במקורות המידע הבאים מוסבר איך להגדיר תכונות של טעינה מראש, לשלב פורמטים של מודעות ולבדוק את ההטמעה: