بینابینی با پاداش

پلتفرم مورد نظر: اندروید، iOS، یونیتی ، فلاتر

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

پیش‌نیازها

پیاده‌سازی

مراحل اصلی برای ادغام تبلیغات بینابینی پاداش‌دار به شرح زیر است:

  • بارگذاری یک تبلیغ
  • [اختیاری] اعتبارسنجی فراخوانی‌های SSV
  • برای تماس‌های برگشتی ثبت‌نام کنید
  • نمایش تبلیغ و مدیریت رویداد پاداش

بارگذاری یک تبلیغ

بارگذاری یک تبلیغ با استفاده از متد load(adUnitID:request) در کلاس GADRewardedInterstitialAd انجام می‌شود.

سویفت

func loadAdManagerRewardedInterstitialAd() async {
  do {
    rewardedInterstitialAd = try await RewardedInterstitialAd.load(
      // Replace this ad unit ID with your own ad unit ID.
      with: "adUnitID", request: AdManagerRequest())
    rewardedInterstitialAd?.fullScreenContentDelegate = self
  } catch {
    print("Rewarded ad failed to load with error: \(error.localizedDescription)")
  }
}

سویفت‌یو‌آی

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)")
    }
  }

هدف-سی

- (void)loadAdManagerRewardedInterstitialAd {
  [GADRewardedInterstitialAd loadWithAdUnitID:"adUnitID"
                                      request:[GAMRequest request]
                            completionHandler:^(GADRewardedInterstitialAd *ad, NSError *error) {
                              if (error) {
                                NSLog(@"Failed to load rewarded interstitial ad with error: %@",
                                      error.localizedDescription);
                                return;
                              }
                              self.rewardedInterstitialAd = ad;
                              self.rewardedInterstitialAd.fullScreenContentDelegate = self;
                            }];
}

به جای adUnitID شناسه واحد تبلیغاتی خود را وارد کنید.

[اختیاری] اعتبارسنجی کال‌بک‌های تأیید سمت سرور (SSV)

برنامه‌هایی که در فراخوانی‌های تأیید سمت سرور به داده‌های اضافی نیاز دارند، باید از ویژگی داده‌های سفارشی تبلیغات پاداشی استفاده کنند. هر مقدار رشته‌ای که روی یک شیء تبلیغ پاداشی تنظیم شود، به پارامتر پرس‌وجوی custom_data از فراخوانی SSV ارسال می‌شود. اگر هیچ مقدار داده سفارشی تنظیم نشود، مقدار پارامتر پرس‌وجوی custom_data در فراخوانی SSV وجود نخواهد داشت.

نمونه کد زیر نحوه تنظیم داده‌های سفارشی روی یک شیء تبلیغ بینابینی پاداش‌دار، قبل از درخواست تبلیغ را نشان می‌دهد.

سویفت

private func validateAdManagerServerSideVerification() async {
  do {
    rewardedInterstitialAd = try await RewardedInterstitialAd.load(
      // Replace this ad unit ID with your own ad unit ID.
      with: "adUnitID", request: AdManagerRequest())
    let options = ServerSideVerificationOptions()
    options.customRewardText = ""SAMPLE_CUSTOM_DATA_STRING""
    rewardedInterstitialAd?.serverSideVerificationOptions = options
  } catch {
    print("Rewarded ad failed to load with error: \(error.localizedDescription)")
  }
}

هدف-سی

- (void)validateAdManagerServerSideVerification {
  // Replace this ad unit ID with your own ad unit ID.
  [GADRewardedInterstitialAd loadWithAdUnitID:"adUnitID"
                                      request:[GAMRequest request]
                            completionHandler:^(GADRewardedInterstitialAd *ad, NSError *error) {
                              if (error) {
                                NSLog(@"Rewarded interstitial ad failed to load with error: %@",
                                      error.localizedDescription);
                                return;
                              }
                              self.rewardedInterstitialAd = ad;
                              GADServerSideVerificationOptions *options =
                                  [[GADServerSideVerificationOptions alloc] init];
                              options.customRewardString = @""SAMPLE_CUSTOM_DATA_STRING"";
                              ad.serverSideVerificationOptions = options;
                            }];
}

SAMPLE_CUSTOM_DATA_STRING با داده‌های سفارشی خود جایگزین کنید.

برای تماس‌های برگشتی ثبت‌نام کنید

برای دریافت اعلان‌ها برای رویدادهای ارائه، باید GADFullScreenContentDelegate را به ویژگی fullScreenContentDelegate تبلیغ برگردانده شده اختصاص دهید:

سویفت

rewardedInterstitialAd?.fullScreenContentDelegate = self

سویفت‌یو‌آی

rewardedInterstitialAd?.fullScreenContentDelegate = self

هدف-سی

self.rewardedInterstitialAd.fullScreenContentDelegate = self;

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

سویفت

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).")
}

سویفت‌یو‌آی

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 ارائه دهید تا پاداش را برای کاربر مدیریت کند.

کد زیر بهترین روش برای نمایش یک تبلیغ بینابینی جایزه‌دار را ارائه می‌دهد.

سویفت

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.
  }
}

سویفت‌یو‌آی

برای نمایش تبلیغ، به رویدادهای رابط کاربری در نما گوش دهید.

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.
                                    }];
}

مثال‌ها در گیت‌هاب

نمونه‌های کامل تبلیغات بینابینی پاداش‌دار را به زبان دلخواه خود مشاهده کنید:

مراحل بعدی

درباره حریم خصوصی کاربران بیشتر بدانید.