تبلیغات بینابینی

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

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

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

پیش‌نیازها

همیشه با تبلیغات آزمایشی تست کنید

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

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

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

برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی SDK تبلیغات موبایل، به بخش تبلیغات آزمایشی مراجعه کنید.

پیاده‌سازی

مراحل اصلی برای ادغام تبلیغات بینابینی عبارتند از:

  1. یک تبلیغ بارگذاری کنید.
  2. برای تماس‌های برگشتی ثبت‌نام کنید.
  3. تبلیغ را نمایش دهید.

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

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

سویفت

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

سویفت‌یو‌آی

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 تبلیغ برگردانده شده اختصاص دهید:

سویفت

interstitial?.fullScreenContentDelegate = self

سویفت‌یو‌آی

interstitialAd?.fullScreenContentDelegate = self

هدف-سی

self.interstitial.fullScreenContentDelegate = self;

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

سویفت

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
}

سویفت‌یو‌آی

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 بارگذاری کنید تا تبلیغ بینابینی بعدی به محض بسته شدن تبلیغ قبلی شروع به بارگیری کند.

نمایش تبلیغ

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

سویفت

ad.present(from: self!)

سویفت‌یو‌آی

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

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

نمایش تبلیغ بینابینی از مدل view:

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

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

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

مراحل بعدی