अचानक दिखने वाले विज्ञापन सेट अप करना

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

अचानक दिखने वाले (इंटरस्टीशियल) विज्ञापन, फ़ुल-स्क्रीन विज्ञापन होते हैं. ये ऐप्लिकेशन के इंटरफ़ेस को कवर करते हैं. इन विज्ञापनों को अपने ऐप्लिकेशन में नैचुरल ट्रांज़िशन पॉइंट पर दिखाया जाता है, जैसे अलग-अलग ऐक्टिविटी के बीच में या गेम के अलग-अलग लेवल के बीच में रुकने पर.

जब आपका ऐप्लिकेशन, अचानक दिखने वाला (इंटरस्टीशियल) विज्ञापन दिखाता है, तो उपयोगकर्ता विज्ञापन पर टैप करके उसे देख सकते हैं या विज्ञापन को बंद करके ऐप्लिकेशन पर वापस जा सकते हैं.

इस गाइड में, Android ऐप्लिकेशन में इंटरस्टीशियल विज्ञापनों को इंटिग्रेट करने का तरीका बताया गया है.

शुरू करने से पहले

जारी रखने से पहले, ये काम करें:

  • GMA Next-Gen SDK को सेट अप करें.
  • टेस्ट इंटरस्टीशियल विज्ञापन यूनिट आईडी /21775744923/example/interstitial का इस्तेमाल करें.
    • अपने ऐप्लिकेशन बनाने और उनकी टेस्टिंग करने के लिए, लाइव और प्रोडक्शन विज्ञापन इस्तेमाल करने के बजाय, टेस्ट विज्ञापन इस्तेमाल करें. अगर आपने टेस्ट विज्ञापन यूनिट के आईडी का इस्तेमाल नहीं किया, तो Google आपके खाते को निलंबित कर सकता है.
    • अपना ऐप्लिकेशन पब्लिश करने से पहले, इस आईडी को अपने विज्ञापन यूनिट आईडी से बदलें.
    • GMA Next-Gen SDK टेस्ट विज्ञापनों के बारे में ज़्यादा जानने के लिए, टेस्ट विज्ञापनों को चालू करना लेख पढ़ें.

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

GMA Next-Gen SDK में विज्ञापन लोड और कैश होने की प्रोसेस, विज्ञापन लोड होने और कैश होने की प्रोसेस को ऑटोमेट करती है.

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

  • रेफ़रंस मैनेजमेंट: विज्ञापन दिखाए जाने तक रेफ़रंस बनाए रखता है.
  • अपने-आप रीलोड होने की सुविधा: कैश मेमोरी से विज्ञापन वापस पाने पर, नया विज्ञापन लोड होता है.
  • मैनेज की गई फिर से कोशिशें: जब कोई विज्ञापन लोड नहीं हो पाता है, तब यह सुविधा नया विज्ञापन लोड करती है.
  • समयसीमा खत्म होने से पहले विज्ञापन रीफ़्रेश करना: समयसीमा खत्म होने से पहले विज्ञापनों को रीफ़्रेश करता है.
  • कैश मेमोरी को ऑप्टिमाइज़ करना: यह सुविधा, कैश मेमोरी के क्रम को ऑप्टिमाइज़ करती है, ताकि सबसे ज़्यादा प्राथमिकता वाला विज्ञापन दिखाया जा सके.

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

विज्ञापनों को पहले से लोड करने के लिए, GMA Next-Gen SDK को शुरू करते समय start तरीके को एक बार कॉल करें. start तरीके को कॉल करने के बाद, GMA Next-Gen SDK विज्ञापनों को अपने-आप पहले से लोड करता है. साथ ही, पहले से लोड किए गए कॉन्फ़िगरेशन के लिए, उन अनुरोधों को फिर से भेजता है जो पूरे नहीं हो पाए थे.

नीचे दिए गए उदाहरण में, विज्ञापनों को पहले से लोड करने का तरीका बताया गया है:

Kotlin

private fun startPreloading(adUnitId: String) {
  // Call start() once after SDK initialization.
  // Preload only one ad unit per format to optimize performance.
  val adRequest = AdRequest.Builder(adUnitId).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitId, preloadConfig)
}

