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

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

پیش نیازها

  • پلاگین Unity 3.16.0 یا بالاتر.
  • شروع را کامل کنید . برنامه Unity شما از قبل باید افزونه Google Mobile Ads Unity را وارد کرده باشد.

یک شیء تبلیغاتی با پاداش ایجاد کنید

تبلیغات با RewardedAd توسط اشیاء RewardedAd درخواست و نشان داده می شوند. اولین مرحله مورد نیاز برای نشان دادن یک تبلیغ پاداش، نمونه سازی یک شی RewardedAd با فراخوانی سازنده با شناسه واحد تبلیغاتی است که برای بارگذاری تبلیغ استفاده می شود. این در قطعه کد زیر نشان داده شده است:

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

using UnityEngine.Events;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine.UI;
using System;
using System.Collections.Generic;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);
    }
}

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

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

ساده‌ترین راه برای بارگیری آگهی‌های آزمایشی، استفاده از شناسه‌های واحد آگهی آزمایشی اختصاصی ما برای تبلیغات دارای پاداش Android و iOS است:

اندروید

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

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

برای اطلاعات بیشتر درباره نحوه عملکرد تبلیغات آزمایشی SDK Ads Mobile، به Test Ads مراجعه کنید.

یک تبلیغ را بارگیری کنید

برای بارگذاری یک تبلیغ RewardedAd ، loadAd() را فراخوانی کنید. این روش به یک نمونه از AdRequest به عنوان آرگومان نیاز دارد.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }
}

رویدادهای تبلیغاتی

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

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        string adUnitId;
        #if UNITY_ANDROID
            adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        // Called when an ad request has successfully loaded.
        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        // Called when an ad request failed to load.
        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
        // Called when an ad is shown.
        this.rewardedAd.OnAdOpening += HandleRewardedAdOpening;
        // Called when an ad request failed to show.
        this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
        // Called when the user should be rewarded for interacting with the ad.
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        // Called when the ad is closed.
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

    public void HandleRewardedAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdLoaded event received");
    }

    public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToLoad event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdOpening(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdOpening event received");
    }

    public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToShow event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdClosed event received");
    }

    public void HandleUserEarnedReward(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        MonoBehaviour.print(
            "HandleRewardedAdRewarded event received for "
                        + amount.ToString() + " " + type);
    }
}

رویداد OnUserEarnedReward آرگومان های رویداد خاصی را ارائه می دهد. یک نمونه از Reward را با Type و Amount که پاداش داده شده به کاربر را توصیف می کند، ارسال می کند:

public void HandleUserEarnedReward(object sender, Reward args)
{
    string type = args.Type;
    double amount = args.Amount;
     MonoBehaviour.print(
          "HandleRewardedAdRewarded event received for "
              + amount.ToString() + " " + type);
}

رویدادهای تبلیغاتی موجود

OnAdLoaded
زمانی فراخوانی می شود که بارگیری آگهی به پایان برسد.
OnAdFailedToLoad
زمانی که آگهی بارگیری نمی شود، فراخوانی می شود. ویژگی Message AdErrorEventArgs ارائه شده، نوع خرابی رخ داده را توصیف می کند.
OnAdOpening
هنگام نمایش آگهی فراخوانی می شود و صفحه دستگاه را می پوشاند. این مکان مناسبی برای توقف موقت خروجی صدای برنامه یا حلقه بازی در صورت لزوم است.
OnAdFailedToShow
هنگامی که یک تبلیغ نمایش داده نمی شود فراخوانی می شود. ویژگی Message AdErrorEventArgs ارائه شده، نوع خرابی رخ داده را توصیف می کند.
OnUserEarnedReward
زمانی فراخوانی می شود که کاربر باید برای تماشای یک ویدیو جایزه بگیرد. پارامتر Reward پاداشی را که باید به کاربر ارائه شود را توصیف می کند.
OnAdClosed
زمانی فراخوانی می‌شود که آگهی ویدیویی پاداش بسته می‌شود، زیرا کاربر روی نماد بستن یا با استفاده از دکمه برگشت ضربه می‌زند. اگر برنامه شما خروجی صوتی یا حلقه بازی خود را متوقف کرده است، این مکان عالی برای از سرگیری آن است.

آگهی را نمایش دهید

قبل از نمایش یک تبلیغ پاداش به کاربران، باید یک انتخاب صریح برای مشاهده محتوای تبلیغاتی با پاداش در ازای دریافت پاداش به آنها ارائه شود. تبلیغات پاداش همیشه باید یک تجربه انتخابی باشد.

برای نمایش یک تبلیغ پاداش، روش IsLoaded() را بررسی کنید تا بررسی کنید که بارگذاری آن به پایان رسیده است، سپس show() را فراخوانی کنید. در اینجا مثالی از نحوه انجام این کار آورده شده است:

private void UserChoseToWatchAd()
{
  if (this.rewardedAd.IsLoaded()) {
    this.rewardedAd.Show();
  }
}

استفاده از OnAdClosed برای از پیش بارگذاری آگهی پاداش بعدی

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

بهترین روش این است که یک تبلیغ پاداش دار دیگر در رویداد تبلیغاتی OnAdClosed بارگیری کنید تا به محض رد شدن آگهی قبلی، آگهی پاداش بعدی بارگیری شود:

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void CreateAndLoadRewardedAd()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

...

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        this.CreateAndLoadRewardedAd();
    }
}

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

برای بارگیری چندین آگهی با پاداش، مراحل ذکر شده در ایجاد یک شی تبلیغاتی با پاداش را دنبال کنید و برای هر تبلیغی که قصد بارگیری آن را دارید ، یک بخش تبلیغ بارگیری کنید. قطعه کد زیر نحوه بارگیری دو آگهی با پاداش برای دو مکان تبلیغاتی مجزا را نشان می دهد.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd gameOverRewardedAd;
    private RewardedAd extraCoinsRewardedAd;
    ...
    public void Start()
    {
        ...

        this.gameOverRewardedAd = CreateAndLoadRewardedAd(adUnitId);
        this.extraCoinsRewardedAd = CreateAndLoadRewardedAd(adUnitId);
    }

    public RewardedAd CreateAndLoadRewardedAd(string adUnitId)
    {
        RewardedAd rewardedAd = new RewardedAd(adUnitId);

        rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        rewardedAd.LoadAd(request);
        return rewardedAd;
    }
}

نمونه ها