इनाम वाले विज्ञापन सेट अप करना

इनाम वाले विज्ञापनों की मदद से, उपयोगकर्ताओं को वीडियो विज्ञापनों, गेम खेलने देने वाले विज्ञापनों, और सर्वे के साथ इंटरैक्ट करने पर, ऐप्लिकेशन में खरीदने के लिए आइटम दिए जा सकते हैं. ज़्यादा जानकारी के लिए, इनाम वाली विज्ञापन यूनिट के बारे में खास जानकारी देखें.

विज्ञापन दिखाने में होने वाली देरी को कम करने और यह पक्का करने के लिए कि उपयोगकर्ता को इनाम मिलने पर विज्ञापन उपलब्ध हो, Google Mobile Ads SDK for React Native विज्ञापन लोड और कैश होने की प्रोसेस का इस्तेमाल करता है. इससे बैकग्राउंड में विज्ञापन लोड होने, कैश मेमोरी में सेव होने, और बफ़र को फिर से भरने की प्रोसेस को मैनेज किया जाता है.

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

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

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

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

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

Google Mobile Ads SDK for React Native में विज्ञापन लोड और कैश होने की प्रोसेस, विज्ञापन लोड होने और कैश होने की प्रोसेस को ऑटोमेट करती है.

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

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

विज्ञापनों को मैन्युअल तरीके से लोड करने के लिए, इनाम वाले विज्ञापन लोड करें देखें.

प्रीलोड करना शुरू करें

विज्ञापनों को पहले से लोड करने के लिए, RewardedAdPreloader.start मेथड को कॉल करें. साथ ही, बफ़र की स्थिति में होने वाले बदलावों पर नज़र रखने के लिए, preloadId वैल्यू, कॉन्फ़िगरेशन सेटिंग, और इवेंट कॉलबैक पास करें:

export function startRewardedAdPreloader(
  adUnitId: string,
  preloadId: string,
  customPreloadCallback?: PreloadCallback,
): boolean {
  const started = RewardedAdPreloader.start(
    preloadId,
    {
      request: {adUnitId},
      bufferSize: 2,
    },
    {
      // Called when an ad is preloaded into the buffer.
      onAdPreloaded: (event) => {
        console.log(`Rewarded ad preloaded for ${event.preloadId}`);
        customPreloadCallback?.onAdPreloaded?.(event);
      },
      // Called when an ad fails to preload.
      onAdFailedToPreload: (error: LoadAdError) => {
        console.error('Failed to preload rewarded ad:', error.message);
        customPreloadCallback?.onAdFailedToPreload?.(error);
      },
      // Called when all preloaded ads in the buffer have been shown.
      onAdsExhausted: () => {
        console.log('Rewarded ad buffer exhausted.');
        customPreloadCallback?.onAdsExhausted?.();
      },
    },
  );
  return started;
}

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

जब आपका ऐप्लिकेशन बफ़र से पहले से लोड किए गए विज्ञापन को पोल करता है, तो Google Mobile Ads SDK for React Native बफ़र को फिर से भरने के लिए, बैकग्राउंड में विज्ञापन को बदलने का अनुरोध करता है. अगर बफ़र में पहले से लोड किया गया कोई विज्ञापन नहीं है, तो Google Mobile Ads SDK for React Native, onAdsExhausted को कॉल करता है.

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

Google Mobile Ads SDK for React Native, सभी विज्ञापन यूनिट और पहले से लोड किए गए आईडी के लिए, पहले से लोड किए गए विज्ञापनों की कुल संख्या पर, ऐप्लिकेशन के हिसाब से सीमा लागू करता है:

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

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

पोल करें और विज्ञापन दिखाएं

विज्ञापन दिखाने से पहले, RewardedAdPreloader.isAdAvailable तरीके को कॉल करके पुष्टि करें कि विज्ञापन उपलब्ध है. विज्ञापन को वापस पाने के लिए, RewardedAdPreloader.pollAd तरीके को कॉल करें.

विज्ञापन खारिज होने या विज्ञापन न दिखने जैसे प्रज़ेंटेशन इवेंट को सुनने के लिए, show तरीके को कॉल करने से पहले, विज्ञापन इंस्टेंस पर adEventCallback प्रॉपर्टी सेट करें:

