পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন সেট-আপ করা

পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন হল ফুল-স্ক্রিন বিজ্ঞাপন ফর্ম্যাট যা আপনাকে স্ক্রিন বা গেম লেভেলের মধ্যে দেখানো বিজ্ঞাপনের জন্য অ্যাপ-মধ্যস্থ আইটেম অফার করতে দেয়। পুরস্কার প্রদানকারী বিজ্ঞাপনের মতো, আপনার ব্যবহারকারীদের বিজ্ঞাপন দেখার জন্য অপ্ট-ইন করতে হবে না। বিস্তারিত জানতে, দেখুন AdMob কেস স্টাডি এবং পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন ইউনিটের ওভারভিউ (বিটা)।

প্রেজেন্টেশন লেটেন্সি দূর করতে এবং ট্রানজিশন হওয়ার সময় বিজ্ঞাপন উপলভ্য আছে কিনা তা নিশ্চিত করতে, Google Mobile Ads SDK for React Native ব্যাকগ্রাউন্ড লোডিং, ক্যাশিং এবং বাফার রিপ্লেনিশমেন্ট ম্যানেজ করার জন্য বিজ্ঞাপন প্রিলোডিং ব্যবহার করে।

এই নির্দেশিকা থেকে আপনি জানতে পারবেন যে কীভাবে React Native অ্যাপে বিজ্ঞাপন প্রিলোড করার সাথে পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন ইন্টিগ্রেট করতে হয়।

পূর্বশর্ত

চালিয়ে যাওয়ার আগে, নিম্নলিখিত কাজগুলি করুন:

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

বিজ্ঞাপন প্রিলোড করা সম্পর্কে বোঝা

Google Mobile Ads SDK for React Native-এ বিজ্ঞাপন প্রিলোড করার সুবিধা বিজ্ঞাপন লোড ও ক্যাশ করার প্রসেস অটোমেট করে।

বিজ্ঞাপন প্রিলোড করার সুবিধাগুলি হল:

  • রেফারেন্স ম্যানেজমেন্ট: বিজ্ঞাপন দেখানো না হওয়া পর্যন্ত রেফারেন্স বজায় রাখে।
  • অটোমেটিক রিলোড করা: ক্যাশে থেকে কোনও বিজ্ঞাপন ফিরিয়ে আনা হলে সেটি লোড করে।
  • ম্যানেজ করা রিট্রাই: কোনও বিজ্ঞাপন লোড না হলে নতুন বিজ্ঞাপন লোড করে।
  • মেয়াদ শেষ হওয়া ম্যানেজ করা: মেয়াদ শেষ হওয়ার আগে বিজ্ঞাপন রিফ্রেশ করে।
  • ক্যাশ অপ্টিমাইজেশন: সর্বোচ্চ অগ্রাধিকারের বিজ্ঞাপন ডেলিভার করার জন্য ক্যাশ অর্ডার অপ্টিমাইজ করে।

ম্যানুয়ালি বিজ্ঞাপন লোড করতে, একটি পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন লোড করুন দেখুন।

প্রিলোড করা শুরু করুন

বিজ্ঞাপন প্রিলোড করা শুরু করতে, RewardedInterstitialAdPreloader.start মেথড কল করুন এবং বাফার স্টেট পরিবর্তন মনিটর করতে আপনার preloadId ভ্যালু, কনফিগারেশন সেটিংস ও ইভেন্ট কলব্যাক পাস করুন:

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

preloadId হল একটি স্ট্রিং যা অনন্যভাবে একটি বিজ্ঞাপন প্রিলোডিং কনফিগারেশন শনাক্ত করে। আপনার অ্যাপে একটি প্রিলোডিং কনফিগারেশনের জন্য আপনি কোনও বিজ্ঞাপন ইউনিট আইডি ব্যবহার করলে, সেই বিজ্ঞাপন ইউনিট আইডিটি প্রিলোড আইডি হিসেবে ব্যবহার করুন। আপনার অ্যাপে একই বিজ্ঞাপন ইউনিট আইডির জন্য একাধিক প্রিলোডার প্রয়োজন হলে, প্রতিটি প্রিলোড আইডির জন্য আলাদা স্ট্রিং পাস করুন।

