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

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

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

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

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

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

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

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

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

إنشاء GADBannerView

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

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

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

آليًا

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

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 API التجريبي.

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:

طريقة GADBannerViewNotification طريقة iOS
bannerViewWillPresentScreen: viewWillDisappear: في UIViewController
bannerViewWillDismissScreen: viewWillAppear: في UIViewController
bannerViewDidDismissScreen: viewDidAppear: في UIViewController

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

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

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

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

Swift

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

Objective-C

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

مراجع إضافية

أمثلة على GitHub

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

قصص النجاح

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

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