تبلیغات بینابینی پاداشی نوعی قالب تبلیغاتی تشویقی است که به شما امکان میدهد برای تبلیغاتی که به طور خودکار در حین انتقال طبیعی برنامه ظاهر میشوند، پاداش ارائه دهید. برخلاف تبلیغات پاداشی، کاربران برای مشاهده تبلیغات بینابینی پاداشی نیازی به انتخاب ندارند.
پیشنیازها
- راهنمای شروع به کار را تکمیل کنید.
همیشه با تبلیغات آزمایشی تست کنید
کد نمونه زیر شامل یک شناسه واحد تبلیغاتی است که میتوانید از آن برای درخواست تبلیغات آزمایشی استفاده کنید. این کد به طور ویژه طوری پیکربندی شده است که به جای تبلیغات اصلی، تبلیغات آزمایشی را برای هر درخواست برگرداند، که استفاده از آن را ایمن میکند.
با این حال، پس از اینکه یک برنامه را در رابط وب Ad Manager ثبت کردید و شناسههای واحد تبلیغاتی خود را برای استفاده در برنامه خود ایجاد کردید، صریحاً دستگاه خود را در طول توسعه به عنوان یک دستگاه آزمایشی پیکربندی کنید .
/21775744923/example/rewarded-interstitial
مقداردهی اولیه SDK تبلیغات موبایل
قبل از بارگذاری تبلیغات، برنامه خود را طوری تنظیم کنید که افزونه Google Mobile Ads Unity را با فراخوانی MobileAds.Initialize() مقداردهی اولیه کند. این کار فقط یک بار، در حالت ایدهآل، هنگام اجرای برنامه، باید انجام شود.
using GoogleMobileAds;
using GoogleMobileAds.Api;
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
public void Start()
{
// Initialize Google Mobile Ads Unity Plugin.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
}
اگر از میانجیگری استفاده میکنید، قبل از بارگذاری تبلیغات، صبر کنید تا فراخوانی مجدد رخ دهد، زیرا این کار باعث میشود که همه آداپتورهای میانجیگری مقداردهی اولیه شوند.
پیادهسازی
مراحل اصلی برای ادغام تبلیغات بینابینی پاداشدار عبارتند از:
- تبلیغ بینابینی پاداشدار را بارگذاری کنید
- [اختیاری] اعتبارسنجی کالبکهای تأیید سمت سرور (SSV)
- نمایش تبلیغ بینابینی جایزهدار به همراه فراخوانی جایزه
- به رویدادهای تبلیغات بینابینی پاداشدار گوش دهید
- تبلیغات بینابینی جایزهدار را اصلاح کنید
- تبلیغ بینابینی جایزهدار بعدی را از قبل بارگذاری کنید
تبلیغ بینابینی پاداشدار را بارگذاری کنید
بارگذاری یک تبلیغ بینابینی پاداشدار با استفاده از متد استاتیک Load() در کلاس RewardedInterstitialAd انجام میشود. متد load به یک شناسه واحد تبلیغ، یک شیء AdManagerAdRequest و یک کنترلکننده تکمیل نیاز دارد که هنگام موفقیت یا شکست بارگذاری تبلیغ فراخوانی میشود. شیء بارگذاریشده RewardedInterstitialAd به عنوان یک پارامتر در کنترلکننده تکمیل ارائه میشود. مثال زیر نحوه بارگذاری یک RewardedInterstitialAd را نشان میدهد.
// This ad unit is configured to always serve test ads.
private string _adUnitId = "/21775744923/example/rewarded-interstitial";
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 AdManagerAdRequest();
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)
برنامههایی که در فراخوانیهای تأیید سمت سرور به دادههای اضافی نیاز دارند، باید از ویژگی دادههای سفارشی تبلیغات بینابینی پاداشدار استفاده کنند. هر مقدار رشتهای که روی یک شیء تبلیغ پاداشدار تنظیم شود، به پارامتر پرسوجوی 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();
};
}
منابع اضافی
- مثال HelloWorld : پیادهسازی مینیمال از تمام قالبهای تبلیغاتی.