מודעות מותאמות הן נכסי פרסום שמוצגים למשתמשים באמצעות רכיבי ממשק משתמש שמותאמים לפלטפורמה. הם מוצגים באמצעות אותן מחלקות שבהן אתם כבר משתמשים בתסריטים, ואפשר לעצב אותם בהתאם לעיצוב החזותי של האפליקציה.
כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט מודעה שמכיל את הנכסים שלה, והיא אחראית להצגת הנכסים האלה, ולא 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",
// 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
, צריך להפעיל את השיטה loadRequest:
שלו כדי לבקש מודעה:
Swift
adLoader.load(GADRequest())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
השיטה loadRequest:
ב-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 ]];
מספר המודעות בכל בקשה מוגבל לחמש, ואין ערובה שה-SDK יחזיר את מספר המודעות המדויק שביקשת.
מודעות Google שמוחזרות יהיו שונות זו מזו. עם זאת, לא מובטח שמודעות ממלאי שטחי פרסום או מקונים של צד שלישי יהיו ייחודיות.
לא כדאי להשתמש בכיתה GADMultipleAdsAdLoaderOptions
אם משתמשים בתהליך בחירת הרשת (Mediation), כי בקשות להצגת מספר מודעות מותאמות לא פועלות כרגע למזהים של יחידות מודעות שהוגדרו לתהליך בחירת הרשת.
אנחנו מחליטים מתי הטעינה הסתיימה
אחרי שאפליקציה קוראת ל-loadRequest:
, היא יכולה לקבל את תוצאות הבקשה באמצעות קריאות אל:
adLoader:didFailToReceiveAdWithError:
ב-GADAdLoaderDelegate
adLoader:didReceiveNativeAd:
ב-GADNativeAdLoaderDelegate
בקשה להצגת מודעה אחת תוביל לקריאה אחת לאחת מהשיטות האלה.
בקשה להצגת כמה מודעות תגרום לקריאה חוזרת לפחות אחת לשיטות שלמעלה, אבל לא יותר ממספר המודעות המרבי שביקשת.
בנוסף, GADAdLoaderDelegate
מציע את הקריאה החוזרת (callback) של 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;
קבלת התראות על אירועים של מודעות מותאמות
כדי לקבל התראות על אירועים שקשורים לאינטראקציות עם המודעה המותאמת, מגדירים את המאפיין delegate של המודעה המותאמת:
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.