विज्ञापन पहले से लोड करना (बीटा वर्शन)

प्लैटफ़ॉर्म चुनें: Android iOS Unity Flutter Android (लेगसी)

विज्ञापन लोड और कैश होने की प्रोसेस, Google Mobile Ads SDK में Google की ओर से मैनेज की जाने वाली विज्ञापन लोड करने की सुविधा है. यह आपकी ओर से विज्ञापन लोड और कैश होने की प्रोसेस को मैनेज करती है. विज्ञापन लोड और कैश होने की प्रोसेस के लिए, आपको विज्ञापन लोड होने की प्रोसेस को मैनेज करने के तरीके में बदलाव करना होगा. विज्ञापन लोड और कैश होने की प्रोसेस का इस्तेमाल करके परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, कस्टम कैश मेमोरी को बंद करें और यह ज़िम्मेदारी Google Mobile Ads SDK को सौंपें.

विज्ञापन लोड और कैश होने की प्रोसेस से, मैन्युअल तरीके से विज्ञापन लोड होने की प्रोसेस की तुलना में ये फ़ायदे मिलते हैं:

  • रेफ़रंस मैनेजमेंट: यह लोड किए गए विज्ञापनों को होल्ड पर रखता है, ताकि आपको रेफ़रंस तब तक मैनेज न करने पड़ें, जब तक आप उन्हें दिखाने के लिए तैयार न हों.
  • अपने-आप फिर से लोड होने की सुविधा: कैश मेमोरी से कोई विज्ञापन निकालने पर, यह सुविधा अपने-आप एक नया विज्ञापन लोड करती है.
  • मैनेज की गई फिर से कोशिशें: एक्स्पोनेंशियल बैकऑफ़ का इस्तेमाल करके, अनुरोधों को पूरा करने की कोशिश अपने-आप फिर से की जाती है.
  • समयसीमा खत्म होने से जुड़ी प्रोसेस: विज्ञापनों की समयसीमा खत्म होने से पहले, उन्हें अपने-आप रीफ़्रेश करता है. आम तौर पर, यह समयसीमा एक घंटे की होती है.
  • कैश मेमोरी को ऑप्टिमाइज़ करना: अगर एक से ज़्यादा कैश मेमोरी का इस्तेमाल किया जाता है, तो Google Mobile Ads SDK सबसे अच्छा विज्ञापन दिखाने के लिए, कैश मेमोरी के क्रम को ऑप्टिमाइज़ करता है.

इस गाइड में, पहले से लोड होने वाले विज्ञापनों को कॉन्फ़िगर करने, पहले से लोड होने वाले विज्ञापन की उपलब्धता की जांच करने, और पहले से लोड किए गए विज्ञापन को दिखाने के बारे में बताया गया है.

ज़रूरी शर्तें

इस ट्यूटोरियल को शुरू करने से पहले, आपको Google Mobile Ads SDK सेट अप करना होगा.

विज्ञापनों को पहले से लोड करना शुरू करना

ऐप्लिकेशन शुरू होने पर, 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 कैश मेमोरी में सेव किए गए विज्ञापनों को सेव रखता है. जब आपको कोई विज्ञापन दिखाना हो, तो adWithPreloadID तरीके को कॉल करें. 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 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];
}

पहले से लोड किए गए विज्ञापन की उपलब्धता के बारे में सुनें

प्रीलोड इवेंट के लिए रजिस्टर करें, ताकि आपको विज्ञापन प्रीलोड होने, प्रीलोड न होने या विज्ञापन कैश मेमोरी खत्म होने पर सूचना मिल सके.

प्रीलोड इवेंट का मकसद, आंकड़ों का विश्लेषण करना है. प्रीलोड इवेंट के कॉलबैक में:

  • 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, मेमोरी में पहले से लोड किए गए ज़्यादा से ज़्यादा छह विज्ञापन सेव कर सकता है. यह सीमा, सभी फ़ॉर्मैट और प्रीलोड आईडी के लिए शेयर की जाती है.
  • हमारा सुझाव है कि हर प्रीलोड आईडी के लिए, बफ़र साइज़ दो रखें.