تبلیغات با پاداش

تبلیغات پاداش، تبلیغاتی هستند که کاربران می‌توانند در ازای دریافت جوایز درون‌برنامه، با آن‌ها تعامل داشته باشند. این راهنما به شما نشان می‌دهد که چگونه تبلیغات با پاداش AdMob را در برنامه Unity ادغام کنید.

چند داستان موفقیت مشتری را بخوانید: مطالعه موردی 1 ، مطالعه موردی 2 .

این راهنما نحوه ادغام تبلیغات با پاداش را در برنامه Unity توضیح می دهد.

پیش نیازها

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

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

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

اندروید

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

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() استاتیک در کلاس RewardedAd انجام می شود. آبجکت RewardedAd بارگذاری شده به عنوان یک پارامتر در کنترل کننده تکمیل ارائه می شود. مثال زیر نحوه بارگیری RewardedAd را نشان می دهد.


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

  private RewardedAd _rewardedAd;

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

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

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

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

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

              _rewardedAd = ad;
          });
  }

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

برنامه‌هایی که به داده‌های اضافی در تماس‌های تأیید سمت سرور نیاز دارند، باید از ویژگی داده سفارشی تبلیغات پاداش استفاده کنند. هر مقدار رشته تنظیم شده روی یک شیء تبلیغاتی پاداش داده شده به پارامتر query custom_data در SSV ارسال می شود. اگر مقدار داده سفارشی تنظیم نشده باشد، مقدار پارامتر query custom_data در پاسخ تماس SSV وجود نخواهد داشت.

نمونه کد زیر نحوه تنظیم گزینه های SSV را پس از بارگیری تبلیغ پاداش نشان می دهد.

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

    // If the operation completed successfully, no error is returned.
    Debug.Log("Rewarded 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 ShowRewardedAd()
{
    const string rewardMsg =
        "Rewarded ad rewarded the user. Type: {0}, amount: {1}.";

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

به رویدادهای تبلیغاتی با پاداش گوش دهید

برای سفارشی‌سازی بیشتر رفتار تبلیغ خود، می‌توانید به تعدادی از رویدادها در چرخه حیات تبلیغ متصل شوید: باز کردن، بسته شدن و غیره. با ثبت نام نماینده مطابق شکل زیر به این رویدادها گوش دهید.

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

تبلیغ پاداش را پاک کنید

هنگامی که کار با RewardedAd تمام شد، مطمئن شوید که متد Destroy() را قبل از رها کردن مرجع خود به آن فراخوانی کنید:

_rewardedAd.Destroy();

این به افزونه اطلاع می دهد که شی دیگر استفاده نمی شود و حافظه ای که اشغال می کند قابل بازیابی است. عدم فراخوانی این روش منجر به نشت حافظه می شود.

آگهی پاداش بعدی را از قبل بارگیری کنید

RewardedAd یک شی یک بار مصرف است. این بدان معنی است که وقتی یک تبلیغ پاداش نشان داده می شود، شیء نمی تواند دوباره استفاده شود. برای درخواست تبلیغ پاداش دار دیگر، باید یک شی RewardedAd جدید ایجاد کنید.

برای تهیه یک تبلیغ پاداش برای فرصت نمایش بعدی، پس از بالا آمدن رویداد تبلیغاتی OnAdFullScreenContentClosed یا OnAdFullScreenContentFailed آگهی پاداش را از قبل بارگیری کنید.

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

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

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

منابع اضافی