بینابینی با پاداش (بتا)

بینابینی پاداش‌دار نوعی قالب تبلیغاتی است که به شما امکان می‌دهد برای تبلیغاتی که به‌طور خودکار در طول انتقال طبیعی برنامه ظاهر می‌شوند، پاداش ارائه دهید. برخلاف آگهی‌های دارای پاداش، کاربران مجبور نیستند برای مشاهده یک بینابینی دارای پاداش، شرکت کنند.

پیش نیازها

همیشه با تبلیغات آزمایشی تست کنید

کد نمونه زیر حاوی شناسه واحد تبلیغاتی است که می توانید از آن برای درخواست تبلیغات آزمایشی استفاده کنید. این به طور ویژه برای بازگرداندن تبلیغات آزمایشی به جای تبلیغات تولیدی برای هر درخواست پیکربندی شده است و استفاده از آن را ایمن می کند.

با این حال، پس از اینکه برنامه‌ای را در رابط وب AdMob ثبت کردید و شناسه‌های واحد تبلیغاتی خود را برای استفاده در برنامه خود ایجاد کردید، دستگاه خود را به صراحت به عنوان یک دستگاه آزمایشی در طول توسعه پیکربندی کنید .

اندروید

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

SDK تبلیغات موبایل را راه اندازی کنید

قبل از بارگیری تبلیغات، از برنامه خود بخواهید با فراخوانی MobileAds.Initialize() SDK تبلیغات موبایل را مقداردهی اولیه کند. این کار باید فقط یک بار انجام شود، ایده آل در هنگام راه اندازی برنامه.

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.
        });
    }
}

اگر از میانجی‌گری استفاده می‌کنید، منتظر بمانید تا قبل از بارگیری آگهی‌ها، پاسخ تماس رخ دهد، زیرا این کار اطمینان حاصل می‌کند که همه آداپتورهای میانجی اولیه هستند.

پیاده سازی

مراحل اصلی برای ادغام تبلیغات بینابینی دارای پاداش عبارتند از:

  1. آگهی بینابینی دارای پاداش را بارگیری کنید
  2. [اختیاری] تأیید اعتبار سمت سرور (SSV) تماس های برگشتی
  3. نمایش آگهی بینابینی دارای پاداش با پاسخ به تماس پاداش
  4. به رویدادهای تبلیغاتی بینابینی با پاداش گوش دهید
  5. تبلیغ بین‌المللی با پاداش را پاک کنید
  6. آگهی بینابینی پاداش بعدی را از قبل بارگیری کنید

آگهی بینابینی دارای پاداش را بارگیری کنید

بارگیری یک تبلیغ بینابینی با پاداش با استفاده از روش Load() استاتیک در کلاس RewardedInterstitialAd انجام می شود. روش بارگذاری به شناسه واحد تبلیغات، یک شی AdRequest و یک کنترل کننده تکمیل نیاز دارد که در صورت موفقیت یا عدم موفقیت بارگیری آگهی فراخوانی می شود. آبجکت 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;
          });
  }

[اختیاری] تأیید اعتبار سمت سرور (SSV) تماس های برگشتی

برنامه‌هایی که به داده‌های اضافی در تماس‌های راستی‌آزمایی سمت سرور نیاز دارند، باید از ویژگی داده‌های سفارشی تبلیغات بین‌المللی با پاداش استفاده کنند. هر مقدار رشته تنظیم شده روی یک شیء تبلیغاتی پاداش داده شده به پارامتر query custom_data در SSV ارسال می شود. اگر مقدار داده سفارشی تنظیم نشده باشد، مقدار پارامتر query 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);
        
});

اگر می‌خواهید رشته پاداش سفارشی را تنظیم کنید، باید قبل از نمایش آگهی این کار را انجام دهید.

نمایش آگهی بینابینی دارای پاداش با پاسخ به تماس پاداش

هنگام ارائه تبلیغ خود، باید برای مدیریت پاداش برای کاربر، یک تماس پاسخ ارائه دهید. تبلیغات فقط یک بار در هر بار نمایش داده می شود. از متد 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();
    };
}

منابع اضافی