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

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

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

טעינת מודעה

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

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

  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

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

סיפורי הצלחה

השלבים הבאים