מודעות מותאמות הן נכסים של מודעות שמוצגים למשתמשים באמצעות רכיבי ממשק משתמש שהם מותאמים לפלטפורמה. הן מוצגות באמצעות אותן כיתות שאתם כבר משתמשים בהן בסטוריבורד, ואפשר לעצב אותן כך שיתאימו לעיצוב הוויזואלי של האפליקציה.
כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט של מודעה שמכיל את הנכסים שלה. לאחר מכן האפליקציה, ולא 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",
rootViewController: self,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
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",
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"
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
מספר המודעות לבקשה מוגבל לחמש, ולא בטוח שה-SDK יחזיר את המספר המדויק של המודעות שביקשת.
מודעות Google שמוחזרות יהיו שונות זו מזו, אבל מודעות ממלאי שמור או מקונים של צד שלישי לא יהיו ייחודיות.
אל תשתמשו בקטגוריה GADMultipleAdsAdLoaderOptions
אם אתם משתמשים במנגנון בחירת הרשת, כי בקשות למספר מודעות מותאמות לא פועלות בשלב זה למזהים של יחידות מודעות שהוגדרו לתהליך בחירת הרשת.
קביעה מתי הטעינה תסתיים
אחרי שאפליקציה תתקשר אל loadRequest:
, היא תוכל לקבל את תוצאות הבקשה באמצעות קריאות אל:
adLoader:didFailToReceiveAdWithError:
בGADAdLoaderDelegate
adLoader:didReceiveNativeAd:
ב-GADNativeAdLoaderDelegate
בקשה למודעה יחידה תוביל לקריאה אחת לאחת משיטות אלה.
בקשה למספר מודעות תוביל לקריאה חוזרת אחת לפחות לשיטות שצוינו, אך לא למספר המקסימלי של בקשות שהתבקשו.
בנוסף, ב-GADAdLoaderDelegate
יש אפשרות לקריאה חוזרת (callback) לגבי adLoaderDidFinishLoading
. שיטת הקצאת ההרשאות הזו מציינת שגורם לטעינת מודעות סיים לטעון מודעות, ולא ידווחו מודעות או שגיאות אחרות לגבי הבקשה. זוהי דוגמה לשימוש בו במהלך טעינת מספר מודעות מותאמות בו-זמנית:
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",
rootViewController: self,
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"
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
עד לסיום הטעינה של הבקשה הראשונה.
הצגה של המודעה שלך
אחרי שטוענים מודעה, צריך רק להציג אותה למשתמשים. מומלץ לעבור אל המדריך המקורי למודעות מותאמות כדי לראות איך לעשות זאת.