Java

private void startPreloading(String adUnitId) {
  // Call start() once after SDK initialization.
  // Preload only one ad unit per format to optimize performance.
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

AD_UNIT_ID को अपनी विज्ञापन यूनिट के आईडी से बदलें.

पिछले उदाहरण में, विज्ञापन यूनिट आईडी को प्रीलोड आईडी के तौर पर इस्तेमाल करने का तरीका बताया गया है. प्रीलोड आईडी, स्ट्रिंग आइडेंटिफ़ायर होता है. इसे विज्ञापन लोड और कैश होने की प्रोसेस के कॉन्फ़िगरेशन की पहचान करने के लिए बनाया जाता है. अगर आपके ऐप्लिकेशन को एक ही विज्ञापन यूनिट आईडी के लिए, टारगेटिंग के कई कॉन्फ़िगरेशन की ज़रूरत है, तो कस्टम स्ट्रिंग आइडेंटिफ़ायर पास करें.

विज्ञापन लोड और कैश होने की प्रोसेस में, टारगेटिंग पैरामीटर या विज्ञापन दिखाने के अनुरोधों में बदलाव नहीं किया जा सकता. अगर आपको अनुरोधों के बीच टारगेटिंग पैरामीटर बदलने हैं, तो सिंगल लोडिंग का इस्तेमाल करें.

पहले से लोड किया गया विज्ञापन पाना और दिखाना

विज्ञापन दिखाने से पहले, pollAd तरीके को कॉल करें. पहले से लोड किए गए विज्ञापन ऑब्जेक्ट को सेव न करें. pollAd तरीके को कॉल करने पर, GMA Next-Gen SDK उपलब्ध विज्ञापन को फ़ेच करता है और बैकग्राउंड में अगले विज्ञापन को अपने-आप लोड करता है. अगर कोई विज्ञापन उपलब्ध नहीं है, तो GMA Next-Gen SDK कोई विज्ञापन नहीं दिखाता.

जब आपके पास कोई विज्ञापन ऑब्जेक्ट उपलब्ध हो, तो विज्ञापन दिखाने के लिए show तरीके को कॉल करें. यहां दिए गए उदाहरण में, पहले से लोड किए गए विज्ञापन को वापस पाने और दिखाने का तरीका बताया गया है:

Kotlin

private fun pollAndShowAd(activity: Activity, adUnitId: String) {
  // Polling returns the next available ad and loads another ad in the background.
  val ad = InterstitialAdPreloader.pollAd(adUnitId)
  if (ad == null) {
    Log.e(TAG, "Interstitial ad is not available.")
    return
  }

  // Interact with the ad object as needed.
  Log.d(TAG, "Interstitial ad response info: ${ad.getResponseInfo()}")
  ad.adEventCallback =
    object : InterstitialAdEventCallback {
      override fun onAdImpression() {
        Log.d(TAG, "Interstitial ad recorded an impression.")
      }
    }
  ad.show(activity)
}

Java

private void pollAndShowAd(Activity activity, String adUnitId) {
  // Polling returns the next available ad and loads another ad in the background.
  final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);

  // Interact with the ad object as needed.
  if (ad == null) {
    Log.e(TAG, "Interstitial ad is not available.");
    return;
  }

  Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
  ad.setAdEventCallback(
      new InterstitialAdEventCallback() {
        @Override
        public void onAdImpression() {
          Log.d(TAG, "Interstitial ad recorded an impression.");
        }
      });

  // Show the ad.
  ad.show(activity);
}

जब आपका ऐप्लिकेशन किसी विज्ञापन प्लेसमेंट तक पहुंच जाता है और show तरीके को कॉल कर सकता है, तो pollAd तरीके को कॉल करें. विज्ञापन को होल्ड करने के लिए, प्रीलोड कॉलबैक में या isAdAvailable तरीके की जांच करने के बाद, pollAd तरीके को कॉल न करें. अगर आपको विज्ञापन दिखाने से पहले, विज्ञापन के मेटाडेटा की जांच करनी है, तो विज्ञापन को कैश मेमोरी से हटाए बिना रिस्पॉन्स की जानकारी पढ़ें.

विज्ञापन इवेंट सुनना

