מודעות באנר

מודעות באנר תופסות מקום בפריסה של האפליקציה, בחלק העליון או התחתון של מסך המכשיר. הם נשארים על המסך בזמן שמשתמשים מבצעים אינטראקציה עם האפליקציה, ואפשר לרענן אותם באופן אוטומטי אחרי פרק זמן מסוים. אם זו הפעם הראשונה שפרסום לנייד הוא דרך מצוינת להתחיל. מקרה לדוגמה

במדריך הזה מוסבר איך לשלב מודעות באנר מ-AdMob באפליקציה ל-iOS. בנוסף לקטעי הקוד ולהוראות, המדריך כולל מידע על הגודל הנכון של מודעות הבאנר וקישורים למשאבים נוספים.

דרישות מוקדמות

ביצוע בדיקות באופן קבוע באמצעות מודעות בדיקה

כשאתם יוצרים ובודקים את האפליקציות שלכם, הקפידו להשתמש במודעות בדיקה ולא במודעות פעילות בשלב ההפקה. אחרת, ייתכן שהחשבון יושעה.

הדרך הקלה ביותר לטעון מודעות לבדיקה היא להשתמש במזהה הייעודי של יחידת מודעות לבדיקה עבור מודעות באנר ל-iOS: ca-app-pub-3940256099942544/2934735716

היא הוגדרה במיוחד להחזרת מודעות בדיקה לכל בקשה, ואפשר להשתמש בה באפליקציות שלכם בזמן תכנות, בדיקה וניפוי באגים. הקפידו להחליף אותו במזהה יחידת המודעות שלכם לפני פרסום האפליקציה.

רוצים לדעת איך פועלות מודעות הבדיקה ב-Mobile Ads SDK? קראו את המאמר מודעות בדיקה.

יצירת GADBannerView

מודעות באנר מוצגות באובייקטים GADBannerView, ולכן השלב הראשון בשילוב מודעות הבאנר הוא לכלול GADBannerView בהיררכיית התצוגות. בדרך כלל עושים זאת באמצעות בונה הממשקים או באופן פרוגרמטי.

בונה ממשקים

ניתן להוסיף GADBannerView לסטוריבורד או לקובץ Xib כמו בכל תצוגה רגילה. כשמשתמשים בשיטה הזו, חשוב להוסיף מגבלות רוחב וגובה בהתאם לגודל המודעה שרוצים להציג. לדוגמה, כשמציגים מודעת באנר (320x50), צריך להשתמש במגבלת רוחב של 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 Mobile Ads מציית לכל קצב רענון שהגדרתם ב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");
}

תוכלו להיעזר בדוגמה של הענקת גישה למודעות כדי לראות הטמעה של שיטות הענקת גישה לבאנר באפליקציית ההדגמה (דמו) של ממשק ה-API ל-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 method:

שיטת GADBannerViewExplorer שיטת iOS
bannerViewWillPresentScreen: viewWillDisappear: של UIViewController
bannerViewWillDismissScreen: viewWillAppear: של UIViewController
bannerViewDidDismissScreen: viewDidAppear: של UIViewController

בטבלה הבאה מפורטים הגדלים הרגילים של מודעות באנר.

גודל בנקודות (WxH) התיאור זמינות קבוע AdSize
320x50 כרזה טלפונים וטאבלטים GADAdSizeBanner
320x100 מודעת באנר גדולה טלפונים וטאבלטים GADAdSizeLargeBanner
300x250 מלבן בינוני של IAB טלפונים וטאבלטים GADAdSizeMediumRectangle
468x60 מודעת באנר של IAB בגודל מלא טאבלטים GADAdSizeFullBanner
728x90 לידרבורד של IAB טאבלטים GADAdSizeLeaderboard
רוחב שסופק x גובה מותאם מודעת באנר מותאמת טלפונים וטאבלטים לא רלוונטי

גדלים מותאמים אישית של מודעות

כדי להגדיר גודל מותאם אישית של מודעת באנר, קבע את הגודל הרצוי באמצעות GADAdSizeFromCGSize, כפי שמוצג כאן:

Swift

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

Objective-C

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

משאבים נוספים

דוגמאות ב-GitHub

מדריכי וידאו בסדנה של מודעות לנייד

סיפורי הצלחה

השלבים הבאים

למידע נוסף על פרטיות המשתמשים