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

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

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

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

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

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

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

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

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

ca-app-pub-3940256099942544/3986624511

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

פרטים על מודעות בדיקה ב-Google Mobile Ads SDK זמינים במאמר בנושא הפעלת מודעות בדיקה.

טעינת מודעות

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

אתחול רכיב טעינת המודעות

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

Swift

adLoader = AdLoader(
  adUnitID: "nativeAdUnitID",
  // The UIViewController parameter is optional.
  rootViewController: self,
  // To receive native ads, the ad loader's delegate must
  // conform to the NativeAdLoaderDelegate protocol.
  adTypes: [.native],
  // Use nil for default options.
  options: nil)

מחליפים את nativeAdUnitID במזהה יחידת המודעות.

Objective-C

self.adLoader =
    [[GADAdLoader alloc] initWithAdUnitID:"kNativeAdUnitID"
                       // The UIViewController parameter is optional.
                       rootViewController:self
                                  // To receive native ads, the ad loader's delegate must
                                  // conform to the NativeAdLoaderDelegate protocol.
                                  adTypes:@[ GADAdLoaderAdTypeNative ]
                                  // Use nil for default options.
                                  options:nil];

מחליפים את kNativeAdUnitID במזהה יחידת המודעות.

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

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

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

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

Swift

func adLoader(_ adLoader: AdLoader, didReceive nativeAd: NativeAd) {
  // To be notified of events related to the native ad interactions, set the delegate property
  // of the native ad
  nativeAd.delegate = self

  // TODO: Display the native ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // To be notified of events related to the native ad interactions, set the delegate property
  // of the native ad
  nativeAd.delegate = self;

  // TODO: Display the native ad.
}

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

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

Swift

adLoader.load(Request())

Objective-C

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

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

טעינת כמה מודעות (אופציונלי)

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

Swift

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5
adLoader = AdLoader(
  adUnitID: "nativeAdUnitID",
  // The UIViewController parameter is optional.
  rootViewController: self,
  adTypes: [.native],
  options: [multipleAdOptions])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdOptions = [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdOptions.numberOfAds = 5;

self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:"kNativeAdUnitID"
                                   // The UIViewController parameter is optional.
                                   rootViewController:self
                                              adTypes:@[ GADAdLoaderAdTypeNative ]
                                              options:@[ multipleAdOptions ]];

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

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

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

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

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

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

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

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

Swift

func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
  // The adLoader has finished loading ads.
}

Objective-C

- (void)adLoaderDidFinishLoading:(GADAdLoader *)adLoader {
  // The adLoader has finished loading ads.
}

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

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

Swift

func adLoader(_ adLoader: AdLoader, didFailToReceiveAdWithError error: any Error) {
  // The adLoader failed to receive an ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didFailToReceiveAdWithError:(NSError *)error {
  // The adLoader failed to receive an ad.
}

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

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

Swift

// Set the delegate before making an ad request.
adLoader.delegate = self

Objective-C

// Set the delegate before making an ad request.
self.adLoader.delegate = self;

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

Swift

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

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

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

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

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

func nativeAdWillLeaveApplication(_ nativeAd: NativeAd) {
  // 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:.

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

  • כיבוי סופי של מודעות מותאמות כשאין בהן יותר שימוש.

הצגת המודעה

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