विज्ञापन दिखाने से पहले, विज्ञापन इवेंट सुनें. यहां दिए गए उदाहरण में, विज्ञापन इवेंट के लिए कॉलबैक रजिस्टर किए गए हैं:

Kotlin

// Listen for ad events.
val ad = interstitialAd
if (ad == null) {
  Log.e(TAG, "Interstitial ad is not ready yet.")
  return
}

ad.adEventCallback =
  object : InterstitialAdEventCallback {
    override fun onAdShowedFullScreenContent() {
      // Interstitial ad did show.
    }

    override fun onAdDismissedFullScreenContent() {
      // Interstitial ad did dismiss.
      interstitialAd = null
    }

    override fun onAdFailedToShowFullScreenContent(
      fullScreenContentError: FullScreenContentError
    ) {
      // Interstitial ad failed to show.
      Log.e(TAG, "Interstitial ad failed to show: ${fullScreenContentError.message}")
    }

    override fun onAdImpression() {
      // Interstitial ad did record an impression.
    }

    override fun onAdClicked() {
      // Interstitial ad did record a click.
    }
  }

Java

// Listen for ad events.
if (interstitialAd == null) {
  Log.e(TAG, "Interstitial ad is not ready yet.");
  return;
}

interstitialAd.setAdEventCallback(
    new InterstitialAdEventCallback() {
      @Override
      public void onAdShowedFullScreenContent() {
        // Interstitial ad did show.
      }

      @Override
      public void onAdDismissedFullScreenContent() {
        // Interstitial ad did dismiss.
        interstitialAd = null;
      }

      @Override
      public void onAdFailedToShowFullScreenContent(
          @NonNull FullScreenContentError fullScreenContentError) {
        // Interstitial ad failed to show.
        Log.e(TAG, "Interstitial ad failed to show: " + fullScreenContentError.getMessage());
      }

      @Override
      public void onAdImpression() {
        // Interstitial ad did record an impression.
      }

      @Override
      public void onAdClicked() {
        // Interstitial ad did record a click.
      }
    });

ज़रूरी नहीं: प्रीलोडिंग इवेंट सुनें

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

यहां दिए गए उदाहरण में, विज्ञापन इवेंट को पहले से लोड करने के लिए रजिस्टर करने का तरीका बताया गया है:

Kotlin

val preloadCallback =
  // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
  object : PreloadCallback {
    override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
      Log.d(
        TAG,
        ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
      )
    }

    override fun onAdsExhausted(preloadId: String) {
      Log.i(TAG, "Interstitial preload ad $preloadId is not available")
      // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
    }

    override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
      Log.i(TAG, "Interstitial preload ad $preloadId is available")
    }
  }
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)

Java

PreloadCallback preloadCallback =
    // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
    new PreloadCallback() {
      @Override
      public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) {
        Log.d(
            TAG,
            String.format(
                "Interstitial preload ad %s failed to load with error: %s",
                preloadId, adError.getMessage()));
        // [Optional] Get the error response info for additional details.
        // ResponseInfo responseInfo = adError.getResponseInfo();
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
        // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
      }

      @Override
      public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
      }
    };

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

जब कोई विज्ञापन लोड नहीं हो पाता है, तो GMA Next-Gen SDK विज्ञापनों को अपने-आप पहले से लोड करता है. साथ ही, पहले से लोड किए गए कॉन्फ़िगरेशन के लिए, उन अनुरोधों को फिर से भेजता है जो पूरे नहीं हो पाए थे. मैन्युअल तरीके से लोड करने के अनुरोधों को फ़ेल कॉलबैक में शुरू न करें. प्रीलोडिंग इवेंट के कॉलबैक के तरीकों में, pollAd, destroy या start वाले तरीकों को कॉल न करें. कॉलबैक में इन तरीकों को कॉल करने से, बार-बार लोड होने वाले लूप चालू हो सकते हैं.

ज़रूरी नहीं: विज्ञापन की उपलब्धता देखना

अगर आपको यह जानना है कि कोई विज्ञापन उपलब्ध है या नहीं, तो विज्ञापन की उपलब्धता देखें. यहां दिए गए उदाहरण से पता चलता है कि पहले से लोड किया गया कोई विज्ञापन उपलब्ध है या नहीं:

