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

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

כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט מודעה שמכיל את הנכסים שלה, והאפליקציה – ולא 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 מופיעה בדף Native Ad options (הגדרה של אפשרויות למודעות מותאמות).

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

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

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

Swift

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

Objective-C

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

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

אחרי אתחול של GADAdLoader, קוראים ל-method loadRequest: כדי לבקש מודעה:

Swift

adLoader.load(GADRequest())

Objective-C

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

ה-method 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 אם משתמשים בתהליך בחירת הרשת (Mediation), כי בקשות להצגת מספר מודעות מותאמות לא פועלות כרגע למזהים של יחידות מודעות שהוגדרו לתהליך בחירת הרשת.

אנחנו מחליטים מתי הטעינה הסתיימה

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

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

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

בנוסף, 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.