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

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

این راهنما بار کردن آگهی برنما تطبیقی لنگرانداخته را در برنامه 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);

اندازه آگهی را کوچک‌تر یا مساوی اندازه صفحه‌نمایش دستگاه تنظیم کنید. برای تعیین حداکثر اندازه صفحه‌نمایش در iOS 26 و نسخه‌های جدیدتر، از UIWindowScene.effectiveGeometry.coordinateSpace دارایی استفاده کنید. در iOS نسخه ۱۸ و قدیمی‌تر، از خصوصیت UIWindowScene.coordinateSpace استفاده کنید. برای جزئیات درباره محدودیت‌های اندازه، الزامات اندازه درخواست آگهی را ببینید.

بار کردن آگهی

وقتی 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 Demo، مثال «نماینده آگهی» را ببینید.

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

مراحل بعدی

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

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

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

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

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