טעינת מודעות מראש היא תכונה לטעינת מודעות שמנוהלת על ידי Google ב-Google Mobile Ads SDK. התכונה הזו מנהלת את הטעינה והשמירה במטמון של המודעות בשבילכם. כדי לטעון מודעות מראש, צריך לשנות את האופן שבו מנהלים את טעינת המודעות. כדי לבצע אופטימיזציה של הביצועים באמצעות טעינת מודעות מראש, צריך להשבית את השמירה המותאמת אישית במטמון ולהעביר את האחריות הזו אל Google Mobile Ads SDK.
לטעינת מודעות מראש יש כמה יתרונות על פני טעינת מודעות ידנית:
- ניהול קובצי עזר: המודעות שנטענו נשמרות, כך שאתם לא צריכים לנהל את קובצי העזר עד שאתם מוכנים להציג את המודעות.
- טעינה מחדש אוטומטית: טעינה אוטומטית של מודעה חדשה כששולפים מודעה מהמטמון.
- ניסיונות חוזרים מנוהלים: ניסיונות חוזרים אוטומטיים של בקשות שנכשלו באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
- טיפול בתפוגה: המערכת מרעננת את המודעות באופן אוטומטי לפני שהתוקף שלהן פג (בדרך כלל אחרי שעה).
- אופטימיזציה של המטמון: אם אתם משתמשים במטמון בגודל שגדול מ-1, Google Mobile Ads SDK מבצע אופטימיזציה של סדר המטמון כדי להציג את המודעה הכי טובה.
במדריך הזה מוסבר איך להגדיר מודעות שנטענות מראש, לבדוק את הזמינות שלהן ולהציג אותן.
דרישות מוקדמות
לפני שממשיכים במדריך הזה, צריך להגדיר את Google Mobile Ads SDK.
התחלת הטעינה מראש של מודעות
כשהאפליקציה מופעלת, צריך להפעיל את ה-method preload פעם אחת. אחרי שמפעילים את השיטה preload, Google Mobile Ads SDK טוען מראש מודעות באופן אוטומטי ומנסה שוב לשלוח בקשות שנכשלו להגדרות שנטענו מראש.
בדוגמה הבאה מוצג איך מתחילים לטעון מראש מודעות:
Swift
// Start the preloading initialization process.
let request = Request()
let interstitialConfig = PreloadConfigurationV2(
adUnitID: adUnitID, request: request)
InterstitialAdPreloader.shared.preload(
for: adUnitID, configuration: interstitialConfig, delegate: self)
Objective-C
// Start the preloading initialization process.
GADRequest *request = [GADRequest request];
GADPreloadConfigurationV2 *interstitialConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID
request:request];
[GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:adUnitID
configuration:interstitialConfig
delegate:self];
אחזור והצגה של המודעה שנטענה מראש
כשמשתמשים בטעינת מודעות מראש, Google Mobile Ads SDK שומר מודעות במטמון.
כדי להציג מודעה, מפעילים את ה-method adWithPreloadID.
Google Mobile Ads SDK מאחזר מודעה זמינה וטוען מראש באופן אוטומטי את המודעה הבאה ברקע.
אל תפעילו את ה-method adWithPreloadID עד שתהיו מוכנים להציג מודעה. שמירת המודעות במטמון מאפשרת ל-Google Mobile Ads SDK לרענן באופן אוטומטי מודעות שפג תוקפן ולבצע אופטימיזציה של המטמון.
בדוגמה הבאה מוצג אחזור והצגה של מודעה שנטענה מראש:
Swift
private func showInterstitialAd(adUnitID: String) {
// Verify that the preloaded ad is available before polling.
guard isInterstitialAvailable(adUnitID: adUnitID) else {
print("Preloaded interstitial ad is not available.")
return
}
// Polling returns the next available ad and loads another ad in the background.
let ad = InterstitialAdPreloader.shared.ad(with: adUnitID)
// Interact with the ad object as needed.
print("Interstitial ad response info: \(String(describing: ad?.responseInfo))")
ad?.paidEventHandler = { (value: AdValue) in
print("Interstitial ad paid event: \(value.value), \(value.currencyCode)")
}
ad?.fullScreenContentDelegate = self
ad?.present(from: self)
}
Objective-C
- (void)showInterstitialAdWithAdUnitID:(nonnull NSString *)adUnitID {
// Verify that the preloaded ad is available before polling.
if (![self isInterstitialAvailableWithAdUnitID:adUnitID]) {
NSLog(@"Preloaded interstitial ad is not available.");
return;
}
// Getting the preloaded ad loads another ad in the background.
GADInterstitialAd *ad =
[GADInterstitialAdPreloader.sharedInstance adWithPreloadID:adUnitID];
// Interact with the ad object as needed.
NSLog(@"Interstitial ad response info: %@", ad.responseInfo);
ad.paidEventHandler = ^(GADAdValue *_Nonnull value) {
NSLog(@"Interstitial ad paid event: %@ %@ ", value.value, value.currencyCode);
};
ad.fullScreenContentDelegate = self;
[ad presentFromRootViewController:self];
}
אחזור מטא-נתונים של מודעות שנטענו מראש
כדי לקבל מטא-נתונים של מודעה שנטענה מראש, אפשר לחפש את אובייקט פרטי התגובה של המודעה. התהליך הזה מאפשר לבדוק את המטא-נתונים של המודעה בלי להסיר אותה מהמטמון.
בדוגמה הבאה, המערכת מחפשת את המטא-נתונים של מודעה שנטענה מראש באובייקט פרטי התגובה:
Swift
private func getInterstitialAdResponseInfo(preloadID: String) {
// Get the response info for the preloaded ad.
if let responseInfo = InterstitialAdPreloader.shared.responseInfo(
with: preloadID)
{
print("Ad response ID: \(responseInfo.responseIdentifier ?? "")")
}
}
Objective-C
- (void)getInterstitialAdResponseInfoWithPreloadID:(nonnull NSString *)preloadID {
// Get the response info for the preloaded ad.
GADResponseInfo *responseInfo =
[GADInterstitialAdPreloader.sharedInstance
adResponseInfoWithPreloadID:preloadID];
if (responseInfo) {
NSLog(@"Ad response ID: %@", responseInfo.responseIdentifier);
}
}
איך בודקים אם יש מודעות זמינות לטעינה מראש
כדי לבדוק אם יש מודעות זמינות, בוחרים באחת מהאפשרויות הבאות:
בדיקת הזמינות של מודעות שנטענו מראש
בדוגמה הבאה נבדקת הזמינות של המודעה:
Swift
private func isInterstitialAvailable(adUnitID: String) -> Bool {
// Verify that an ad is available before polling.
return InterstitialAdPreloader.shared.isAdAvailable(with: adUnitID)
}
Objective-C
- (BOOL)isInterstitialAvailableWithAdUnitID:(nonnull NSString *)adUnitID {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}
האזנה לזמינות של מודעות שנטענו מראש
כדאי להירשם לאירועי טעינה מראש כדי לקבל התראות כשהמודעות נטענות מראש בהצלחה, כשהטעינה מראש נכשלת או כשמטמון המודעות מתרוקן.
אירועי טעינה מראש מיועדים למטרות ניתוח נתונים. בתוך פונקציות ה-callback של אירוע הטעינה מראש:
- אין צורך להתקשר אל
preload. - אל תפעילו את
adWithPreloadIDאלא אם המודעה תוצג מיד.
בדוגמה הבאה מתבצע רישום לאירועי מודעות:
Swift
func adAvailable(forPreloadID preloadID: String, responseInfo: ResponseInfo) {
// This callback indicates that an ad is available for the specified configuration.
// No action is required here, but updating the UI can be useful in some cases.
print("Ad preloaded successfully for ad preload ID: \(preloadID)")
}
func adsExhausted(forPreloadID preloadID: String) {
// This callback indicates that all the ads for the specified configuration have been
// consumed and no ads are available to show. No action is required here, but updating
// the UI can be useful in some cases.
// Don't call InterstitialAdPreloader.shared.preload or
// InterstitialAdPreloader.shared.ad from adsExhausted.
print("Ad exhausted for ad preload ID: \(preloadID)")
}
func adFailedToPreload(forPreloadID preloadID: String, error: Error) {
print(
"Ad failed to load with ad preload ID: \(preloadID), Error: \(error.localizedDescription)"
)
}
Objective-C
- (void)adAvailableForPreloadID:(nonnull NSString *)preloadID
responseInfo:(nonnull GADResponseInfo *)responseInfo {
// This callback indicates that an ad is available for the specified configuration.
// No action is required here, but updating the UI can be useful in some cases.
NSLog(@"Ad preloaded successfully for ad unit ID: %@", preloadID);
}
- (void)adsExhaustedForPreloadID:(nonnull NSString *)preloadID {
// This callback indicates that all the ads for the specified configuration have been
// consumed and no ads are available to show. No action is required here, but updating
// the UI can be useful in some cases.
// Don't call [GAD<Format>AdPreloader preloadForPreloadID:] or
// [GAD<Format>AdPreloader adWithPreloadID:] from adsExhaustedForPreloadID.
NSLog(@"Ad exhausted for ad preload ID: %@", preloadID);
}
- (void)adFailedToPreloadForPreloadID:(nonnull NSString *)preloadID
error:(nonnull NSError *)error {
NSLog(@"Ad failed to load with ad preload ID: %@, Error: %@", preloadID,
error.localizedDescription);
}
הפסקת הטעינה מראש של מודעות
אם אתם לא צריכים להציג שוב מודעות למזהה טעינה מראש בסשן, אתם יכולים להפסיק את הטעינה מראש של המודעות. כדי להפסיק את הטעינה מראש של מודעות עם מזהה טעינה מראש ספציפי, צריך להפעיל את stopPreloadingAndRemoveAdsForPreloadID עם מזהה טעינה מראש. כדי להפסיק את הטעינה מראש בכל רכיבי הטעינה מראש, מפעילים את הפונקציה stopPreloadingAndRemoveAllAds.
הגדרת גודל המאגר הזמני
הגודל של שטח האחסון הזמני קובע את מספר המודעות שנטענות מראש ונשמרות בזיכרון. כברירת מחדל, Google מבצעת אופטימיזציה של גודל המאגר הזמני כדי לאזן בין צריכת הזיכרון לבין זמן האחזור של הצגת המודעות. אם האפליקציה מציגה מודעות לפני שהמודעה הבאה נטענת, אתם יכולים להגדיר שטח אחסון זמני מותאם אישית כדי להגדיל את מספר המודעות שנשמרות בזיכרון.
Swift
let preloadConfig = PreloadConfigurationV2(adUnitID: adUnitID)
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID];
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2;
מגבלות על טעינה מראש למטמון
Google Mobile Ads SDK אוכף מגבלה ברמת האפליקציה על המספר הכולל של מודעות שנטענות מראש בכל יחידות המודעות ומזהי הטעינה מראש:
- מגבלת ברירת המחדל: ב-Google Mobile Ads SDK אפשר לשמור בזיכרון עד 6 מודעות שנטענו מראש. המגבלה הזו משותפת לכל הפורמטים ולכל המזהים של הטעינה מראש.
- מומלץ להגדיר שטח אחסון זמני של שניים לכל מזהה טעינה מראש.