راه‌اندازی آگهی‌های برنمایی

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

آگهی‌های برنما آگهی‌های مستطیلی هستند که بخشی از چیدمان برنامه را اشغال می‌کنند. برنماهای تطبیقی لنگرانداخته همیشه روی صفحه هستند، به بالا یا پایین صفحه لنگر انداخته‌اند، و حداکثر ارتفاع آن‌ها ۲۰٪ اندازه صفحه با حداکثر ارتفاع ۱۵۰ پیکسل است. برای بهینه‌سازی اندازه آگهی برای هر دستگاه، از برنماهای تطبیقی استفاده کنید.

این راهنما بار کردن آگهی برنما تطبیقی لنگرانداخته را در برنامه iOS پوشش می‌دهد.

پیش‌نیازها

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

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

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

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

ca-app-pub-3940256099942544/2435281174

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

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

ایجاد GADBannerView

آگهی‌های برنما در GADBannerView عناصر نمایش داده می‌شوند، بنابراین اولین گام برای ادغام آگهی‌های برنما این است که GADBannerView را در سلسله‌مراتب نمای خود بگنجانید. این کار معمولاً به‌صورت برنامه‌نویسی یا ازطریق «سازنده میان‌ها» انجام می‌شود.

برنامه‌ریزی‌شده

GADBannerView را می‌توان مستقیماً نمونه‌سازی کرد. مثال زیر GADBannerView را ایجاد می‌کند:

Swift

// Initialize the banner view.
bannerView = BannerView()
bannerView.delegate = self

bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)

// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
NSLayoutConstraint.activate([
  // Align the banner's bottom edge with the safe area's bottom edge
  bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
  // Center the banner horizontally in the view
  bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
])

SwiftUI

برای استفاده از BannerView، UIViewRepresentable ایجاد کنید:

private struct BannerViewContainer: UIViewRepresentable {
  typealias UIViewType = BannerView
  let adSize: AdSize

  init(_ adSize: AdSize) {
    self.adSize = adSize
  }

  func makeUIView(context: Context) -> BannerView {
    let banner = BannerView(adSize: adSize)
    banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
    banner.load(Request())
    banner.delegate = context.coordinator
    return banner
  }

  func updateUIView(_ uiView: BannerView, context: Context) {}

