إعلانات البانر

اختيار النظام الأساسي: Android iOS Unity Flutter

إعلانات البانر هي إعلانات مستطيلة تشغل جزءًا من تصميم التطبيق. وتظل معروضة على الشاشة أثناء تفاعل المستخدمين مع التطبيق، سواء في الجزء العلوي أو السفلي من الشاشة أو مضمَّنة مع المحتوى أثناء تمرير الشاشة. يمكن إعادة تحميل إعلانات البانر تلقائيًا بعد فترة زمنية محدّدة. يمكنك الاطّلاع على نظرة عامة على إعلانات البانر للحصول على مزيد من المعلومات.

يوضّح لك هذا الدليل كيفية بدء استخدام إعلانات البانر التكيُّفية الثابتة، التي تزيد الأداء إلى أقصى حد من خلال تحسين حجم الإعلان لكل جهاز باستخدام عرض إعلان تحدّده.

إعلان بانر تكيُّفي ثابت

إعلانات البانر الثابتة التكيُّفية هي إعلانات بنسبة عرض إلى ارتفاع ثابتة بدلاً من الإعلانات العادية ذات الحجم الثابت. نسبة العرض إلى الارتفاع مشابهة للمعيار المتّبع في المجال 320x50. بعد تحديد العرض الكامل المتاح، تعرض الدالة إعلانًا بارتفاع مناسب لهذا العرض. لا يتغيّر الارتفاع الأمثل في الطلبات الواردة من الجهاز نفسه، ولا تحتاج طرق العرض المحيطة إلى الانتقال عند إعادة تحميل الإعلان.

المتطلبات الأساسية

اختبار الإعلانات دائمًا باستخدام الإعلانات الاختبارية

عند إنشاء تطبيقاتك واختبارها، احرص على استخدام إعلانات اختبارية بدلاً من الإعلانات المباشرة في مرحلة الإنتاج. وقد يؤدي عدم إجراء ذلك إلى تعليق حسابك.

أسهل طريقة لتحميل الإعلانات التجريبية هي استخدام رقم تعريف وحدة الإعلانات التجريبية المخصّص لإعلانات البانر على iOS:

ca-app-pub-3940256099942544/2435281174

تم إعداد هذا المعرّف خصيصًا لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامه في تطبيقاتك الخاصة أثناء الترميز والاختبار وتصحيح الأخطاء. ما عليك سوى التأكّد من استبداله برقم تعريف وحدتك الإعلانية قبل نشر تطبيقك.

لمزيد من المعلومات عن طريقة عمل الإعلانات الاختبارية في حزمة تطوير البرامج (SDK) لإعلانات الأجهزة الجوّالة، اطّلِع على الإعلانات الاختبارية.

إنشاء GADBannerView

يتم عرض إعلانات البانر في عناصر GADBannerView، لذا فإنّ الخطوة الأولى نحو دمج إعلانات البانر هي تضمين GADBannerView في التدرّج الهرمي للعرض. يتم ذلك عادةً إما آليًا أو من خلال Interface Builder.

آليًا

يمكن أيضًا إنشاء مثيل GADBannerView مباشرةً. ينشئ المثال التالي GADBannerView:

Swift

// Initialize the BannerView.
bannerView = BannerView()

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 = currentOrientationAnchoredAdaptiveBanner(width: 375)
  BannerViewContainer(adSize)
    .frame(width: adSize.size.width, height: adSize.size.height)
}

Objective-C

// Initialize the GADBannerView.
self.bannerView = [[GADBannerView alloc] init];

self.bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:self.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
    [self.bannerView.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor],
    // Center the banner horizontally in the view
    [self.bannerView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
]];

Interface Builder

يمكنك إضافة GADBannerView إلى لوحة عرض أو ملف xib. عند استخدام هذه الطريقة، احرص على إضافة قيود الموضع فقط إلى البانر. على سبيل المثال، عند عرض إعلان بانر تكيُّفي في أسفل الشاشة، اضبط الجزء السفلي من عرض البانر ليكون مساويًا للجزء العلوي من "دليل التنسيق السفلي"، واضبط قيد centerX ليكون مساويًا centerX للعرض الفائق.

لا يزال يتم ضبط حجم إعلان البانر آليًا:

Swift

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

Objective-C

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

تحميل إعلان

بعد إعداد GADBannerView وخصائصه، مثل adUnitID، يحين وقت تحميل إعلان. يتم ذلك من خلال استدعاء loadRequest: على كائن GADRequest:

Swift

bannerView.load(Request())

SwiftUI

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

Objective-C

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

تمثّل عناصر GADRequest طلب إعلان واحدًا، وتحتوي على سمات خاصة بمعلومات الاستهداف وغيرها.

إعادة تحميل إعلان

