טעינה של מודעה מותאמת

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

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

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

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

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

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

לפני שממשיכים, מגדירים את Google Mobile Ads 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)
// Set the delegate before making an ad request.
adLoader.delegate = self

מחליפים את 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];
// Set the delegate before making an ad request.
self.adLoader.delegate = self;

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

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

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

הטמעת ה-delegate של טוען המודעות

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

Swift

func adLoader(_ adLoader: AdLoader, didReceive nativeAd: NativeAd) {
  // Set the delegate to receive notifications for interactions with the native ad.
  nativeAd.delegate = self

  // TODO: Display the native ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // Set the delegate to receive notifications for interactions with 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 שיוחזרו יהיו שונות זו מזו, אבל לא מובטח שמודעות ממלאי שטחי פרסום שמור או מקונים מצד שלישי יהיו ייחודיות.

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

איך קובעים מתי הטעינה הסתיימה

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

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

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

בנוסף, GADAdLoaderDelegate מציע את הקריאה החוזרת (callback) 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.
}

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

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

Swift

nativeAd.delegate = self

Objective-C

nativeAd.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:.

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

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

הצגת המודעה

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