מודעות מותאמות הן נכסי מודעות שמוצגים למשתמשים באמצעות רכיבי ממשק משתמש שמותאמים לפלטפורמה. הן מוצגות באמצעות אותן מחלקות שבהן אתם כבר משתמשים בלוחות התכנון, ואפשר לעצב אותן כך שיתאימו לעיצוב החזותי של האפליקציה.
כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט של מודעה שמכיל את נכסי המודעה. לאחר מכן, האפליקציה – ולא Google Mobile Ads SDK – אחראית להצגת הנכסים.
באופן כללי, יש שני חלקים להטמעה מוצלחת של מודעות מותאמות: טעינת מודעה באמצעות ה-SDK ואז הצגת תוכן המודעה באפליקציה.
בדף הזה מוסבר איך להשתמש ב-SDK כדי לטעון מודעות מותאמות.
דרישות מוקדמות
- כדאי לעיין במדריך לתחילת העבודה.
תמיד כדאי לבצע בדיקות באמצעות מודעות בדיקה
כשמפתחים ובודקים אפליקציות, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות שמוצגות למשתמשים.
הדרך הכי קלה לטעון מודעות בדיקה היא להשתמש במזהה הייעודי של יחידת המודעות לבדיקה של מודעות מותאמות ב-iOS:
ca-app-pub-3940256099942544/3986624511
הוא הוגדר במיוחד להחזרת מודעות בדיקה לכל בקשה, ואפשר להשתמש בו באפליקציות שלכם בזמן כתיבת קוד, בדיקה וניפוי באגים. חשוב להקפיד להחליף אותו במזהה יחידת המודעות שלכם לפני פרסום האפליקציה.
מידע נוסף על אופן הפעולה של מודעות הבדיקה ב-Google Mobile Ads SDK זמין במאמר בנושא מודעות בדיקה.
טעינת מודעות
מודעות מותאמות נטענות עם המחלקה GADAdLoader
, ששולחת הודעות לנציגים שלה בהתאם לפרוטוקול GADAdLoaderDelegate
.
אתחול טוען המודעות
כדי לטעון מודעה, צריך קודם לאתחל את הכלי לטעינת מודעות.
בדוגמה הבאה אפשר לראות איך מאתחלים GADAdLoader
:
Swift
adLoader = AdLoader(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: AdLoader,
didReceive nativeAd: NativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd;
בקשה להצגת מודעות
אחרי שמפעילים את GADAdLoader
, קוראים לשיטה 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: "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 Ads יהיו שונות זו מזו, אבל אין ערובה לכך שמודעות ממלאי שטחי פרסום מוזמן או מקונים חיצוניים יהיו ייחודיות.
אם אתם משתמשים בתהליך בחירת הרשת, אל תשתמשו במחלקה GADMultipleAdsAdLoaderOptions
, כי בקשות לכמה מודעות מותאמות לא פועלות כרגע במזהים של יחידות מודעות שהוגדרו לבחירת רשת.
קביעה מתי הטעינה הסתיימה
אחרי שאפליקציה מפעילה את loadRequest:
, היא יכולה לקבל את תוצאות הבקשה באמצעות הפעלת הקריאות הבאות:
adLoader:didFailToReceiveAdWithError:
ב-GADAdLoaderDelegate
adLoader:didReceiveNativeAd:
ב-GADNativeAdLoaderDelegate
בקשה למודעה אחת תוביל לקריאה אחת לאחת מהשיטות האלה.
בקשה להצגת כמה מודעות תגרום להפעלת קריאה חוזרת אחת לפחות לשיטות שלמעלה, אבל לא יותר מהמספר המקסימלי של המודעות המבוקשות.
בנוסף, GADAdLoaderDelegate
מציע את הקריאה החוזרת adLoaderDidFinishLoading
callback. שיטת ההקצאה הזו מציינת שטוען המודעות סיים לטעון מודעות, ולא ידווחו עוד מודעות או שגיאות לגבי הבקשה. הנה דוגמה לאופן השימוש בפונקציה הזו כשמטעינים כמה מודעות מותאמות בו-זמנית:
Swift
class ViewController: UIViewController, NativeAdLoaderDelegate {
var adLoader: GADAdLoader!
override func viewDidLoad() {
super.viewDidLoad()
let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ multipleAdOptions ])
adLoader.delegate = self
adLoader.load(Request())
}
func adLoader(_ adLoader: AdLoader,
didReceive nativeAd: NativeAd) {
// A native ad has loaded, and can be displayed.
}
func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
// 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: AdLoader,
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: 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:
.כדאי להגביל את השמירה במטמון של מודעות מותאמות רק למה שנדרש. לדוגמה, כשמבצעים אחסון מראש במטמון, צריך לאחסן במטמון רק את המודעות שמוצגות במסך באופן מיידי. מודעות מותאמות תופסות הרבה זיכרון, ושמירת מודעות מותאמות במטמון בלי להסיר אותן גורמת לשימוש מוגזם בזיכרון.
צריך להשמיד מודעות מותאמות כשאין בהן יותר שימוש.
הצגת המודעה
אחרי שטענתם מודעה, כל מה שנותר הוא להציג אותה למשתמשים. כאן מוסבר איך עושים את זה.