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