আপনার অ্যাপ বাফার থেকে প্রিলোড করা বিজ্ঞাপন পোল করলে, Google Mobile Ads SDK for React Native বাফার রিফিল করার জন্য ব্যাকগ্রাউন্ডে রিপ্লেসমেন্ট বিজ্ঞাপনের অনুরোধ করে। বাফারে কোনও প্রিলোড করা বিজ্ঞাপন না থাকলে, Google Mobile Ads SDK for React Native, onAdsExhausted কলব্যাককে ইনভোক করে।

প্রিলোড ক্যাশে সীমা

Google Mobile Ads SDK for React Native প্রিলোড করা বিজ্ঞাপনের মোট সংখ্যার উপর অ্যাপ-ব্যাপী সীমা এনফোর্স করে:

  • ডিফল্ট সীমা: Google মেমরিতে সর্বাধিক ছয়টি প্রিলোড করা বিজ্ঞাপন রাখে। এই সীমা সব ফর্ম্যাট ও প্রিলোড আইডি জুড়ে শেয়ার করা হয়।
  • সাজেস্ট করা বাফার: প্রতিটি প্রিলোড আইডির জন্য দুটি প্রিলোড করা বিজ্ঞাপন।

আপনার অ্যাপ যদি অ্যাপ-ব্যাপী সীমায় পৌঁছে যায়, তাহলে আগে থেকে লোড করা বিজ্ঞাপনের জন্য ব্যাকগ্রাউন্ড অনুরোধ পজ হয়ে যায়, যতক্ষণ না পর্যন্ত ক্যাশে থেকে বিদ্যমান বিজ্ঞাপনগুলি পোল করা বা ধ্বংস করা হয়। এছাড়াও, স্ক্রিনে ফুল-স্ক্রিন বিজ্ঞাপন দেখানো হলে প্রিলোড করা সাময়িকভাবে পজ করা হয়।

পোল করুন এবং বিজ্ঞাপনটি দেখান

বিজ্ঞাপন দেখানোর আগে, RewardedInterstitialAdPreloader.isAdAvailable মেথড কল করে বিজ্ঞাপন উপলভ্য আছে কিনা তা যাচাই করুন। বিজ্ঞাপনটি ফিরিয়ে আনতে, RewardedInterstitialAdPreloader.pollAd মেথড কল করুন।

বিজ্ঞাপন দেখানোর জন্য, show পদ্ধতি কল করুন এবং ব্যবহারকারী বিজ্ঞাপন দেখা শেষ করলে পুরস্কার দেওয়ার জন্য onUserEarnedReward কলব্যাক ব্যবহার করুন। বিজ্ঞাপন বাতিল করা বা ডিসপ্লে না হওয়ার মতো প্রেজেন্টেশন ইভেন্ট শুনতে, show পদ্ধতি কল করার আগে বিজ্ঞাপন ইনস্ট্যান্সে adEventCallback প্রপার্টি সেট করুন।

নিম্নলিখিত উদাহরণটি বিজ্ঞাপন উপলভ্য কিনা তা চেক করে এবং বিজ্ঞাপন দেখানোর আগে ফুল-স্ক্রিন প্রেজেন্টেশন ইভেন্ট শোনে:

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

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

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

  ad.show(onRewardEarned);
}

মেমরি ও রিসোর্স রিলিজ করতে, onAdDismissedFullScreenContent এবং onAdFailedToShowFullScreenContent কলব্যাকে ad.destroy মেথড কল করুন।

উত্তরের তথ্য পড়ুন

