מודעות מותאמות

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

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

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

בדף הזה מוסבר איך להשתמש ב-SDK כדי לטעון מודעות מודעות מותאמות.

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

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

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

הדרך הקלה ביותר לטעון מודעות לבדיקה היא באמצעות המזהה הייעודי של יחידת מודעות לבדיקה עבור מודעות מותאמות ב-iOS:

ca-app-pub-3940256099942544/3986624511

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

מידע נוסף על אופן הפעולה של מודעות הבדיקה של Google Mobile Ads SDK זמין במאמר מודעות בדיקה.

המודעות בטעינה

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

הפעלה של הכלי לטעינת מודעות

לפני שתוכלו לטעון מודעה, עליכם להפעיל את הכלי לטעינת מודעות. הקוד הבא מדגים איך להפעיל GADAdLoader:

Swift

adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

תצטרכו מזהה של יחידת מודעות (אפשר להשתמש במזהה הבדיקה), קבועים קבועים שצריכים לעבור במערך adTypes כדי לציין את הפורמטים המותאמים שרוצים לבקש, ואת כל האפשרויות שרוצים להגדיר בפרמטר options. רשימה של ערכים אפשריים לפרמטר options מופיעה בדף של אפשרויות של מודעות מותאמות.

המערך adTypes צריך להכיל את הקבוע:

הטמעת גישה של הכלי לטעינת מודעות

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

Swift

public func adLoader(_ adLoader: GADAdLoader,
            didReceive nativeAd: GADNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

בקשה להצגת מודעות

אחרי שמפעילים את GADAdLoader, צריך להפעיל את השיטה loadRequest: כדי לבקש מודעה:

Swift

adLoader.load(GADRequest())

Objective-C

[self.adLoader loadRequest:[GADRequest request]];

השיטה loadRequest: ב-GADAdLoader מקבלת את אותם אובייקטים GADRequest כמו מודעות באנר ומודעות מעברון. תוכלו להשתמש באובייקטים של בקשה כדי להוסיף פרטי טירגוט, בדיוק כמו בכל סוגי מודעות אחרים.

טעינת מודעות מרובות (אופציונלי)

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

Swift

let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

מספר המודעות לבקשה מוגבל לחמש, ולא בטוח שה-SDK יחזיר את המספר המדויק של המודעות שביקשת.

מודעות Google שמוחזרות יהיו שונות זו מזו, אבל מודעות ממלאי שמור או מקונים של צד שלישי לא יהיו ייחודיות.

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

קביעה מתי הטעינה תסתיים

אחרי שאפליקציה תתקשר אל loadRequest:, היא תוכל לקבל את תוצאות הבקשה באמצעות קריאות אל:

בקשה למודעה יחידה תוביל לקריאה אחת לאחת משיטות אלה.

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

בנוסף, ב-GADAdLoaderDelegate יש אפשרות לקריאה חוזרת (callback) לגבי adLoaderDidFinishLoading. שיטת הקצאת ההרשאות הזו מציינת שגורם לטעינת מודעות סיים לטעון מודעות, ולא ידווחו מודעות או שגיאות אחרות לגבי הבקשה. זוהי דוגמה לשימוש בו במהלך טעינת מספר מודעות מותאמות בו-זמנית:

Swift

class ViewController: UIViewController, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        rootViewController: self,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
       didReceive nativeAd: GADNativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
    // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Objective-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;
  self.adLoader = [[GADAdLoader alloc]
        initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
      rootViewController:rootViewController
                 adTypes:@[ GADAdLoaderAdTypeNative ]
                 options:@[ multipleAdsOptions ]];

  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

טיפול בבקשות שנכשלו

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

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

קבלת התראות על אירועים של מודעות מותאמות

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

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

לאחר מכן צריך להטמיע את GADNativeAdDelegate כדי לקבל את הקריאות הבאות להאצלה:

Swift

func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Objective-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

שיטות מומלצות

יש לפעול לפי הכללים האלה כשטוענים מודעות.

  • אפליקציות שמשתמשות במודעות מותאמות ברשימה אמורות לשמור מראש את רשימת המודעות.

  • כששומרים מודעות במטמון, מנקים את המטמון וטוענים מחדש אחרי שעה.

  • לא לקרוא ל-loadRequest: ב-GADAdLoader עד לסיום הטעינה של הבקשה הראשונה.

הצגה של המודעה שלך

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