סגנונות מותאמים

הגדרות סגנון מותאם מאפשרות ל-Google Ad Manager לטפל בעיבוד של המודעות המותאמות אישית על סמך סגנונות מותאמים שבחרת בתוך המוצר. תחילה, יש לציין גודל ומיקוד. לאחר מכן מוסיפים HTML , CSS ו-JavaScript כדי להגדיר מודעות רספונסיביות ויוצרות תצוגה איכותית בכל המסכים. אין צורך לבצע רינדור. מערכת Ad Manager מיישמת באופן אוטומטי את הסגנון המותאם אישית שמתאים ליעד. סגנונות מותאמים מוטמעים בדיוק כמו מודעות באנר, באמצעות GAMBannerView. אפשר להשתמש בהן עם גודל קבוע של מודעה שייקבע מראש, או על גודל קבוע של מודעה שנקבע בזמן הריצה.

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

  • Google Mobile Ads SDK מגרסה 7.14.0 ואילך

המדריך הזה מבוסס על ידע מעשי ב-Google Mobile Ads SDK. אם עדיין לא עשיתם זאת, מומלץ לעיין במדריך תחילת העבודה.

גודל קבוע

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

  1. יוצרים פריט בממשק המשתמש של Ad Manager ובוחרים אחד מהגדלים שהוגדרו מראש מהתפריט הנפתח של השדה Size.

  2. ב'כלי לבניית ממשק', מגדירים את הרוחב והגובה של GAMBannerView כך שיתאימו לגודל מוגדר מראש שבחרתם בשלב 1. בקטע באנר אפשר לראות רשימה של גדלים ואת הקבועים התואמים שלהם ב-GADAdSize.

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

גודל הנוזל

במקרים מסוימים, גודל קבוע עשוי להיות לא הגיוני. לדוגמה, יכול להיות שתרצו שרוחב המודעה יתאים לתוכן האפליקציה, אבל צריך שהגובה של המודעה ישתנה באופן דינמי כך שיתאים לתוכן המודעה. כדי לטפל במקרה כזה, אפשר לציין Fluid כגודל המודעה בממשק המשתמש של Ad Manager, שלפיו גודל המודעה נקבע בזמן הריצה באפליקציה. ה-SDK מספק קבוע GADAdSize מיוחד, kGADAdSizeFluid, לטיפול במקרה הזה. הגובה של גודל המודעה הגמיש נקבע באופן דינמי על סמך הרוחב בהגדרת בעל האתר, וכך מאפשר ל-GAMBannerView להתאים את הגובה שלו כך שיתאים לזה של הקריאייטיב.

בקשת נוזל

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

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

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

Swift

bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeFluid),
                           NSValueFromGADAdSize(kGADAdSizeBanner)]

Objective-C

_bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
                              NSValueFromGADAdSize(kGADAdSizeBanner) ];

כך נראה ההטמעה המלאה בקוד:

Swift

var bannerView: GAMBannerView!

override func viewDidLoad() {
  super.viewDidLoad()
  // Create the GAMBannerView and set its width to a width that makes sense for your
  // app. In this example, the width is set to the width of the UIViewController's
  // root view.
  bannerView = GAMBannerView(adSize: kGADAdSizeFluid)
  var frameRect = bannerView.frame
  frameRect.size.width = view.bounds.width
  bannerView.frame = frameRect

  // Uncomment this code for a multisize fluid request.
  // bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeFluid),
  //                            NSValueFromGADAdSize(kGADAdSizeBanner)]

  bannerView.adUnitID = "YOUR_AD_UNIT_ID"
  bannerView.rootViewController = self

  // Make the ad request.
  bannerView.load(GAMRequest())
}

Objective-C

GAMBannerView *_bannerView;

- (void)viewDidLoad {
  [super viewDidLoad];
  // Create the GAMBannerView and set its width to a width that makes sense for your
  // app. In this example, the width is set to the width of the UIViewController's
  // root view.
  _bannerView = [[GAMBannerView alloc] initWithAdSize:kGADAdSizeFluid];
  CGRect frameRect = _bannerView.frame;
  frameRect.size.width = CGRectGetWidth(self.view.bounds);
  _bannerView.frame = frameRect;

  // Uncomment this code for a multisize fluid request.
  // _bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
  //                               NSValueFromGADAdSize(kGADAdSizeBanner) ];

  _bannerView.adUnitID = @"YOUR_AD_UNIT_ID";
  _bannerView.rootViewController = self;

  // Make the ad request.
  [_bannerView loadRequest:[GAMRequest request]];
}

כדי לראות הטמעה לדוגמה של גודל המודעה ב-Ad Manager Fluid, תוכלו להוריד את אפליקציית ההדגמה של iOS API ב-Swift או ב-Objective-C.

הורדת הדגמה של ה-API

הפרוטוקול GADAdSizeRequest

כדאי לדעת את הגובה של מודעת באנר לפני שגודלה משתנה. הקריאה החוזרת (callback) ב-adView:willChangeAdSizeTo: שולחת הודעה למשתמש שהענקתם לו גישה לפני שתצוגת הבאנר משתנה ל-GADAdSize החדש. כדי לקבל הודעה לפני שתצוגת הבאנר תשתנה לגודל החדש של המודעה, הכיתה צריכה לעמוד בדרישות של הפרוטוקול GADAdSizeDelegate.

הנה דוגמה ליישום של הקריאה החוזרת (callback) של adView:willChangeAdSizeTo: שמראה כיצד לקבל את הרוחב והגובה החדשים של הבאנר:

Swift

// To be notified before the banner's ad size changes, your view controller class must
// conform to the GADAdSizeDelegate protocol.
bannerView.adSizeDelegate = self

// MARK: - GADAdSizeDelegate

func adView(_ bannerView: GADBannerView, willChangeAdSizeTo adSize: GADAdSize) {
  let height = adSize.size.height
  let width = adSize.size.width
}

Objective-C

// To be notified before the banner's ad size changes, your view controller class must
// conform to the GADAdSizeDelegate protocol.
_bannerView.adSizeDelegate = self;

#pragma mark - GADAdSizeDelegate

- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)adSize {
  CGFloat height = adSize.size.height;
  CGFloat width = adSize.size.width;
}