यहां दिए गए उदाहरण में, विज्ञापन की उपलब्धता की जांच की जाती है. साथ ही, विज्ञापन दिखाने से पहले प्रज़ेंटेशन इवेंट को सुना जाता है:

export function showPreloadedRewardedAd(
  preloadId: string,
  onRewardEarned: (reward: Reward) => void,
  customAdEventCallback?: FullScreenAdEventCallback,
) {
  if (!RewardedAdPreloader.isAdAvailable(preloadId)) {
    console.log('No preloaded rewarded ad available right now.');
    return;
  }

  const ad = RewardedAdPreloader.pollAd(preloadId);
  if (!ad) {
    return;
  }

  ad.adEventCallback = {
    // Called when the ad is presented on screen.
    onAdShowedFullScreenContent: () => {
      console.log('Preloaded rewarded ad showed full screen content.');
      customAdEventCallback?.onAdShowedFullScreenContent?.();
    },
    // Called when the ad is closed by the user.
    onAdDismissedFullScreenContent: () => {
      console.log('Preloaded rewarded ad dismissed full screen content.');
      customAdEventCallback?.onAdDismissedFullScreenContent?.();
      ad.destroy();
    },
    // Called when presentation fails.
    onAdFailedToShowFullScreenContent: (error) => {
      console.error('Failed to show preloaded rewarded ad:', error);
      customAdEventCallback?.onAdFailedToShowFullScreenContent?.(error);
      ad.destroy();
    },
    // Called when an impression is recorded.
    onAdImpression: () => {
      console.log('Preloaded rewarded ad recorded an impression.');
      customAdEventCallback?.onAdImpression?.();
    },
    // Called when the user taps the ad.
    onAdClicked: () => {
      console.log('Preloaded rewarded ad was clicked.');
      customAdEventCallback?.onAdClicked?.();
    },
    // Called when the ad is estimated to have earned money.
    onAdPaid: (adValue) => {
      console.log(
        `Preloaded rewarded ad paid: ${adValue.amountMicros}` +
          ` ${adValue.currencyCode}`,
      );
      customAdEventCallback?.onAdPaid?.(adValue);
    },
  };

  ad.show(onRewardEarned);
}

मेमोरी और संसाधनों को रिलीज़ करने के लिए, onAdDismissedFullScreenContent और onAdFailedToShowFullScreenContent कॉलबैक में ad.destroy वाले तरीके को कॉल करें.

जवाब की जानकारी पढ़ें

कैश मेमोरी से विज्ञापन को हटाए बिना, पहले से लोड किए गए अगले विज्ञापन के रिस्पॉन्स की जानकारी देखने के लिए, RewardedAdPreloader.peekAdResponseInfo तरीके को कॉल करें:

export function peekRewardedAdResponseInfo(
  preloadId: string,
): ResponseInfo | null {
  const responseInfo = RewardedAdPreloader.peekAdResponseInfo(preloadId);
  if (responseInfo) {
    console.log('Next preloaded rewarded ad response info:', responseInfo);
  }
  return responseInfo;
}

अगर कोई विज्ञापन उपलब्ध है, तो peekAdResponseInfo मेथड, ResponseInfo ऑब्जेक्ट दिखाता है. इसमें लोड किए गए विज्ञापन सोर्स और नेटवर्क अडैप्टर की जानकारी होती है.

ज़रूरी नहीं: सर्वर साइड से की जाने वाली पुष्टि के कॉलबैक की पुष्टि करना

अगर आपके ऐप्लिकेशन को सर्वर साइड से की जाने वाली पुष्टि (एसएसवी) कॉलबैक में, पुष्टि करने के लिए कस्टम पैरामीटर की ज़रूरत है, जैसे कि यूज़र आईडी या कस्टम इनाम का मेटाडेटा, तो show को कॉल करने से पहले, पोल किए गए विज्ञापन इंस्टेंस पर serverSideVerificationOptions प्रॉपर्टी सेट करें.

