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

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

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

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

পূর্বশর্ত

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

Android

ca-app-pub-3940256099942544/1033173712

iOS

ca-app-pub-3940256099942544/4411468910

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

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

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

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

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

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

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

export function startPreloader(
  adUnitId: string,
  preloadId: string,
  customPreloadCallback?: PreloadCallback,
): boolean {
  try {
    const started = InterstitialAdPreloader.start(
      preloadId,
      {
        request: {adUnitId},
        bufferSize: 2,
      },
      {
        // Called when an ad is preloaded into the buffer.
        onAdPreloaded: (metadata) => {
          console.log(`Interstitial ad preloaded for ${metadata.preloadId}`);
          customPreloadCallback?.onAdPreloaded?.(metadata);
        },
        // Called when an ad fails to preload.
        onAdFailedToPreload: (error: LoadAdError) => {
          console.error('Failed to preload interstitial ad:', error.message);
          customPreloadCallback?.onAdFailedToPreload?.(error);
        },
        // Called when all preloaded ads in the buffer have been shown.
        onAdsExhausted: () => {
          console.log('Preload buffer exhausted for interstitial ads.');
          customPreloadCallback?.onAdsExhausted?.();
        },
      },
    );
    return started;
  } catch (error) {
    console.error('Error starting interstitial ad preloader:', error);
    return false;
  }
}

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

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

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

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

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

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

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

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

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

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

export function showPreloadedAd(
  preloadId: string,
  customAdEventCallback?: FullScreenAdEventCallback,
) {
  if (InterstitialAdPreloader.isAdAvailable(preloadId)) {
    const ad = InterstitialAdPreloader.pollAd(preloadId);
    if (ad) {
      ad.adEventCallback = {
        // Called when the ad is presented on screen.
        onAdShowedFullScreenContent: () => {
          console.log('Preloaded interstitial ad showed full screen content.');
          customAdEventCallback?.onAdShowedFullScreenContent?.();
        },
        // Called when the ad is closed by the user.
        onAdDismissedFullScreenContent: () => {
          console.log('Preloaded interstitial ad dismissed.');
          customAdEventCallback?.onAdDismissedFullScreenContent?.();
          ad.destroy();
        },
        // Called when presentation fails.
        onAdFailedToShowFullScreenContent: (error) => {
          console.error('Preloaded interstitial ad failed to show:', error);
          customAdEventCallback?.onAdFailedToShowFullScreenContent?.(error);
          ad.destroy();
        },
        // Called when an impression is recorded.
        onAdImpression: () => {
          console.log('Preloaded interstitial ad recorded an impression.');
          customAdEventCallback?.onAdImpression?.();
        },
        // Called when the user taps the ad.
        onAdClicked: () => {
          console.log('Preloaded interstitial ad was clicked.');
          customAdEventCallback?.onAdClicked?.();
        },
        // Called when the ad is estimated to have earned money.
        onAdPaid: (adValue) => {
          console.log(
            `Preloaded interstitial ad paid: ${adValue.amountMicros}` +
              ` ${adValue.currencyCode}`,
          );
          customAdEventCallback?.onAdPaid?.(adValue);
        },
      };
      ad.show();
    }
  } else {
    console.log('No preloaded interstitial ad available in buffer.');
  }
}

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

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

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

export function peekPreloadedAdResponseInfo(preloadId: string) {
  if (InterstitialAdPreloader.isAdAvailable(preloadId)) {
    const responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId);
    if (responseInfo) {
      console.log('Next preloaded ad response info:', responseInfo);
    }
  }
}

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

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

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

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

export function destroyPreloader(preloadId: string) {
  InterstitialAdPreloader.destroy(preloadId);
}

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

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

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

export function InterstitialScreen() {
  const [numAdsAvailable, setNumAdsAvailable] = useState<number>(0);
  const [status, setStatus] = useState<string>('Initializing Preloader...');

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

  useEffect(() => {
    // Start preloading interstitial ads on component mount
    startPreloader(INTERSTITIAL_AD_UNIT_ID, PRELOAD_ID, {
      onAdPreloaded: () => {
        refreshAdCount();
        setStatus('Ad preloaded and ready!');
      },
      onAdFailedToPreload: (error) => {
        setStatus(`Preload failed: ${error.message}`);
      },
      onAdsExhausted: () => {
        refreshAdCount();
        setStatus('Preload buffer exhausted.');
      },
    });
    setStatus('Preloader started.');

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

  const handleShow = () => {
    showPreloadedAd(PRELOAD_ID, {
      onAdDismissedFullScreenContent: () => {
        setStatus('Ad dismissed.');
      },
      onAdFailedToShowFullScreenContent: (error) => {
        setStatus(`Failed to show ad: ${error.message}`);
      },
    });
    setStatus('Showing preloaded ad...');
    refreshAdCount();
  };

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

নিম্নলিখিতগুলি পরিবর্তন করুন:

  • INTERSTITIAL_AD_UNIT_ID-এর জায়গায় আপনার বিজ্ঞাপন ইউনিট আইডি লিখুন।
  • আপনার প্রিলোডার আইডি সহ PRELOAD_ID।

পরবর্তী ধাপ

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