Kotlin

private fun isAdAvailable(adUnitId: String): Boolean {
  return InterstitialAdPreloader.isAdAvailable(adUnitId)
}

Java

private boolean isAdAvailable(String adUnitId) {
  return InterstitialAdPreloader.isAdAvailable(adUnitId);
}

ज़रूरी नहीं: बफ़र साइज़ सेट करना

बफ़र साइज़ से, मेमोरी में पहले से लोड किए गए विज्ञापनों की संख्या को कंट्रोल किया जाता है. डिफ़ॉल्ट रूप से, Google बफ़र साइज़ को ऑप्टिमाइज़ करता है, ताकि मेमोरी की खपत और विज्ञापन दिखाने में लगने वाले समय को संतुलित किया जा सके. मेमोरी में रखे गए विज्ञापनों की संख्या बढ़ाने या घटाने के लिए, पसंद के मुताबिक बफ़र साइज़ सेट किया जा सकता है. हमारा सुझाव है कि पहले से लोड किए गए दो विज्ञापनों का बफ़र साइज़ रखें. अगर आपका ज़्यादातर ट्रैफ़िक कम मेमोरी वाले डिवाइसों से आता है, तो बफ़र साइज़ कम करें.

यहां दिए गए उदाहरण में, बफ़र साइज़ सेट करने का तरीका बताया गया है:

Kotlin

private fun setBufferSize(adUnitId: String) {
  val adRequest = AdRequest.Builder(adUnitId).build()
  // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
  val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2)
  InterstitialAdPreloader.start(adUnitId, preloadConfig)
}

Java

private void setBufferSize(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

कैश मेमोरी में पहले से लोड करने की सीमाएं

GMA Next-Gen SDK, सभी विज्ञापन यूनिट और पहले से लोड किए गए आईडी के लिए, पहले से लोड किए गए विज्ञापनों की कुल संख्या पर, ऐप्लिकेशन के हिसाब से सीमा लागू करता है:

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

ज़रूरी नहीं: विज्ञापनों को पहले से लोड होने से रोकना

ऐप्लिकेशन में विज्ञापन दिखाते समय, प्रीलोडिंग की सुविधा चालू रखें. इस दौरान, destroy तरीके का इस्तेमाल न करें. अगर आपको सेशन में किसी खास प्रीलोड आईडी के लिए फिर से विज्ञापन नहीं दिखाने हैं, तो विज्ञापनों को पहले से लोड करना बंद किया जा सकता है. किसी खास प्रीलोड आईडी के लिए विज्ञापनों को लोड होने से रोकने के लिए, प्रीलोड आईडी के साथ destroy मेथड को कॉल करें. destroy तरीके को कॉल करने से, कैश मेमोरी से प्रीलोड आईडी से जुड़े सभी प्रीलोड किए गए विज्ञापन हट जाते हैं.

नीचे दिए गए उदाहरण में, विज्ञापनों को पहले से लोड होने से रोकने का तरीका बताया गया है:

Kotlin

private fun stopPreloading(adUnitId: String) {
  // Stops the preloading and destroy preloaded ads.
  InterstitialAdPreloader.destroy(adUnitId)
}

Java

private void stopPreloading(String adUnitId) {
  // Stops the preloading and destroy preloaded ads.
  InterstitialAdPreloader.destroy(adUnitId);
}

ज़रूरी नहीं: जवाब में दी गई जानकारी पढ़ना

पहले से लोड किए गए अगले विज्ञापन के रिस्पॉन्स की जानकारी को पढ़ें. इसके लिए, विज्ञापन को कैश मेमोरी से न हटाएं. अगर आपको विज्ञापन दिखाने से पहले उसके मेटाडेटा की जांच करनी है, तो pollAd तरीके को कॉल करने के बजाय, रिस्पॉन्स की जानकारी पढ़ें.

यहां दिए गए उदाहरण में, पहले से लोड किए गए अगले विज्ञापन रिस्पॉन्स की जानकारी को पढ़ने का तरीका बताया गया है:

Kotlin

val responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId)
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.")
  return
}

Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")

Java

ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.");
  return;
}

Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());