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

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

ה-method‏ 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 כדי לקבל את הקריאות הבאות ל-delegate:

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 או מודעות מותאמות במסך מלא.