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

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

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

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

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

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

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

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

إنّ أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية التجريبية المخصص لبانرات iOS: ca-app-pub-3940256099942544/2435281174

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

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

إنشاء GADBannerView

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

آليًا

ويمكن أيضًا إنشاء مثيل GADBannerView مباشرةً. في ما يلي مثال على كيفية إنشاء علامة GADBannerView تتم محاذاتها إلى منتصف الجزء السفلي من المنطقة الآمنة من الشاشة:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  var bannerView: GADBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    
    let viewWidth = view.frame.inset(by: view.safeAreaInsets).width

    // Here the current interface orientation is used. Use
    // GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or
    // GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a
    // particular orientation,
    let adaptiveSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
    bannerView = GADBannerView(adSize: adaptiveSize)

    addBannerViewToView(bannerView)
  }

  func addBannerViewToView(_ bannerView: GADBannerView) {
    bannerView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(bannerView)
    view.addConstraints(
      [NSLayoutConstraint(item: bannerView,
                          attribute: .bottom,
                          relatedBy: .equal,
                          toItem: view.safeAreaLayoutGuide,
                          attribute: .bottom,
                          multiplier: 1,
                          constant: 0),
       NSLayoutConstraint(item: bannerView,
                          attribute: .centerX,
                          relatedBy: .equal,
                          toItem: view,
                          attribute: .centerX,
                          multiplier: 1,
                          constant: 0)
      ])
   }
   
}

Objective-C

@import GoogleMobileAds;

@interface ViewController ()

@property(nonatomic, strong) GADBannerView *bannerView;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  // Here safe area is taken into account, hence the view frame is used after the
  // view has been laid out.
  CGRect frame = UIEdgeInsetsInsetRect(self.view.frame, self.view.safeAreaInsets);
  CGFloat viewWidth = frame.size.width;

  // Here the current interface orientation is used. If the ad is being preloaded
  // for a future orientation change or different orientation, the function for the
  // relevant orientation should be used.
  GADAdSize adaptiveSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth);
  // In this case, we instantiate the banner with desired ad size.
  self.bannerView = [[GADBannerView alloc] initWithAdSize:adaptiveSize];

  [self addBannerViewToView:self.bannerView];
}

- (void)addBannerViewToView:(UIView *)bannerView {
  bannerView.translatesAutoresizingMaskIntoConstraints = NO;
  [self.view addSubview:bannerView];
  [self.view addConstraints:@[
    [NSLayoutConstraint constraintWithItem:bannerView
                               attribute:NSLayoutAttributeBottom
                               relatedBy:NSLayoutRelationEqual
                                  toItem:self.view.safeAreaLayoutGuide
                               attribute:NSLayoutAttributeBottom
                              multiplier:1
                                constant:0],
    [NSLayoutConstraint constraintWithItem:bannerView
                               attribute:NSLayoutAttributeCenterX
                               relatedBy:NSLayoutRelationEqual
                                  toItem:self.view
                               attribute:NSLayoutAttributeCenterX
                              multiplier:1
                                constant:0]
                                ]];
}
  
@end

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

أداة إنشاء الواجهة

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

لا يزال حجم إعلان البانر معيّنًا آليًا:

Swift

  bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)

Objective-C

  self.bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth);

تحميل إعلان

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

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  ...
  
  //  Set the ad unit ID and view controller that contains the GADBannerView.
  bannerView.adUnitID = "ca-app-pub-3940256099942544/2435281174"
  bannerView.rootViewController = self

  bannerView.load(GADRequest())
}

Objective-C

-   (void)viewDidLoad {
  [super viewDidLoad];
  ...
  
  //  Set the ad unit ID and view controller that contains the GADBannerView.
  self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2435281174";
  self.bannerView.rootViewController = self;

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

ويمثل العناصرGADRequest طلب إعلان واحدًا، ويحتوي على خصائص لأشياء مثل معلومات الاستهداف.

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

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

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

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

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

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADBannerViewDelegate {

  var bannerView: GADBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    ...
    bannerView.delegate = self
  }
}

Objective-C

@import GoogleMobileAds;

@interface ViewController () <GADBannerViewDelegate>

@property(nonatomic, strong) GADBannerView *bannerView;

@end

@implementation ViewController

-   (void)viewDidLoad {
  [super viewDidLoad];
  ...
  self.bannerView.delegate = self;
}

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

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

Swift

func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
  print("bannerViewDidReceiveAd")
}

func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
  print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
  print("bannerViewDidRecordImpression")
}

func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
  print("bannerViewWillPresentScreen")
}

func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
  print("bannerViewWillDIsmissScreen")
}

func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
  print("bannerViewDidDismissScreen")
}

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.

Swift الهدف-ج

حالات الاستخدام

في ما يلي بعض الأمثلة على حالات استخدام طرق أحداث الإعلانات هذه.

إضافة بانر إلى هيكلية طرق العرض بعد تلقّي إعلان

قد تحتاج إلى تأخير إضافة "GADBannerView" إلى التسلسل الهرمي للملفات الشخصية إلى أن يتم عرض إعلان معيّن. يمكنك إجراء ذلك من خلال الاستماع إلى حدث "bannerViewDidReceiveAd:" على النحو التالي:

Swift

func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
  // Add banner to view and add constraints as above.
  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: GADBannerView) {
  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: viewWillDisappear: في UIViewController
bannerViewWillDismissScreen: viewWillAppear: في UIViewController
bannerViewDidDismissScreen: viewDidAppear: في UIViewController

مراجع إضافية

أمثلة على GitHub

  • مثال على إعلانات البانر التكيُّفية الثابتة: Swift | Objective-C

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

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

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

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

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

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