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

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

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

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

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

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

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

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

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

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

הטמעה

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

  1. טוענים מודעה.
  2. הרשמה לקריאה חוזרת (callback).
  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 ל-Activity Android או מצביע אל 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. המעקב יכול לעזור לכם לעקוב אחרי תהליך האתחול ב-game Loop גלובלי.

    // 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);

הרשמה לקריאה חוזרת (callback)

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

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

דוגמאות ב-GitHub

מדריכי וידאו בסדנה הדיגיטלית של Google Ads

סיפורי הצלחה

השלבים הבאים