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


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

במדריך הזה מוסבר איך לשלב מודעות ביניים באפליקציות ל-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. תצוגת ההורה היא הפניה jobject של JNI ל-Activity ב-Android או למצביע ל-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. לחלופין, במקום לשמור את ה-Future כמשתנה, אפשר לבדוק מדי פעם את סטטוס פעולת האי initialization על ידי קריאה ל-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, ראו שימוש בחוזים עתידיים למעקב אחרי סטטוס השלמת הקריאות ל-method.

טעינת מודעה

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

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

  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

מדריכי וידאו של Mobile Ads Garage

סיפורי הצלחה

השלבים הבאים