  func makeCoordinator() -> BannerCoordinator {
    return BannerCoordinator(self)
  }

UIViewRepresentable را به سلسله‌مراتب نما اضافه کنید و مقادیر height و width را مشخص کنید:

var body: some View {
  Spacer()
  // Request an anchored adaptive banner with a width of 375.
  let adSize = largeAnchoredAdaptiveBanner(width: 375)
  BannerViewContainer(adSize)
    .frame(width: adSize.size.width, height: adSize.size.height)
}

آبجکتیو-سی

// Initialize the banner view.
GADBannerView *bannerView = [[GADBannerView alloc] init];
bannerView.delegate = self;
UIView *view = self.view;

bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[view addSubview:bannerView];

// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
[NSLayoutConstraint activateConstraints:@[
  // Align the banner's bottom edge with the safe area's bottom edge
  [bannerView.bottomAnchor
      constraintEqualToAnchor:view.safeAreaLayoutGuide.bottomAnchor],
  // Center the banner horizontally in the view
  [bannerView.centerXAnchor constraintEqualToAnchor:view.centerXAnchor],
]];

self.bannerView = bannerView;

سازنده میانای کاربری

می‌توانید GADBannerView را به فایل xib یا storyboard اضافه کنید. هنگام استفاده از این روش، حتماً فقط محدودیت‌های موقعیت را به برنما اضافه کنید. برای مثال، هنگام نمایش برنمای تطبیقی در پایین صفحه، پایین نمای برنما را برابر با بالای «راهنمای چیدمان پایین» تنظیم کنید، و centerX محدودیت را برابر با centerX نمای فوق‌العاده تنظیم کنید.

اندازه آگهی را تنظیم کنید

برنماهای تطبیقی بزرگ قالب بزرگ‌تری را ارائه می‌دهند که برای چیدمان‌های غیرپیمایشی طراحی شده است. درمقایسه با برنمای تطبیقی لنگرانداخته استاندارد، این برنماها حداکثر ارتفاع بلندتری را مجاز می‌کنند (تا ۲۰٪ ارتفاع صفحه‌نمایش، بین ۵۰ و ۱۵۰ نقطه). این فضای افزایش‌یافته برای محتوای ویدیویی بهینه‌سازی شده است.

مثال زیر اندازه برنمای تطبیقی لنگرشده بزرگ را دریافت می‌کند:

Swift

// Request a large anchored adaptive banner with a width of 375.
bannerView.adSize = largeAnchoredAdaptiveBanner(width: 375)

آبجکتیو-سی

// Request a large anchored adaptive banner with a width of 375.
self.bannerView.adSize = GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(375);

بار کردن آگهی

وقتی GADBannerView در جای خود قرار گرفت و ویژگی‌های آن، مانند adUnitID، پیکربندی شد، وقت آن است که آگهی بار شود. این کار با فراخوانی loadRequest: در شیء GADRequest انجام می‌شود:

Swift

func loadBannerAd(bannerView: BannerView) {
  // Request a large anchored adaptive banner with a width of 375.
  bannerView.adSize = largeAnchoredAdaptiveBanner(width: 375)
  bannerView.load(Request())
}

SwiftUI

banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(Request())

آبجکتیو-سی

// Request a large anchored adaptive banner with a width of 375.
self.bannerView.adSize = GADLargeAnchoredAdaptiveBannerAdSizeWithWidth(375);

[self.bannerView loadRequest:[GADRequest request]];

اشیاء GADRequest نشان‌دهنده یک درخواست آگهی واحد هستند و حاوی ویژگی‌هایی برای مواردی مانند اطلاعات هدف‌یابی هستند.

بازآوری آگهی

اگر واحد آگهی‌تان را برای بازآوری پیکربندی کرده‌اید، وقتی آگهی بار نمی‌شود، لازم نیست آگهی دیگری درخواست کنید. Google Mobile Ads SDK به هر نرخ بازآوری که در AdMob UI مشخص کرده‌اید احترام می‌گذارد. اگر بازآوری را فعال نکرده‌اید، درخواست جدیدی صادر کنید. برای جزئیات بیشتر درباره بازآوری واحد آگهی، مانند تنظیم نرخ بازآوری، به استفاده از بازآوری خودکار برای آگهی‌های برنما مراجعه کنید.

مدیریت تغییرات جهت

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

Swift

override func viewWillTransition(
  to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator
) {
  coordinator.animate(alongsideTransition: { _ in
    // Load a new ad for the new orientation.
  })
}

آبجکتیو-سی

- (void)viewWillTransitionToSize:(CGSize)size
       withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
  [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
    // Load a new ad for the new orientation.
  } completion:nil];
}

رویدادهای آگهی

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

ثبت‌نام برای رویدادهای برنمایشی

برای ثبت‌نام در رویدادهای آگهی برنمایی، ویژگی delegate را در GADBannerView روی شیئی تنظیم کنید که پروتکل GADBannerViewDelegate را پیاده‌سازی می‌کند. به‌طورکلی، کلاسی که تبلیغات برنمایی را پیاده‌سازی می‌کند به‌عنوان کلاس نماینده نیز عمل می‌کند، در این صورت، دارایی delegate می‌تواند روی self تنظیم شود.

Swift

bannerView.delegate = self

SwiftUI

banner.delegate = context.coordinator

آبجکتیو-سی

bannerView.delegate = self;

پیاده‌سازی رویدادهای برنما

هرکدام از روش‌ها در GADBannerViewDelegate به‌عنوان اختیاری علامت‌گذاری شده‌اند، بنابراین فقط باید روش‌هایی را که می‌خواهید پیاده‌سازی کنید. این مثال هر روش را پیاده‌سازی می‌کند و پیامی را در کنسول ثبت می‌کند:

Swift

func bannerViewDidReceiveAd(_ bannerView: BannerView) {
  print("Banner ad loaded.")
}

func bannerView(_ bannerView: BannerView, didFailToReceiveAdWithError error: Error) {
  print("Banner ad failed to load: \(error.localizedDescription)")
}

func bannerViewDidRecordImpression(_ bannerView: BannerView) {
  print("Banner ad recorded an impression.")
}

func bannerViewDidRecordClick(_ bannerView: BannerView) {
  print("Banner ad recorded a click.")
}

func bannerViewWillPresentScreen(_ bannerView: BannerView) {
  print("Banner ad will present screen.")
}

