تبلیغات پاداش، تبلیغاتی هستند که کاربران میتوانند در ازای دریافت جوایز درونبرنامه، با آنها تعامل داشته باشند. این راهنما به شما نشان میدهد که چگونه تبلیغات با پاداش AdMob را در برنامه Unity ادغام کنید. چند داستان موفقیت مشتری را بخوانید: مطالعه موردی 1 ، مطالعه موردی 2 .
پیش نیازها
- پلاگین Unity 3.16.0 یا بالاتر.
- راهنمای شروع را کامل کنید.
یک شیء تبلیغاتی با پاداش ایجاد کنید
تبلیغات با RewardedAd
توسط اشیاء RewardedAd درخواست و نشان داده می شوند. اولین مرحله مورد نیاز برای نمایش یک تبلیغ پاداش، نمونه سازی یک شی RewardedAd
با فراخوانی سازنده با شناسه واحد تبلیغاتی است که برای بارگذاری تبلیغ استفاده می شود. این در قطعه کد زیر نشان داده شده است:
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);
}
}
[اختیاری] تأیید اعتبار سمت سرور (SSV) تماس های برگشتی
برنامههایی که به دادههای اضافی در تماسهای تأیید سمت سرور نیاز دارند، باید از ویژگی داده سفارشی تبلیغات پاداش استفاده کنند. هر مقدار رشته تنظیم شده روی یک شیء تبلیغاتی پاداش داده شده به پارامتر query custom_data
در SSV ارسال می شود. اگر مقدار داده سفارشی تنظیم نشده باشد، مقدار پارامتر query custom_data
در پاسخ تماس SSV وجود نخواهد داشت.
نمونه کد زیر نحوه تنظیم گزینه های SSV را پس از بارگیری تبلیغ پاداش نشان می دهد.
void HandleRewardedAdLoaded(RewardedAd ad, AdFailedToLoadEventArgs error)
{
// Create and pass the SSV options to the rewarded ad.
var options = new ServerSideVerificationOptions
.Builder()
.SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
.Build()
ad.SetServerSideVerificationOptions(options);
}
اگر میخواهید رشته پاداش سفارشی را تنظیم کنید، باید قبل از نمایش آگهی این کار را انجام دهید.
رویدادهای تبلیغاتی
برای سفارشیسازی بیشتر رفتار تبلیغ خود، میتوانید به تعدادی از رویدادها در چرخه عمر تبلیغ متصل شوید: بارگیری، باز کردن، بسته شدن و غیره. با ثبت یک نماینده برای مدیریت رویداد مناسب، به این رویدادها گوش دهید. مهمترین رویداد 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;
}
}
نمونه ها
- مثال HelloWorld - اجرای حداقلی از همه قالبهای تبلیغاتی