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

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

במדריך הזה נסביר איך לשלב מודעות מעברון באפליקציה של Unity.

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

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

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

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

/21775744923/example/interstitial

איך מפעילים את Mobile Ads SDK

לפני טעינת המודעות, צריך להפעיל את Mobile Ads SDK באפליקציה באמצעות הקריאה MobileAds.Initialize(). צריך לעשות זאת רק פעם אחת, רצוי בזמן ההשקה של האפליקציה.

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}

אם אתם משתמשים בתהליך בחירת הרשת (Mediation), כדאי להמתין עד לקריאה החוזרת (callback) לפני טעינת המודעות, כדי לוודא שכל המתאמים של תהליך בחירת הרשת יופעלו.

הטמעה

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

  1. טעינת מודעת המעברון
  2. הצגת המודעה במעברון
  3. האזנה לאירועים של מודעות מעברון
  4. ניקוי מודעת המעברון
  5. טעינת מודעת המעברון הבאה מראש

טעינת מודעת המעברון

הטעינה של מודעת מעברון מתבצעת באמצעות השיטה הסטטית Load() בכיתה InterstitialAd. שיטת הטעינה דורשת מזהה של יחידת מודעות, אובייקט AdManagerAdRequest וטיפול בהשלמה (completion handler) שנקרא כשהטעינה של המודעה מסתיימת בהצלחה או בכישלון. האובייקט AdManagerInterstitialAd שנטען מסופק כפרמטר בטיפול השלמה. הדוגמה הבאה מראה איך לטעון AdManagerInterstitialAd.


  // This ad unit is configured to always serve test ads.
  private string _adUnitId = "/21775744923/example/interstitial";

  private InterstitialAd _interstitialAd;

  /// <summary>
  /// Loads the interstitial ad.
  /// </summary>
  public void LoadInterstitialAd()
  {
      // Clean up the old ad before loading a new one.
      if (_interstitialAd != null)
      {
            _interstitialAd.Destroy();
            _interstitialAd = null;
      }

      Debug.Log("Loading the interstitial ad.");

      // create our request used to load the ad.
      var adRequest = new AdManagerAdRequest();

      // send the request to load the ad.
      AdManagerInterstitialAd.Load(_adUnitId, adRequest,
          (InterstitialAd ad, LoadAdError error) =>
          {
              // if error is not null, the load request failed.
              if (error != null || ad == null)
              {
                  Debug.LogError("interstitial ad failed to load an ad " +
                                 "with error : " + error);
                  return;
              }

              Debug.Log("Interstitial ad loaded with response : "
                        + ad.GetResponseInfo());

              _interstitialAd = ad;
          });
  }

הצגת המודעה במעברון

כדי להציג מודעת מעברון טעונה, צריך לקרוא ל-method‏ Show() במכונה AdManagerInterstitialAd. המודעות עשויות להופיע פעם אחת לכל טעינת דף. משתמשים ב-method‏ CanShowAd() כדי לוודא שהמודעה מוכנה להצגה.

/// <summary>
/// Shows the interstitial ad.
/// </summary>
public void ShowInterstitialAd()
{
    if (_interstitialAd != null && _interstitialAd.CanShowAd())
    {
        Debug.Log("Showing interstitial ad.");
        _interstitialAd.Show();
    }
    else
    {
        Debug.LogError("Interstitial ad is not ready yet.");
    }
}

האזנה לאירועים של מודעות מעברון

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

private void RegisterEventHandlers(InterstitialAd interstitialAd)
{
    // Raised when the ad is estimated to have earned money.
    interstitialAd.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log(String.Format("Interstitial ad paid {0} {1}.",
            adValue.Value,
            adValue.CurrencyCode));
    };
    // Raised when an impression is recorded for an ad.
    interstitialAd.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Interstitial ad recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    interstitialAd.OnAdClicked += () =>
    {
        Debug.Log("Interstitial ad was clicked.");
    };
    // Raised when an ad opened full screen content.
    interstitialAd.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Interstitial ad full screen content opened.");
    };
    // Raised when the ad closed full screen content.
    interstitialAd.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Interstitial ad full screen content closed.");
    };
    // Raised when the ad failed to open full screen content.
    interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Interstitial ad failed to open full screen content " +
                       "with error : " + error);
    };
}

ניקוי מודעת המעברון

כשמסיימים להשתמש ב-AdManagerInterstitialAd, חשוב להפעיל את השיטה Destroy() לפני שמבטלים את ההפניה אליו:

_interstitialAd.Destroy();

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

טעינת מודעת המעברון הבאה מראש

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

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

private void RegisterReloadHandler(InterstitialAd interstitialAd)
{
    // Raised when the ad closed full screen content.
    interstitialAd.OnAdFullScreenContentClosed += ()
    {
        Debug.Log("Interstitial Ad full screen content closed.");

        // Reload the ad so that we can show another as soon as possible.
        LoadInterstitialAd();
    };
    // Raised when the ad failed to open full screen content.
    interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Interstitial ad failed to open full screen content " +
                       "with error : " + error);

        // Reload the ad so that we can show another as soon as possible.
        LoadInterstitialAd();
    };
}

אירועים באפליקציה

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

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

namespace GoogleMobileAds.Api.AdManager;

/// The App event message sent from the ad.
public class AppEvent
{
    // Name of the app event.
    string Name;
    // Argument passed from the app event.
    string Value;
}

האירוע OnAppEventReceived מופעל כשמתרחש אירוע באפליקציה במודעה. דוגמה לטיפול באירוע הזה בקוד:

_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
    Debug.Log($"Received app event from the ad: {args.Name}, {args.Value}.");
};

דוגמה לשינוי צבע הרקע של האפליקציה בהתאם לאירוע באפליקציה עם שם של צבע:

_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
  if (args.Name == "color")
  {
    Color color;
    if (ColorUtility.TryParseColor(arg.Value, out color))
    {
      gameObject.GetComponent<Renderer>().material.color = color;
    }
  }
};

זהו הקריאייטיב התואם ששולח אירוע של אפליקציית צבע:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

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

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

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