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


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

במדריך הזה מוסבר איך לשלב מודעות ביניים באפליקציות ל-Android ול-iOS באמצעות Google Mobile Ads C++ SDK.

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

תמיד כדאי לבצע בדיקות באמצעות מודעות בדיקה

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

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

  • Android: ‏ca-app-pub-3940256099942544/1033173712
  • iOS: ‏ca-app-pub-3940256099942544/4411468910

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

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

הטמעה

השלבים העיקריים לשילוב מודעות מעברון הם:

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

הגדרת InterstitialAd

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

  1. מוסיפים את הכותרת הבאה לקוד C++‎ של האפליקציה:

     #include "firebase/gma/interstial_ad.h"

  2. מצהירים על אובייקט InterstitialAd ויוצרים מופע שלו:

     firebase::gma::InterstitialAd* interstitial_ad;
     interstitial_ad = new firebase::gma::InterstitialAd();

  3. מאתחלים את מופע InterstitialAd באמצעות שידור של תצוגת ההורה לסוג AdParent. התצוגה להורה היא הפניה ל-JNI jobject ל-Android Activity או מצביע ל-iOS UIView.

    // my_ad_parent is a jobject reference to an Android Activity or
    // a pointer to an iOS UIView.
    firebase::gma::AdParent ad_parent =
      static_cast<firebase::gma::AdParent>(my_ad_parent);
    firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);
    
  4. במקום לשמור את העתיד כמשתנה, אפשר לבדוק מעת לעת את הסטטוס של פעולת האתחול על ידי הפעלת InitializeLastResult() באובייקט InterstitialAd. האפשרות הזו יכולה לעזור לכם לעקוב אחרי תהליך האתחול בלולאת המשחק הגלובלית.

    // Monitor the status of the future in your game loop:
    firebase::Future<void> result = interstitial_ad->InitializeLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      // Initialization completed.
      if(future.error() == firebase::gma::kAdErrorCodeNone) {
        // Initialization successful.
      } else {
        // An error has occurred.
      }
    } else {
      // Initialization on-going.
    }
    

מידע נוסף על עבודה עם firebase::Future זמין במאמר שימוש ב-Futures כדי לעקוב אחרי סטטוס השלמת הקריאות לשיטות.

טעינת מודעה

טעינה של מודעה מתבצעת באמצעות השיטה LoadAd() באובייקט InterstitialAd. שיטת הטעינה דורשת שאתם מאתחלים את האובייקט InterstitialAd, ושיש לכם מזהה יחידת מודעות ואובייקט AdRequest. מוחזר firebase::Future שאפשר להשתמש בו כדי לעקוב אחרי המצב והתוצאה של פעולת הטעינה.

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

firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);

הרשמה להתקשרות חזרה

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

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

  class ExampleFullScreenContentListener
      : public firebase::gma::FullScreenContentListener {

   public:
    ExampleFullScreenContentListener() {}

    void OnAdClicked() override {
      // This method is invoked when the user clicks the ad.
    }

    void OnAdDismissedFullScreenContent() override {
     // This method is invoked when the ad dismisses full screen content.
    }

    void OnAdFailedToShowFullScreenContent(const