آگهی‌های بینابینی

پلاتفرم را انتخاب کنید: Android iOS Unity Flutter Android (Legacy)

آگهی‌های بینابینی آگهی‌های تمام‌صفحه‌ای هستند که واسط برنامه را تا زمانی که کاربر آن را ببندد می‌پوشانند. این آگهی‌ها معمولاً در نقاط انتقال طبیعی در جریان برنامه نمایش داده می‌شوند، مثلاً بین فعالیت‌ها یا درطول مکث بین مراحل بازی. وقتی برنامه‌ای آگهی بینابینی نشان می‌دهد، کاربر می‌تواند روی آگهی تک‌ضرب بزند و به مقصد آن برود یا آن را ببندد و به برنامه برگردد. مطالعه موردی.

این راهنما به شما نشان می‌دهد که چگونه آگهی‌های بینابینی را در برنامه iOS ادغام کنید.

پیش‌نیازها

پیش‌از ادامه دادن، Google Mobile Ads SDK را راه‌اندازی کنید.

همیشه با آگهی‌های آزمایشی آزمایش کنید

هنگام ساختن و آزمایش کردن برنامه‌هایتان، حتماً از آگهی‌های آزمایشی استفاده کنید نه آگهی‌های زنده و تولیدی. انجام ندادن این کار می‌تواند منجر به تعلیق حسابتان شود.

آسان‌ترین راه برای بار کردن آگهی‌های آزمایشی استفاده از شناسه واحد آگهی آزمایشی اختصاصی ما برای آگهی‌های بینابینی iOS است:
/21775744923/example/interstitial

این شناسه به‌طور ویژه پیکربندی شده است تا برای هر درخواست، آگهی‌های آزمایشی برگرداند و شما می‌توانید آزادانه از آن در برنامه‌های خودتان هنگام کدنویسی، آزمایش، و اشکال‌زدایی استفاده کنید. فقط مطمئن شوید که قبل‌از انتشار برنامه‌تان، آن را با شناسه واحد آگهی خودتان جایگزین کنید.

برای جزئیات درباره آگهی‌های آزمایشی Google Mobile Ads SDK، به فعال کردن آگهی‌های آزمایشی مراجعه کنید.

پیاده‌سازی

مراحل اصلی برای ادغام آگهی‌های بینابینی عبارتند از:

  1. آگهی را بار کنید.
  2. برای پاسخ تماس ثبت‌نام کنید.
  3. آگهی را نمایش دهید.

بار کردن آگهی

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

Swift

fileprivate func loadInterstitial() async {
  do {
    interstitial = try await AdManagerInterstitialAd.load(
      with: "/21775744923/example/interstitial", request: AdManagerRequest())
    interstitial?.fullScreenContentDelegate = self
  } catch {
    print("Failed to load interstitial ad with error: \(error.localizedDescription)")
  }
}

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, FullScreenContentDelegate {
  private var interstitialAd: InterstitialAd?

  func loadAd() async {
    do {
      interstitialAd = try await InterstitialAd.load(
        with: "ca-app-pub-3940256099942544/4411468910", request: Request())
      interstitialAd?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

آبجکتیو-سی

[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
                                     request:[GAMRequest request]
                           completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
                             if (error) {
                               NSLog(@"Failed to load interstitial ad with error: %@",
                                     [error localizedDescription]);
                               return;
                             }
                             self.interstitial = ad;
                             self.interstitial.fullScreenContentDelegate = self;
                           }];

ثبت‌نام برای پاسخ تماس

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

Swift

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

آبجکتیو-سی

self.interstitial.fullScreenContentDelegate = self;

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

Swift

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
  print("\(#function) called with error: \(error.localizedDescription)")
  // Clear the interstitial ad.
  interstitial = nil
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitial = nil
}

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 interstitial ad.
  interstitialAd = nil
}

آبجکتیو-سی

- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)ad:(id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(NSError *)error {
  NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

- (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 interstitial ad.
  self.interstitial = nil;
}

GAMInterstitialAd شیء یک‌بار مصرف است. این یعنی وقتی آگهی بینابینی نشان داده شد، نمی‌تواند دوباره نشان داده شود. بهترین روش این است که آگهی بینابینی دیگری را در روش adDidDismissFullScreenContent: در GADFullScreenContentDelegate بار کنید تا آگهی بینابینی بعدی به‌محض بسته شدن آگهی قبلی شروع به بار شدن کند.

نمایش آگهی

آگهی‌های بینابینی باید درطول وقفه‌های طبیعی در جریان برنامه نمایش داده شوند. بین سطوح بازی یا پس‌از تکمیل یک کار توسط کاربر نمونه‌های خوبی هستند.

Swift

ad.present(from: self!)

SwiftUI

به رویدادهای واسط کاربر در نما گوش دهید تا تعیین کنید چه زمانی آگهی نشان داده شود.

var body: some View {
  // ...
  }
  .onChange(of: countdownTimer.isComplete) { newValue in
    showGameOverAlert = newValue
  }
  .alert(isPresented: $showGameOverAlert) {
    Alert(
      title: Text("Game Over"),
      message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
      dismissButton: .cancel(
        Text("OK"),
        action: {
          viewModel.showAd()
        }))

آگهی بینابینی را از مدل نما ارائه دهید:

func showAd() {
  guard let interstitialAd = interstitialAd else {
    return print("Ad wasn't ready.")
  }

  interstitialAd.present(from: nil)
}

آبجکتیو-سی

[self.interstitial presentFromRootViewController:self];

روال‌های مطلوب

بررسی کنید که آیا آگهی‌های بینابینی نوع مناسبی از آگهی برای برنامه شما هستند یا نه.
آگهی‌های بینابینی در برنامه‌هایی که نقاط انتقال طبیعی دارند بهترین عملکرد را دارند. پایان یک تکلیف در برنامه، مثل هم‌رسانی تصویر یا تکمیل کردن مرحله بازی، چنین نقطه‌ای را ایجاد می‌کند. چون کاربر انتظار وقفه در کنش را دارد، به‌راحتی می‌توان آگهی بینابینی را بدون مختل کردن تجربه او ارائه کرد. مطمئن شوید که درنظر گرفته‌اید در کدام نقاط از گردش کار برنامه‌تان آگهی‌های بینابینی را نمایش خواهید داد و کاربر احتمالاً چگونه پاسخ خواهد داد.
به‌یاد داشته باشید که هنگام نمایش آگهی بینابینی، کنش را موقتاً متوقف کنید.
انواع مختلفی از آگهی‌های بینابینی وجود دارد: نوشتاری، تصویری، ویدیویی، و غیره. مهم است مطمئن شوید که وقتی برنامه‌تان آگهی بینابینی نمایش می‌دهد، استفاده از برخی منابع را نیز به‌حالت تعلیق درآورد تا آگهی بتواند از آن‌ها استفاده کند. برای مثال، وقتی برای نمایش آگهی بینابینی تماس می‌گیرید، حتماً هرگونه خروجی صوتی را که توسط برنامه‌تان تولید می‌شود موقتاً متوقف کنید. می‌توانید پخش صداها را در گرداننده رویداد adDidDismissFullScreenContent: ازسر بگیرید که وقتی کاربر تعامل با آگهی را تمام کرد فراخوانده می‌شود. علاوه‌براین، توقف موقت هرگونه وظیفه محاسباتی سنگین (مانند حلقه بازی) را درحین نمایش آگهی درنظر بگیرید. این کار تضمین می‌کند که کاربر با گرافیک‌های کند یا غیرواکنش‌گرا یا ویدیوهای با لکنت مواجه نشود.
زمان کافی برای بار شدن درنظر بگیرید.
همان‌طور که مهم است مطمئن شوید آگهی‌های بینابینی را در زمان مناسبی نمایش می‌دهید، مهم است که مطمئن شوید کاربر مجبور نیست برای بار شدن آن‌ها منتظر بماند. بار کردن آگهی پیش‌از زمانی که قصد نمایش آن را دارید می‌تواند تضمین کند که برنامه‌تان آگهی بینابینی کاملاً بارشده‌ای را در زمان نمایش آن آماده دارد.
کاربر را با آگهی بمباران نکنید.
درحالی‌که افزایش تعداد آگهی‌های بینابینی در برنامه‌تان ممکن است راهی عالی برای افزایش درآمد به‌نظر برسد، می‌تواند تجربه کاربری را نیز کاهش دهد و نرخ کلیک را پایین بیاورد. مطمئن شوید که کاربران آن‌قدر مکرر مورد وقفه قرار نمی‌گیرند که دیگر نتوانند از استفاده از برنامه شما لذت ببرند.
از فراخوانی برگشتی تکمیل بارگیری برای نمایش آگهی بینابینی استفاده نکنید.
این امر می‌تواند باعث تجربه کاربری ضعیف شود. درعوض، آگهی را پیش‌بارگیری کنید تا بتوانید آن را نشان دهید. سپس روش canPresentFromRootViewController:error: را در GAMInterstitialAd بررسی کنید تا ببینید آیا برای نمایش آماده است یا نه.

نمونه‌ها در GitHub

نمونه‌های کامل آگهی‌های بینابینی را به زبان ترجیحی‌تان مشاهده کنید:

مراحل بعدی