إذا كنت قد أعددت وحدتك الإعلانية لإعادة التحميل، لن تحتاج إلى طلب إعلان آخر عند تعذُّر تحميل الإعلان. تلتزم حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" بأي معدّل تحديث حدّدته في واجهة مستخدم AdMob. إذا لم تكن قد فعّلت إعادة التحميل، أرسِل طلبًا جديدًا. لمزيد من التفاصيل حول إعادة تحميل الوحدات الإعلانية، مثل ضبط معدّل إعادة التحميل، يُرجى الاطّلاع على ضبط خيار إعادة التحميل التلقائية لإعلانات البانر.

أحداث الإعلانات

من خلال استخدام GADBannerViewDelegate، يمكنك الاستماع إلى أحداث مراحل النشاط، مثل وقت إغلاق إعلان أو مغادرة المستخدم للتطبيق.

التسجيل في أحداث البانر

لتسجيل أحداث الإعلانات الصورية، اضبط السمة delegate في GADBannerView على عنصر ينفّذ البروتوكول GADBannerViewDelegate. بشكل عام، تعمل الفئة التي تنفِّذ الإعلانات الصورية أيضًا كفئة مفوَّضة، وفي هذه الحالة، يمكن ضبط السمة delegate على self.

Swift

bannerView.delegate = self

SwiftUI

banner.delegate = context.coordinator

Objective-C

self.bannerView.delegate = self;

تنفيذ أحداث البانر

تم وضع علامة "اختياري" على كل طريقة في GADBannerViewDelegate، لذا عليك تنفيذ الطرق التي تريدها فقط. ينفّذ هذا المثال كل طريقة ويسجّل رسالة في وحدة التحكّم:

Swift

func bannerViewDidReceiveAd(_ bannerView: BannerView) {
  print(#function)
}

func bannerView(_ bannerView: BannerView, didFailToReceiveAdWithError error: Error) {
  print(#function + ": " + error.localizedDescription)
}

func bannerViewDidRecordClick(_ bannerView: BannerView) {
  print(#function)
}

func bannerViewDidRecordImpression(_ bannerView: BannerView) {
  print(#function)
}

func bannerViewWillPresentScreen(_ bannerView: BannerView) {
  print(#function)
}

func bannerViewWillDismissScreen(_ bannerView: BannerView) {
  print(#function)
}

func bannerViewDidDismissScreen(_ bannerView: BannerView) {
  print(#function)
}

Objective-C

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

Objective-C

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

Objective-C

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

إيقاف التطبيق مؤقتًا واستئنافه

يتضمّن بروتوكول GADBannerViewDelegate طرقًا لإعلامك بالأحداث، مثل عندما يؤدي النقر إلى عرض تراكب أو إغلاقه. إذا أردت تتبُّع ما إذا كانت هذه الأحداث ناتجة عن إعلانات، عليك التسجيل في هذه الطرق GADBannerViewDelegate.

للتصدّي لجميع أنواع العروض التراكبية أو عمليات استدعاء المتصفّح الخارجي، وليس فقط تلك التي تأتي من النقرات على الإعلانات، من الأفضل أن يستمع تطبيقك إلى الطرق المكافئة في UIViewController أو UIApplication. في ما يلي جدول يعرض طرق iOS المكافئة التي يتم استدعاؤها في الوقت نفسه الذي يتم فيه استدعاء طرق GADBannerViewDelegate:

طريقة GADBannerViewDelegate طريقة iOS
bannerViewWillPresentScreen: ‫UIViewController‏ viewWillDisappear:
bannerViewWillDismissScreen: ‫UIViewController‏ viewWillAppear:
bannerViewDidDismissScreen: ‫UIViewController‏ viewDidAppear:

مراجع إضافية

أمثلة على GitHub

الخطوات التالية

إعلانات البانر القابلة للتصغير

إعلانات البانر القابلة للتصغير هي إعلانات بانر تظهر في البداية بشكل مركّب وأكبر على الشاشة، مع زرّ لتصغير الإعلان إلى حجم أصغر. ننصحك باستخدامها لتحسين أدائك بشكل أكبر. يمكنك الاطّلاع على إعلانات البانر القابلة للتصغير لمزيد من التفاصيل.

إعلانات البانر التكيّفية المضمّنة

إعلانات البانر التكيُّفية المضمّنة هي إعلانات بانر أكبر وأطول مقارنةً بإعلانات البانر التكيُّفية الثابتة. ويكون ارتفاعها متغيرًا، ويمكن أن يكون بطول شاشة الجهاز. ننصح باستخدام إعلانات البانر التكيّفية المضمّنة بدلاً من إعلانات البانر التكيّفية الثابتة في التطبيقات التي تعرض إعلانات البانر ضمن محتوى يمكن تصفّحه بالانتقال للأعلى والأسفل. يمكنك الاطّلاع على البانرات التكيّفية المضمّنة للحصول على مزيد من التفاصيل.

استكشاف مواضيع أخرى