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

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

כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט מודעה שמכיל את הנכסים שלה, ולאחר מכן האפליקציה אחראית להצגה של המודעות האלה, ולא ה-SDK של 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 ]];

מספר המודעות לבקשה מוגבל ל-5, ולא בטוח שה-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 עד לסיום הטעינה של הבקשה הקודמת, כפי שמצוין ב-adLoaderDidFinishLoading:.

הצגת המודעה

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