func bannerViewWillDismissScreen(_ bannerView: BannerView) {
  print("Banner ad will dismiss screen.")
}

func bannerViewDidDismissScreen(_ bannerView: BannerView) {
  print("Banner ad did dismiss screen.")
}

آبجکتیو-سی

- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
  NSLog(@"bannerViewDidReceiveAd");
}

- (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error {
  NSLog(@"bannerView:didFailToReceiveAdWithError: %@", error.localizedDescription);
}

- (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView {
  NSLog(@"bannerViewDidRecordImpression");
}

- (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView {
  NSLog(@"bannerViewWillPresentScreen");
}

- (void)bannerViewWillDismissScreen:(GADBannerView *)bannerView {
  NSLog(@"bannerViewWillDismissScreen");
}

- (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView {
  NSLog(@"bannerViewDidDismissScreen");
}

برای پیاده‌سازی روش‌های نماینده برنما در برنامه نمایشی iOS API، نمونه «نماینده آگهی» را ببینید.

Swift Objective-C

موارد استفاده

در اینجا چند نمونه از موارد استفاده برای این روش‌های رویداد آگهی آورده شده است.

پس‌از دریافت آگهی، برنمایی به سلسله‌مراتب نما اضافه کنید

بهتر است افزودن GADBannerView به سلسله مراتب نما را تا پس‌از دریافت آگهی به‌تأخیر بیندازید. با گوش دادن به رویداد bannerViewDidReceiveAd: می‌توانید این کار را انجام دهید:

Swift

func bannerViewDidReceiveAd(_ bannerView: BannerView) {
  // Add banner to view and add constraints.
  addBannerViewToView(bannerView)
}

آبجکتیو-سی

- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
  // Add bannerView to view and add constraints as above.
  [self addBannerViewToView:self.bannerView];
}

پویانمایی کردن آگهی برنما

همچنین می‌توانید از رویداد bannerViewDidReceiveAd: برای پویانمایی آگهی برنمایی پس‌از بازگشت آن استفاده کنید، همان‌طور که در مثال زیر نشان داده شده است:

Swift

func bannerViewDidReceiveAd(_ bannerView: BannerView) {
  bannerView.alpha = 0
  UIView.animate(withDuration: 1, animations: {
    bannerView.alpha = 1
  })
}

آبجکتیو-سی

- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
  bannerView.alpha = 0;
  [UIView animateWithDuration:1.0 animations:^{
    bannerView.alpha = 1;
  }];
}

توقف موقت و ازسرگیری برنامه

پروتکل GADBannerViewDelegate روش‌هایی برای مطلع کردن شما از رویدادها دارد، مثلاً وقتی کلیک باعث می‌شود هم‌پوشانی نمایش داده شود یا بسته شود. اگر می‌خواهید ردیابی کنید که آیا این رویدادها به‌دلیل آگهی‌ها بوده است یا نه، برای این روش‌های GADBannerViewDelegate ثبت‌نام کنید.

برای دریافت همه انواع ارائه‌های رونهاد یا فراخوانی‌های مرورگر خارجی، نه فقط آن‌هایی که از کلیک‌های آگهی می‌آیند، بهتر است برنامه شما به روش‌های معادل در UIViewController یا UIApplication گوش دهد. در اینجا جدولی وجود دارد که روش‌های معادل iOS را نشان می‌دهد که هم‌زمان با روش‌های GADBannerViewDelegate فراخوانی می‌شوند:

روش GADBannerViewDelegate روش iOS
bannerViewWillPresentScreen: ‫viewWillDisappear: از UIViewController
bannerViewWillDismissScreen: ‫viewWillAppear: از UIViewController
bannerViewDidDismissScreen: ‫viewDidAppear: از UIViewController

منابع بیشتر

نمونه‌ها در GitHub

مراحل بعدی

برنماهای جمع‌شدنی

آگهی‌های برنمای جمع‌شدنی آگهی‌های برنمایی هستند که در ابتدا به‌عنوان یک هم‌پوشانی بزرگ‌تر ارائه می‌شوند و دکمه‌ای برای جمع کردن آگهی به اندازه کوچک‌تر دارند. برای بهینه‌سازی بیشتر عملکردتان، استفاده از آن را درنظر بگیرید. برای جزئیات بیشتر، آگهی‌های برنمای جمع‌شدنی را ببینید.

برنماهای تطبیقی به‌خط

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

کاوش موضوعات دیگر