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

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

במדריך הזה נסביר איך לשלב מודעות מעברון באפליקציות ל-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. תצוגת ההורה היא הפניה של jobjectJNI ל-Android Activity או מצביע אל UIView של iOS.

    // 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, קראו את המאמר שימוש בחוזים עתידיים כדי לעקוב אחר סטטוס ההשלמה של קריאות לשיטה.

טעינת מודעה

טעינת מודעה מתבצעת באמצעות השיטה 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 AdError& error) override {
      // This method is invoked when the ad failed to show full screen content.
      // Details about the error are contained within the AdError parameter.
    }

    void OnAdImpression() override {
      // This method is invoked when an impression is recorded for an ad.
    }

    void OnAdShowedFullScreenContent() override {
      // This method is invoked when the ad showed its full screen content.
    }
  };

  ExampleFullScreenContentListener* full_screen_content_listener =
    new ExampleFullScreenContentListener();
  interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);

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

הצגת המודעה

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

  firebase::Future<void> result = interstitial_ad->Show();

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

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

מקורות מידע נוספים

דוגמה ב-GitHub

סרטוני הדרכה בסדנה לנייד

סיפורי הצלחה

השלבים הבאים