מודעות מותאמות הן נכסי פרסום שמוצגים למשתמשים באמצעות רכיבי ממשק משתמש שמותאמים לפלטפורמה. הם מוצגים באמצעות אותן מחלקות שבהן אתם כבר משתמשים בתסריטים, ואפשר לעצב אותם בהתאם לעיצוב החזותי של האפליקציה.
כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט מודעה שמכיל את הנכסים שלה, והיא אחראית להצגת הנכסים האלה, ולא Google Mobile Ads SDK.
באופן כללי, יש שני חלקים להטמעה מוצלחת של מודעות מותאמות: טעינת מודעה באמצעות ה-SDK ולאחר מכן הצגת תוכן המודעה באפליקציה.
בדף הזה מוסבר איך להשתמש ב-SDK כדי לטעון מודעות מותאמות.
דרישות מוקדמות
- מבצעים את ההוראות במדריך לתחילת העבודה.
ביצוע בדיקות באמצעות מודעות בדיקה תמיד
כשאתם מפתחים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה במקום במודעות פעילות בסביבת הייצור.
הדרך הקלה ביותר לטעון מודעות בדיקה היא להשתמש במזהה הייעודי של יחידת מודעות לבדיקה עבור מודעות מותאמות ב-iOS:
ca-app-pub-3940256099942544/3986624511
הוא הוגדר במיוחד להחזרת מודעות בדיקה עבור כל בקשה, ואפשר להשתמש בו באפליקציות שלכם תוך כדי תכנות, בדיקות וניפוי באגים. רק צריך לוודא צריך להחליף אותו במזהה יחידת המודעות שלך לפני פרסום האפליקציה.
מידע נוסף על אופן הפעולה של מודעות הבדיקה של Google Mobile Ads SDK זמין במאמר מודעות בדיקה.
טעינת מודעות
המודעות המותאמות נטענות עם
GADAdLoader
למחלקה, ששולחות הודעות למשתמשים שקיבלו הרשאה
GADAdLoaderDelegate
של Google.
איך מאתחלים את הטעינה של המודעות
כדי לטעון מודעה, צריך לאתחל את טוען המודעות.
הקוד הבא מראה איך לאתחל GADAdLoader
:
Swift
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
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
, צריך לקרוא ל-method loadRequest:
של
מבקשים להציג מודעה:
Swift
adLoader.load(GADRequest())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
loadRequest:
method ב-
GADAdLoader
מקבל/ת את אותה
GADRequest
אובייקטים בתור מודעות באנר ומודעות מעברון. אפשר להשתמש באובייקטים של בקשה כדי להוסיף
מידע על טירגוט, בדיוק כמו
סוג מודעות אחר.
טעינת מודעות מרובות (אופציונלי)
כדי לטעון כמה מודעות בבקשה אחת, מגדירים את האובייקט GADMultipleAdsAdLoaderOptions
בזמן שמפעילים את GADAdLoader
.
Swift
let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
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"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
מספר המודעות לכל בקשה מוגבל ל-5, ולא בטוח ה-SDK יחזיר את המספר המדויק של המודעות המבוקשות.
כל המודעות של Google שחוזרות יהיו שונות זו מזו, אבל לא מובטח שמודעות ממלאי שטחי פרסום שמוזמנים או מקונים של צד שלישי יהיו ייחודיות.
אין להשתמש בכיתה GADMultipleAdsAdLoaderOptions
אם משתמשים בתהליך בחירת הרשת (Mediation).
מאחר שבקשות למודעות מותאמות מרובות לא פועלות כרגע למזהים של יחידות מודעות
הוגדרו לגישור.
איך בודקים מתי הטעינה הסתיימה
אחרי שאפליקציה קוראת ל-loadRequest:
, היא יכולה לקבל את תוצאות הבקשה באמצעות קריאות אל:
adLoader:didFailToReceiveAdWithError:
בעודGADAdLoaderDelegate
adLoader:didReceiveNativeAd:
בעודGADNativeAdLoaderDelegate
בקשה להצגת מודעה אחת תוביל לקריאה אחת לאחת מהשיטות האלה.
בקשה להצגת מספר מודעות תוביל לקריאה חוזרת (callback) אחת לפחות לערך שצוין למעלה שיטות, אבל לא יותר מהמספר המקסימלי המבוקש של מודעות.
בנוסף, GADAdLoaderDelegate
מציע את adLoaderDidFinishLoading
קריאה חוזרת. שיטת הענקת הגישה הזו מציינת שטען המודעות סיים לטעון מודעות, ולא ידווחו על מודעות או שגיאות נוספות לגבי הבקשה. דוגמה לשימוש ב-AdMob Mediation כשמטעמלים כמה מודעות מותאמות בו-זמנית:
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",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
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"
// The UIViewController parameter is nullable.
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:
.כדאי להגביל את השמירה במטמון של מודעות מותאמות רק למה שנחוץ. לדוגמה, כשמריצים מראש במטמון, לשמור במטמון רק את המודעות שמוצגות מיד במסך. למודעות מותאמות יש טביעת זיכרון גדולה, והטמעה של מודעות מותאמות במטמון בלי למחוק אותן גורמת לשימוש מוגזם בזיכרון.
צריך למחוק מודעות מותאמות כשהן לא בשימוש.
הצגת המודעה
אחרי שתטענו מודעה, כל מה שנותר הוא להציג אותה למשתמשים. במדריך המתקדם שלנו למודעות רגילות מוסבר איך עושים את זה.