ক্যাশে থেকে বিজ্ঞাপন না সরিয়ে পরবর্তী প্রিলোড করা বিজ্ঞাপনের জন্য রেসপন্স সংক্রান্ত তথ্য খতিয়ে দেখতে, RewardedInterstitialAdPreloader.peekAdResponseInfo মেথড কল করুন:

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

কোনও বিজ্ঞাপন উপলভ্য থাকলে, peekAdResponseInfo পদ্ধতিটি লোড করা বিজ্ঞাপন সোর্স এবং নেটওয়ার্ক অ্যাডাপ্টার সম্পর্কে তথ্য সহ একটি ResponseInfo অবজেক্ট রিটার্ন করে।

ঐচ্ছিক: SSV কলব্যাক যাচাই করুন

আপনার অ্যাপের যদি কাস্টম যাচাইকরণ প্যারামিটার, যেমন ব্যবহারকারীর আইডি বা কাস্টম পুরস্কার মেটাডেটা, সার্ভার-সাইড যাচাইকরণ (SSV) কলব্যাকে প্রয়োজন হয়, তাহলে show পদ্ধতি কল করার আগে পোল করা বিজ্ঞাপন ইনস্ট্যান্সে serverSideVerificationOptions প্রপার্টি সেট করুন।

আপনার সেট করা ভ্যালু SSV কলব্যাক কোয়েরি প্যারামিটারে পাস করা হয়:

  • userId: ব্যবহারকারীকে শনাক্ত করতে user_id কোয়েরি প্যারামিটারে পাস করে।
  • customData: কাস্টম মেটাডেটা ফরওয়ার্ড করার জন্য custom_data কোয়েরি প্যারামিটারে পাস করে।

নিম্নলিখিত উদাহরণটি বিজ্ঞাপন দেখানোর আগে পুরস্কার প্রদানকারী পৃষ্ঠা মধ্যকালিন বিজ্ঞাপন অবজেক্টে ServerSideVerificationOptions (customData এবং userId) সেট করে:

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

রিসোর্স ক্লিন-আপ করুন

সেশনের বাকি সময়ের জন্য নির্দিষ্ট প্রিলোড আইডির জন্য বিজ্ঞাপন দেখানোর প্রয়োজন না হলে, RewardedInterstitialAdPreloader.destroy মেথড কল করুন। এই প্রসেস সেই প্রিলোড আইডির জন্য প্রিলোড করা বন্ধ করে এবং মেমরি থেকে অব্যবহৃত প্রিলোড করা বিজ্ঞাপন সরিয়ে দেয়।

নিম্নলিখিত উদাহরণটি প্রিলোড করা বন্ধ করে দেয়:

export function destroyRewardedInterstitialAdPreloader(preloadId: string) {
  RewardedInterstitialAdPreloader.destroy(preloadId);
}

ব্যবহারকারী বিজ্ঞাপন বাতিল করে দিলে বা বিজ্ঞাপন দেখানো না গেলে, আলাদা আলাদা পোল করা বিজ্ঞাপনের ইনস্ট্যান্স সরিয়ে দিন। বিস্তারিত জানতে, পোল ও বিজ্ঞাপন দেখানো দেখুন।

সম্পূর্ণ উদাহরণ দেখুন

এই বিভাগে বিজ্ঞাপন প্রিলোড করার সম্পূর্ণ প্রয়োগ কভার করা হয়েছে।

নিম্নলিখিত উদাহরণ কম্পোনেন্ট মাউন্টে প্রিলোড করা শুরু করে, উপলভ্য বিজ্ঞাপনের সংখ্যা ট্র্যাক করে এবং প্রিলোড করা পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন দেখানোর জন্য কন্ট্রোল প্রদান করে:

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

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

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

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

  const handleShowAd = () => {
    setReward(null);
    setStatus('Showing preloaded ad...');
    showPreloadedRewardedInterstitialAd(
      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 Interstitial 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>
  );
}

পরবর্তী ধাপ

পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন ইন্টিগ্রেট করার পরে, নিম্নলিখিত বিষয়গুলি এক্সপ্লোর করুন: