מודעת מעברון מתגמלת (בטא)

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

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

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

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

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

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

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

הטמעה

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

  1. איך טוענים את מודעת המעברון המתגמלת
  2. [אופציונלי] אימות קריאות חוזרות (callback) של אימות בצד השרת (SSV)
  3. הצגה של מודעת המעברון המתגמלת עם קריאה חוזרת (callback) של הפרס
  4. איך להאזין לאירועים של מודעות מעברון מתגמלות
  5. איך מוחקים את מודעת המעברון המתגמלת
  6. טעינה מראש של מודעת המעברון המתגמלת הבאה

איך טוענים את מודעת המעברון המתגמלת

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


  // These ad units are configured to always serve test ads.
#if UNITY_ANDROID
  private string _adUnitId = "ca-app-pub-3940256099942544/5354046379";
#elif UNITY_IPHONE
  private string _adUnitId = "ca-app-pub-3940256099942544/6978759866";
#else
  private string _adUnitId = "unused";
#endif

  private RewardedInterstitialAd _rewardedInterstitialAd;

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

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

      // create our request used to load the ad.
      var adRequest = new AdRequest();
      adRequest.Keywords.Add("unity-admob-sample");

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

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

              _rewardedInterstitialAd = ad;
          });
  }

[אופציונלי] אימות קריאות חוזרות (callback) של אימות בצד השרת (SSV)

אפליקציות שדורשות נתונים נוספים לצורך אימות בצד השרת כדי לשלוח קריאה חוזרת (callback) צריך להשתמש בתכונה 'נתונים מותאמים אישית' של מודעות מעברון מתגמלות. כל ערך מחרוזת שמוגדר באובייקט של מודעה מתגמלת מועבר אל custom_data של השאילתה החוזרת של ה-SSV. אם לא הוגדר ערך של נתונים מותאמים אישית, הפרמטר ערך הפרמטר של השאילתה custom_data לא ייכלל בקריאה החוזרת של SSV.

דוגמת הקוד הבאה מדגימה איך להגדיר את אפשרויות ה-SSV אחרי מודעת המעברון המתגמלת נטענה.

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

        // If the operation completed successfully, no error is returned.
        Debug.Log("Rewarded interstitial ad loaded with response : " +
                   ad.GetResponseInfo());
        
        // Create and pass the SSV options to the rewarded ad.
        var options = new ServerSideVerificationOptions
                              .Builder()
                              .SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
                              .Build()
        ad.SetServerSideVerificationOptions(options);
        
});

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

הצגה של מודעת המעברון המתגמלת עם קריאה חוזרת (callback) של הפרס

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

בקוד הבא מוצגת השיטה הטובה ביותר להצגת מודעה מתגמלת מודעת מעברון.

public void ShowRewardedInterstitialAd()
{
    const string rewardMsg =
        "Rewarded interstitial ad rewarded the user. Type: {0}, amount: {1}.";

    if (rewardedInterstitialAd != null && rewardedInterstitialAd.CanShowAd())
    {
        rewardedInterstitialAd.Show((Reward reward) =>
        {
            // TODO: Reward the user.
            Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
        });
    }
}

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

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

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

איך מוחקים את מודעת המעברון המתגמלת

כשמסיימים עם RewardedInterstitialAd, חשוב להקפיד להפעיל את השיטה Destroy() לפני שמשחררים את ההפניה אליה:

_rewardedInterstitialAd.Destroy();

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

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

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

כדי להכין מודעת מעברון מתגמלת להזדמנות הבאה לחשיפה: לטעון מראש את מודעת המעברון המתגמלת אחרי OnAdFullScreenContentClosed או אירוע מודעה אחד (OnAdFullScreenContentFailed) נבחר.

private void RegisterReloadHandler(RewardedInterstitialAd ad)
{
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += ()
    {
        Debug.Log("Rewarded interstitial ad full screen content closed.");

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

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

משאבים נוספים