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

בחירת פלטפורמה: Android iOS Flutter Android (Legacy)

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

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

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

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

גודל קבוע

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

כדי להגדיר גודל קבוע:

הגדרת גודל מודעה שקטן מגודל המסך של המכשיר או שווה לו. כדי לקבוע את הגודל המקסימלי של המסך ב-iOS 26 ואילך, משתמשים במאפיין UIWindowScene.effectiveGeometry.coordinateSpace. ב-iOS מגרסה 18 ומגרסאות קודמות, צריך להשתמש במאפיין UIWindowScene.coordinateSpace. לפרטים על מגבלות הגודל, קראו את המאמר פתרון בעיות שקשורות לחשיפות שלא מולאו ב-Ad Manager.

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

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

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

גודל גמיש

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

בקשה גמישה

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

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

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

Swift

bannerView.validAdSizes = [nsValue(for: AdSizeFluid), nsValue(for: AdSizeBanner)]

Objective-C

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

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

Swift

var bannerView: AdManagerBannerView!

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 = AdManagerBannerView(adSize: AdSizeFluid)
  var frameRect = bannerView.frame
  frameRect.size.width = view.bounds.width
  bannerView.frame = frameRect

  // Uncomment this code for a multisize fluid request.
  // bannerView.validAdSizes = [nsValue(for: AdSizeFluid), nsValue(for: AdSizeBanner)]

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

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

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, צריך להוריד את אפליקציית ההדגמה של iOS API ב-Swift או ב-Objective-C.

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

פרוטוקול GADAdSizeDelegate

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

הנה דוגמה להטמעה של adView:willChangeAdSizeTo:callback שמראה איך לקבל את הרוחב והגובה החדשים של הבאנר:

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: BannerView, willChangeAdSizeTo adSize: AdSize) {
  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;
}