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


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

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

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

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

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

דוגמה ב-GitHub

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

סיפורי הצלחה

השלבים הבאים