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

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

يوضِّح لك هذا الدليل كيفية دمج إعلانات البانر من AdMob في أحد تطبيقات iOS. بالإضافة إلى مقتطفات الرمز والتعليمات، يشتمل على معلومات حول تحديد حجم إعلانات البانر بشكلٍ صحيح وروابط تؤدي إلى مراجع إضافية.

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

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

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

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

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

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

إنشاء GADBannerView

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

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

يمكن إضافة GADBannerView إلى مخطط القصة أو ملف xib مثل أي طريقة عرض عادية. عند استخدام هذه الطريقة، احرص على إضافة قيود للعرض والارتفاع لتتوافق مع حجم الإعلان الذي تريد عرضه. على سبيل المثال، عند عرض بانر (320×50)، استخدِم قيدًا للعرض يبلغ 320 نقطة وقيدًا للارتفاع يبلغ 50 نقطة.

آليًا

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

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  var bannerView: GADBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    
    // In this case, we instantiate the banner with desired ad size.
    bannerView = GADBannerView(adSize: GADAdSizeBanner)

    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];
  
  // In this case, we instantiate the banner with desired ad size.
  self.bannerView = [[GADBannerView alloc]
      initWithAdSize:GADAdSizeBanner];

  [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

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

إذا كنت لا تريد استخدام حجم عادي محدّد من خلال ثابت، يمكنك ضبط حجم مخصّص باستخدام السمة GADAdSizeFromCGSize. راجِع قسم حجم البانر للحصول على مزيد من المعلومات.

إعداد GADBannerView المواقع

لتحميل الإعلانات وعرضها، يتطلب GADBannerView ضبط بعض الخصائص.

  • rootViewController - تُستخدم وحدة التحكّم في الملفات الشخصية هذه لتقديم تراكب عند النقر على الإعلان. ويجب ضبطها عادةً على وحدة التحكّم في طريقة العرض التي تحتوي على GADBannerView.
  • adUnitID - هذا هو رقم تعريف الوحدة الإعلانية التي يجب على GADBannerView تحميل الإعلانات منها.

في ما يلي مثال على رمز برمجي يوضّح كيفية ضبط السمتَين المطلوبتَين في طريقة viewDidLoad في UIViewController:

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  ...

  bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
  bannerView.rootViewController = self
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  ...

  self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2934735716";
  self.bannerView.rootViewController = self;
}

تحميل إعلان

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

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  ...

  bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
  bannerView.rootViewController = self
  bannerView.load(GADRequest())
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  ...

  self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2934735716";
  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

يسرد الجدول التالي الأحجام القياسية لإعلانات البانر.

الحجم بالنقاط (عرض × ارتفاع) الوصف مدى توفّر الخدمة ثابت حجم الإعلان
320 × 50 بانر الهواتف والأجهزة اللوحية GADAdSizeBanner
320×100 بانر كبير الهواتف والأجهزة اللوحية GADAdSizeLargeBanner
300 × 250 إعلان مستطيل متوسط من مكتب الإعلانات التفاعلية (IAB) الهواتف والأجهزة اللوحية GADAdSizeMediumRectangle
468×60 إعلان بانر بالحجم الكامل من مكتب IAB الأجهزة اللوحية GADAdSizeFullBanner
728×90 قائمة الصدارة في مكتب الإعلانات التفاعلية (IAB) الأجهزة اللوحية GADAdSizeLeaderboard
العرض الذي تم توفيره × الارتفاع التكيُّفي إعلان البانر التكيّفي الهواتف والأجهزة اللوحية لا ينطبق

أحجام الإعلانات المخصصة

لتحديد حجم بانر مخصّص، اضبط الحجم المطلوب باستخدام GADAdSizeFromCGSize، كما هو موضّح هنا:

Swift

let adSize = GADAdSizeFromCGSize(CGSize(width: 300, height: 50))

Objective-C

GADAdSize size = GADAdSizeFromCGSize(CGSizeMake(300, 50));

مراجع إضافية

أمثلة على GitHub

فيديوهات تعليمية من Mobile Ads Garage

قصص النجاح

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

مزيد من المعلومات حول خصوصية المستخدم.