מודעות באנר

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

במדריך הזה מוסבר איך לשלב מודעות באנר מ-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");
}

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

שיטת GADBannerViewDelegate שיטת 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

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

סיפורי הצלחה

השלבים הבאים

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