आपकी सेट की गई वैल्यू, एसएसवी कॉलबैक क्वेरी पैरामीटर को पास की जाती हैं:

  • userId: उपयोगकर्ता की पहचान करने के लिए, user_id क्वेरी पैरामीटर को पास करता है.
  • customData: कस्टम मेटाडेटा को फ़ॉरवर्ड करने के लिए, custom_data क्वेरी पैरामीटर को पास करता है.

नीचे दिए गए उदाहरण में, विज्ञापन दिखाने से पहले इनाम वाले विज्ञापन ऑब्जेक्ट पर ServerSideVerificationOptions (customData और userId) सेट किया गया है:

export function setServerSideVerificationRewarded(ad: RewardedAd) {
  ad.serverSideVerificationOptions = {
    userId: 'user_123',
    customData: 'sample_custom_data',
  };
}

संसाधन मिटाना

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

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

export function destroyRewardedAdPreloader(preloadId: string) {
  RewardedAdPreloader.destroy(preloadId);
}

जब उपयोगकर्ता विज्ञापन को खारिज कर दे या विज्ञापन न दिखे, तो पोल किए गए विज्ञापन के अलग-अलग इंस्टेंस को खत्म कर दें. ज़्यादा जानकारी के लिए, पोल करें और विज्ञापन दिखाएं लेख पढ़ें.

पूरा उदाहरण देखें

यहां दिए गए कॉम्पोनेंट का उदाहरण, माउंट पर पहले से लोड करना शुरू करता है. साथ ही, उपलब्ध विज्ञापनों की संख्या को ट्रैक करता है. इसके अलावा, पहले से लोड किए गए इनाम वाले विज्ञापनों को दिखाने के लिए कंट्रोल उपलब्ध कराता है:

export function RewardedScreen() {
  const [numAdsAvailable, setNumAdsAvailable] = useState<number>(0);
  const [status, setStatus] = useState<string>('Preloader idle.');
  const [reward, setReward] = useState<string | null>(null);

  const refreshAdCount = () => {
    const count = RewardedAdPreloader.getNumAdsAvailable(PRELOAD_ID);
    setNumAdsAvailable(count);
  };

  useEffect(() => {
    // Start preloading ads on component mount
    const started = startRewardedAdPreloader(REWARDED_AD_UNIT_ID, PRELOAD_ID, {
      onAdPreloaded: () => {
        refreshAdCount();
        setStatus('Rewarded ad preloaded into buffer.');
      },
      onAdFailedToPreload: (error) => {
        setStatus(`Failed to preload rewarded ad: ${error.message}`);
      },
      onAdsExhausted: () => {
        refreshAdCount();
        setStatus('Preload buffer exhausted for rewarded ads.');
      },
    });
    if (started) {
      setStatus('Preloader started.');
    }

    // Clean up preloader resources on component unmount
    return () => {
      destroyRewardedAdPreloader(PRELOAD_ID);
    };
  }, []);

  const handleShowAd = () => {
    setReward(null);
    setStatus('Showing preloaded ad...');
    showPreloadedRewardedAd(
      PRELOAD_ID,
      (userReward) => {
        setReward(`${userReward.amount} ${userReward.type}`);
      },
      {
        onAdDismissedFullScreenContent: () => {
          setStatus('Ad dismissed.');
        },
        onAdFailedToShowFullScreenContent: (error) => {
          setStatus(`Failed to show preloaded ad: ${error.message}`);
        },
      },
    );
    refreshAdCount();
  };

  return (
    <View style={styles.container}>
      <Text style={styles.title}>Preload Rewarded Ads</Text>
      <Text style={styles.status}>Status: {status}</Text>
      <Text style={styles.status}>Ads Available: {numAdsAvailable}</Text>
      {reward && <Text style={styles.rewardText}>Earned: {reward}</Text>}
      <View style={styles.buttonGroup}>
        <Button
          title="Show Preloaded Ad"
          onPress={handleShowAd}
          disabled={numAdsAvailable === 0}
        />
      </View>
    </View>
  );
}

इनकी जगह ये डालें:

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

अगले चरण

इनाम वाले विज्ञापनों को इंटिग्रेट करने के बाद, इन विषयों के बारे में जानें: