विज्ञापन पहले से लोड करने की सुविधा, Google Mobile Ads SDK में Google की मैनेज की जाने वाली विज्ञापन लोड करने की सुविधा है. यह आपकी ओर से विज्ञापन लोड करने और उन्हें कैश मेमोरी में सेव करने की प्रोसेस को मैनेज करती है. विज्ञापन पहले से लोड करने की सुविधा का इस्तेमाल करने के लिए, आपको विज्ञापन लोड करने के तरीके में बदलाव करना होगा. विज्ञापन पहले से लोड करने की सुविधा का इस्तेमाल करके परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, कस्टम कैश मेमोरी में सेव करने की सुविधा बंद करें और इस काम की ज़िम्मेदारी Google Mobile Ads SDK को सौंपें.
मैन्युअल तरीके से विज्ञापन लोड करने के मुकाबले, विज्ञापन पहले से लोड करने की सुविधा के ये फ़ायदे हैं:
- रेफ़रंस मैनेजमेंट: लोड किए गए विज्ञापनों को सेव करके रखती है, ताकि आपको उन्हें दिखाने के लिए तैयार होने तक रेफ़रंस बनाए न रखने पड़ें.
- अपने-आप रीलोड होना: कैश मेमोरी से कोई विज्ञापन हटाने पर, नया विज्ञापन अपने-आप लोड हो जाता है.
- रीट्राई को मैनेज करना: एक्स्पोनेंशियल बैकऑफ़ का इस्तेमाल करके, फ़ेल हुए अनुरोधों को अपने-आप फिर से भेजने की कोशिश करता है.
- समयसीमा खत्म होने से पहले रीफ़्रेश करना: विज्ञापन की समयसीमा खत्म होने से पहले (आम तौर पर, एक घंटे बाद) उन्हें अपने-आप रीफ़्रेश करता है.
- कैश मेमोरी को ऑप्टिमाइज़ करना: अगर कैश मेमोरी का साइज़ एक से ज़्यादा है, तो Google Mobile Ads SDK सबसे अच्छा विज्ञापन दिखाने के लिए कैश मेमोरी के क्रम को ऑप्टिमाइज़ करता है.
इस गाइड में, पहले से लोड किए गए विज्ञापनों को कॉन्फ़िगर करने, उनकी उपलब्धता की जांच करने, और उन्हें दिखाने के बारे में बताया गया है.
ज़रूरी शर्तें
ट्यूटोरियल के साथ आगे बढ़ने से पहले, आपको ये काम पूरे करने होंगे:
- Google Mobile Ads SDK का 13.3.0 या इसके बाद का वर्शन इंस्टॉल करें. पहले के वर्शन के लिए डेवलपर संसाधन 11.12.0 - 12.2.0 पर उपलब्ध हैं, हालांकि, हमारा सुझाव है कि आप 13.3.0 या इसके बाद के वर्शन का इस्तेमाल करें और आगे भी इस गाइड में दिए गए निर्देशों का पालन करें.
- सेट अप करें Google Mobile Ads SDK.
- ज़रूरी नहीं: विज्ञापन पहले से लोड करने की सुविधा का उदाहरण दिखाने वाला ऐप्लिकेशन डाउनलोड करें और चलाएं.
बीटा हेडर इंपोर्ट करना
विज्ञापन पहले से लोड करने की सुविधा का इस्तेमाल करने के लिए, बीटा हेडर इंपोर्ट करें:
Swift
import GoogleMobileAds_Private
Objective-C
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>
विज्ञापन पहले से लोड करना शुरू करना
विज्ञापन पहले से लोड करने के लिए, preload() को कॉल करें. इस तरीके को, हर प्रीलोड आईडी के लिए सिर्फ़ एक बार कॉल करें. हमारा सुझाव है कि ऐप्लिकेशन का सेशन शुरू होने पर, इस तरीके को कॉल करें. preload() को कॉल करने के बाद, Google Mobile Ads SDK
विज्ञापनों को अपने-आप पहले से लोड करता है. साथ ही, उन प्रीलोड आईडी के लिए फ़ेल हुए अनुरोधों को फिर से भेजने की कोशिश करता है.
यहां दिए गए उदाहरण में, विज्ञापन पहले से लोड करने की सुविधा का इस्तेमाल शुरू किया गया है:
Swift
private func startPreloading(adUnitID: String) {
// 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
- (void)startPreloadingWithAdUnitID:(NSString *)adUnitID {
// 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 कैश मेमोरी में सेव किए गए विज्ञापनों को सेव करके रखता है.
कोई विज्ञापन दिखाने के लिए, 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 load 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:(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.adResponseInfo(withPreloadID: preloadID) {
print("Ad response ID: \(responseInfo.responseID)")
}
}
Objective-C
- (void)getInterstitialAdResponseInfoWithPreloadID:(NSString *)preloadID {
// Get the response info for the preloaded ad.
GADResponseInfo *responseInfo =
[GADInterstitialAdPreloader.sharedInstance
adResponseInfoWithPreloadID:preloadID];
if (responseInfo) {
NSLog(@"Ad response ID: %@", responseInfo.responseID);
}
}
पहले से लोड किए गए विज्ञापन की उपलब्धता की जांच करना
विज्ञापन की उपलब्धता की जांच करने के लिए, इनमें से कोई एक विकल्प चुनें:
- पहले से लोड किए गए विज्ञापन की उपलब्धता की जानकारी पाना
- पहले से लोड किए गए विज्ञापन की उपलब्धता की जानकारी सुनना
पहले से लोड किए गए विज्ञापन की उपलब्धता की जानकारी पाना
यहां दिए गए उदाहरण में, विज्ञापन की उपलब्धता की जांच की गई है:
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:(NSString *)adUnitID {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}
पहले से लोड किए गए विज्ञापन की उपलब्धता की जानकारी सुनना
पहले से लोड करने से जुड़े इवेंट के लिए रजिस्टर करें, ताकि आपको सूचना मिल सके. सूचना तब मिलेगी, जब विज्ञापन पहले से लोड हो जाएं, पहले से लोड न हो पाएं या विज्ञापन की कैश मेमोरी खत्म हो जाए.
पहले से लोड करने से जुड़े इवेंट, आंकड़ों के मकसद से होते हैं. पहले से लोड करने से जुड़े इवेंट के कॉलबैक में:
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.
// [Important] Don't call AdPreloader.shared.preload or AdPreloader.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.
// [Important] 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, मेमोरी की खपत और विज्ञापन दिखाने में लगने वाले समय के बीच बैलेंस बनाए रखने के लिए, बफ़र के साइज़ को ऑप्टिमाइज़ करता है. अगर आपका ऐप्लिकेशन, अगला विज्ञापन लोड होने से पहले विज्ञापन दिखाता है, तो मेमोरी में सेव किए गए विज्ञापनों की संख्या बढ़ाने के लिए, कस्टम बफ़र साइज़ सेट किया जा सकता है. हमारा सुझाव है कि बफ़र का साइज़ दो या तीन रखें.
पहले से लोड करने की सुविधा की कैश मेमोरी की सीमाएं
Google Mobile Ads SDK सभी विज्ञापन यूनिट और प्रीलोड आईडी में, पहले से लोड किए गए विज्ञापनों की कुल संख्या पर, ऐप्लिकेशन के लिए एक सीमा लागू करता है:
- डिफ़ॉल्ट सीमा: Google Mobile Ads SDK मेमोरी में ज़्यादा से ज़्यादा छह विज्ञापन पहले से लोड करके रखता है. यह सीमा, सभी फ़ॉर्मैट और प्रीलोड आईडी के लिए लागू होती है.
- हमारा सुझाव है कि हर प्रीलोड आईडी के लिए, बफ़र का साइज़ दो या तीन रखें.
Swift
let preloadConfig = PreloadConfigurationV2(adUnitID: "/21775744923/example/rewarded")
preloadConfig.bufferSize = 3
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"/21775744923/example/rewarded"];
preloadConfig.bufferSize = 3;