بینابینی پاداشدار نوعی قالب آگهی مشوق است که به شما امکان میدهد برای آگهیهایی که بهطور خودکار درطول انتقالهای طبیعی برنامه ظاهر میشوند پاداش ارائه دهید. برخلاف آگهیهای دارای پاداش، کاربران ملزم نیستند برای مشاهده آگهی بینابینی دارای پاداش موافقت کنند.
پیشنیازها
پیشاز ادامه دادن، Google Mobile Ads SDK را راهاندازی کنید.
پیادهسازی
مراحل اصلی برای ادغام آگهیهای بینابینی پاداشدار به شرح زیر است:
- بار کردن آگهی
- [اختیاری] تأیید درستی پاسخهای تماس SSV
- ثبتنام برای پاسخ تماس
- نمایش آگهی و مدیریت رویداد پاداش
بار کردن آگهی
بار کردن آگهی بااستفاده از روش load(adUnitID:request)
در کلاس GADRewardedInterstitialAd انجام میشود.
Swift
SwiftUI
import GoogleMobileAds
class RewardedInterstitialViewModel: NSObject, ObservableObject,
FullScreenContentDelegate
{
@Published var coins = 0
private var rewardedInterstitialAd: RewardedInterstitialAd?
func loadAd() async {
do {
rewardedInterstitialAd = try await RewardedInterstitialAd.load(
with: "ca-app-pub-3940256099942544/6978759866", request: Request())
rewardedInterstitialAd?.fullScreenContentDelegate = self
} catch {
print(
"Failed to load rewarded interstitial ad with error: \(error.localizedDescription)")
}
}
آبجکتیو-سی
adUnitID را با شناسه واحد آگهیتان جایگزین کنید.
[اختیاری] اعتبارسنجی کردن برگشتیهای درستیسنجی سمت سرور (SSV)
برنامههایی که در درخواستهای برگشتی درستیسنجی سمت سرور به دادههای اضافی نیاز دارند باید از ویژگی داده سفارشی آگهیهای پاداشدار استفاده کنند. هر مقدار رشتهای که روی یک شیء آگهی پاداشدار تنظیم شده باشد، به پارامتر پُرسمان custom_data در برگشت تماس SSV منتقل میشود. اگر مقدار داده سفارشی تنظیم نشده باشد، مقدار پارامتر پُرسمان custom_data در
بازخوانی SSV وجود نخواهد داشت.
نمونه کد زیر نشان میدهد که چگونه دادههای سفارشی را روی یک شیء آگهی بینابینی پاداشدار قبلاز درخواست آگهی تنظیم کنید.
Swift
آبجکتیو-سی
SAMPLE_CUSTOM_DATA_STRING را با دادههای سفارشی خودتان جایگزین کنید.
ثبتنام برای پاسخ تماس
برای دریافت اعلانهای رویدادهای ارائه، باید
GADFullScreenContentDelegate را به دارایی fullScreenContentDelegate
آگهی برگشتی اختصاص دهید:
Swift
rewardedInterstitialAd?.fullScreenContentDelegate = self
SwiftUI
rewardedInterstitialAd?.fullScreenContentDelegate = self
آبجکتیو-سی
self.rewardedInterstitialAd.fullScreenContentDelegate = self;
وقتی آگهی باموفقیت یا ناموفق ارائه میشود و وقتی بسته میشود، پروتکل GADFullScreenContentDelegate تماسهای برگشتی را مدیریت میکند. کد زیر نحوه پیادهسازی پروتکل و اختصاص آن به آگهی را نشان میدهد:
Swift
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called.")
// Clear the rewarded interstitial ad.
rewardedInterstitialAd = nil
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called with error: \(error.localizedDescription).")
}
SwiftUI
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the rewarded interstitial ad.
rewardedInterstitialAd = nil
}
آبجکتیو-سی
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
// Clear the rewarded interstitial ad.
self.rewardedInterstitialAd = nil;
}
- (void)ad:(id)ad didFailToPresentFullScreenContentWithError:(NSError *)error {
NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
}
نمایش آگهی و مدیریت رویداد پاداش
هنگام ارائه آگهیتان، باید یک شیء GADUserDidEarnRewardHandler ارائه دهید
تا پاداش کاربر را مدیریت کند.
کد زیر بهترین روش برای نمایش آگهی بینابینی پاداشدار را ارائه میدهد.
Swift
func showRewardedInterstitialAd() {
guard let rewardedInterstitialAd = rewardedInterstitialAd else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
rewardedInterstitialAd.present(from: nil) {
let reward = rewardedInterstitialAd.adReward
print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
// TODO: Reward the user.
}
}
SwiftUI
به رویدادهای واسط کاربر در نمای نمایش آگهی گوش دهید.
var rewardedInterstitialBody: some View {
// ...
}
.onChange(
of: showAd,
perform: { newValue in
if newValue {
viewModel.showAd()
}
}
)
آگهی بینابینی پاداشدار را از مدل نمای ارائه دهید:
func showAd() {
guard let rewardedInterstitialAd = rewardedInterstitialAd else {
return print("Ad wasn't ready.")
}
rewardedInterstitialAd.present(from: nil) {
let reward = rewardedInterstitialAd.adReward
print("Reward amount: \(reward.amount)")
self.addCoins(reward.amount.intValue)
}
}
آبجکتیو-سی
- (void)showRewardedInterstitialAd {
[self.rewardedInterstitialAd presentFromRootViewController:self
userDidEarnRewardHandler:^{
GADAdReward *reward = self.rewardedInterstitialAd.adReward;
NSString *rewardMessage = [NSString
stringWithFormat:@"Reward received with "
@"currency %@ , amount %ld",
reward.type, [reward.amount longValue]];
NSLog(@"%@", rewardMessage);
// TODO: Reward the user.
}];
}
مثالها در GitHub
نمونههای کامل آگهیهای بینابینی پاداشدار را به زبان ترجیحیتان ببینید:
مراحل بعدی
درباره حریم خصوصی کاربر بیشتر بدانید.