تشغل إعلانات البانر موضعًا داخل تخطيط التطبيق، سواء في الجزء العلوي أو السفلي من شاشة الجهاز. وتظل معروضة على الشاشة أثناء تفاعل المستخدمين مع التطبيق، ويمكن تحديثها تلقائيًا بعد فترة زمنية معينة. إذا كنت مبتدئًا في مجال الإعلان على الأجهزة الجوّالة، فهي مكان رائع للبدء. دراسة الحالة.
يوضِّح لك هذا الدليل كيفية دمج إعلانات البانر من 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 التجريبي.
حالات الاستخدام
في ما يلي بعض الأمثلة على حالات الاستخدام لطرق أحداث الإعلانات هذه.
إضافة إعلان بانر إلى العرض الهرمي بعد استلام الإعلان
قد تحتاج إلى تأخير إضافة 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
قصص النجاح
الخطوات التالية
مزيد من المعلومات حول خصوصية المستخدم.