بینابینی پاداشدار نوعی قالب آگهی مشوق است که به شما امکان میدهد برای آگهیهایی که بهطور خودکار درطول انتقالهای طبیعی برنامه ظاهر میشوند پاداش ارائه دهید. برخلاف آگهیهای دارای پاداش، کاربران ملزم نیستند برای مشاهده آگهی بینابینی دارای پاداش موافقت کنند.
پیشنیازها
پیشاز ادامه دادن، 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
نمونههای کامل آگهیهای بینابینی پاداشدار را به زبان برگزیدهتان مشاهده کنید:
مراحل بعدی
درباره حریم خصوصی کاربر بیشتر بدانید.