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

বিজ্ঞাপন প্রিলোড করার সুবিধা GMA Next-Gen SDK-এ বিজ্ঞাপন লোড, ক্যাশে ও রিলোড করার প্রসেস অটোমেট করে। আপনি যদি সিঙ্গেল লোডিং ব্যবহার করেন, তাহলে অটোমেটিক লাইফসাইকেল ম্যানেজমেন্ট, ম্যানেজ করা রিট্রাই এবং অপ্টিমাইজ করা বিজ্ঞাপন নির্বাচনের জন্য বিজ্ঞাপন প্রিলোডিংয়ে মাইগ্রেট করুন। বিজ্ঞাপন প্রিলোডিং সম্পর্কে ধারণাগত বিবরণের জন্য, বিজ্ঞাপন প্রিলোডিং দেখুন। বিজ্ঞাপন প্রিলোড করার সুবিধা অ্যাপ খোলার সময়, ইন্টারস্টিশিয়াল, পুরস্কার প্রদানকারী এবং পুরস্কার প্রদানকারী ইন্টারস্টিশিয়াল বিজ্ঞাপন ফর্ম্যাট সাপোর্ট করে।

এই পৃষ্ঠা আপনাকে আগে থেকে থাকা সিঙ্গেল-লোড বিজ্ঞাপন প্রয়োগ করার পদ্ধতি থেকে বিজ্ঞাপন প্রি-লোডিংয়ে মাইগ্রেট করার ব্যাপারে সাহায্য করে। এই গাইডে ইন্টারস্টিশিয়াল বিজ্ঞাপনকে উদাহরণ হিসেবে ব্যবহার করা হয়েছে, তবে আপনি একই প্রসেস কাজ করে এমন বিজ্ঞাপন ফর্ম্যাটে প্রয়োগ করতে পারবেন।

পূর্বশর্ত

চালিয়ে যাওয়ার আগে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

বিজ্ঞাপন প্রি-লোডিং সহ বিজ্ঞাপনের অনুরোধ করা

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

নিম্নলিখিত উদাহরণে, সিঙ্গেল লোডিং ও বিজ্ঞাপন প্রিলোডিং সহ বিজ্ঞাপনের অনুরোধের তুলনা করা হয়েছে:

Kotlin

একবার লোড করা:

// Request a single ad.
val adRequest = AdRequest.Builder(adUnitId).build()
InterstitialAd.load(adRequest, adLoadCallback)

বিজ্ঞাপন প্রিলোডিং:

// Start the preloader once with a preload configuration.
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)

Java

সিঙ্গেল লোড:

// Request a single ad.
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
InterstitialAd.load(adRequest, adLoadCallback);

বিজ্ঞাপন প্রিলোড করা:

// Start the preloader once with a preload configuration.
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);

প্রিলোড কলব্যাকে পাল্টে নিন

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

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

Kotlin

একবার লোড করা:

// Listen for single ad request load results.
val adLoadCallback =
  object : AdLoadCallback<InterstitialAd> {
    override fun onAdLoaded(ad: InterstitialAd) {
      // Ad loaded for a single request.
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      Log.d(TAG, "Ad failed to load: ${adError.message}")
    }
  }

InterstitialAd.load(adRequest, adLoadCallback)

বিজ্ঞাপন প্রিলোডিং:

// Observe cache updates across multiple ads.
val preloadCallback =
  object : PreloadCallback {
    override fun onAdPreloaded(
      preloadId: String,
      responseInfo: ResponseInfo,
    ) {
      // Ad preloaded into the cache and is ready to show.
    }

    override fun onAdFailedToPreload(
      preloadId: String,
      adError: LoadAdError,
    ) {
      Log.d(TAG, "Ad failed to preload: ${adError.message}")
    }

    override fun onAdsExhausted(preloadId: String) {
      // All preloaded ads in the cache have been shown.
      Log.d(TAG, "Ads exhausted for: $preloadId")
    }
  }

InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)

Java

সিঙ্গেল লোড:

// Listen for single ad request load results.
AdLoadCallback<InterstitialAd> adLoadCallback =
    new AdLoadCallback<InterstitialAd>() {
      @Override
      public void onAdLoaded(@NonNull InterstitialAd ad) {
        // Ad loaded for a single request.
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError adError) {
        Log.d(TAG, "Ad failed to load: " + adError.getMessage());
      }
    };

InterstitialAd.load(adRequest, adLoadCallback);

বিজ্ঞাপন প্রিলোড করা:

// Observe cache updates across multiple ads.
PreloadCallback preloadCallback =
    new PreloadCallback() {
      @Override
      public void onAdPreloaded(
          @NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        // Ad preloaded into the cache and is ready to show.
      }

      @Override
      public void onAdFailedToPreload(
          @NonNull String preloadId, @NonNull LoadAdError adError) {
        Log.d(TAG, "Ad failed to preload: " + adError.getMessage());
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        // All preloaded ads in the cache have been shown.
        Log.d(TAG, "Ads exhausted for: " + preloadId);
      }
    };

InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

প্রিলোডার, GMA Next-Gen SDK কোনও বিজ্ঞাপন লোড বা ক্যাশে করলে অথবা আপনার অ্যাপ কোনও বিজ্ঞাপন দেখালে, কলব্যাক পদ্ধতিকে আহ্বান করে।

ক্যাশে থেকে বিজ্ঞাপন দেখান

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

নিম্নলিখিত উদাহরণে বিজ্ঞাপন প্রিলোডিংয়ের মাধ্যমে বিজ্ঞাপন দেখানো এবং একবার লোড করার মধ্যে তুলনা করা হয়েছে:

Kotlin

একবার লোড করা:

// Retrieve the ad from a saved variable.
val interstitialAd = this.interstitialAd ?: return
// Display the ad.
interstitialAd.show(activity)

বিজ্ঞাপন প্রিলোডিং:

// Retrieve the ad directly from the preloader cache.
val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return
// Display the ad.
interstitialAd.show(activity)

Java

সিঙ্গেল লোড:

// Retrieve the ad from a saved variable.
InterstitialAd interstitialAd = this.interstitialAd;
if (interstitialAd == null) {
  return;
}
// Display the ad.
interstitialAd.show(activity);

বিজ্ঞাপন প্রিলোডিং:

// Retrieve the ad directly from the preloader cache.
InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId);
if (interstitialAd == null) {
  return;
}
// Display the ad.
interstitialAd.show(activity);

ম্যানুয়াল ক্যাশিং ও রিলোডিং সরিয়ে দেওয়া

আপনি বিজ্ঞাপন পেলে প্রিলোডার অটোমেটিক একটি রিপ্লেসমেন্ট বিজ্ঞাপন লোড করে। সিঙ্গেল লোডের মতো, আপনাকে ম্যানুয়ালি বিজ্ঞাপনের রেফারেন্স স্টোর করতে বা রিলোড লজিক লিখতে হবে না।

আপনার কোড থেকে নিম্নলিখিত প্যাটার্নগুলি সরান:

  • মেম্বার ভেরিয়েবেল ক্যাশিং: বিজ্ঞাপন অবজেক্ট সেভ করে এমন মেম্বার ভেরিয়েবেল মুছে দিন।
  • ম্যানুয়ালি রিলোড করা: ব্যবহারকারী বিজ্ঞাপন বাতিল করে দিলে বা সেটি দেখাতে না পারলে লোড কল মুছে দিন।
  • কাস্টম রিট্রাই টাইমার: রিট্রাই হ্যান্ডলার, ব্যাকঅফ লুপ ও টাইমার মুছে দিন। GMA Next-Gen SDKটি প্রি-লোড করার অনুরোধ অটোমেটিক আবার চেষ্টা করা হয়েছে।

সম্পূর্ণ উদাহরণের তুলনা করা

নিচে দেওয়া উদাহরণে, বিজ্ঞাপন প্রি-লোডিংয়ে মাইগ্রেট করার আগে ও পরে সম্পূর্ণ ইন্টারস্টিশিয়াল বিজ্ঞাপন প্রয়োগের তুলনা করা হয়েছে:

Kotlin

একবার লোড করা:

// 1. Maintain a member variable to store the ad.
private var interstitialAd: InterstitialAd? = null

// 2. Load the ad and listen for load completion.
private fun loadAd() {
  val adRequest = AdRequest.Builder(adUnitId).build()
  InterstitialAd.load(
    adRequest,
    object : AdLoadCallback<InterstitialAd> {
      override fun onAdLoaded(ad: InterstitialAd) {
        interstitialAd = ad
      }

      override fun onAdFailedToLoad(adError: LoadAdError) {
        interstitialAd = null
      }
    },
  )
}

// 3. Show the saved ad.
private fun showAd(activity: Activity) {
  val interstitialAd = this.interstitialAd ?: return
  interstitialAd.adEventCallback =
    object : InterstitialAdEventCallback {
      override fun onAdDismissedFullScreenContent() {
        // Reload the ad after dismissal in single-load integrations.
        loadAd()
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError,
      ) {
        Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}")
      }
    }
  interstitialAd.show(activity)
}

বিজ্ঞাপন প্রিলোডিং:

// 1. Start preloading with a callback to listen for loaded ads.
private fun startPreloading(adUnitId: String) {
  val preloadCallback =
    object : PreloadCallback {
      override fun onAdPreloaded(
        preloadId: String,
        responseInfo: ResponseInfo,
      ) {
        // Ad preloaded successfully.
      }

      override fun onAdFailedToPreload(
        preloadId: String,
        adError: LoadAdError,
      ) {
        Log.d(TAG, "Ad failed to preload: ${adError.message}")
      }
    }

  val adRequest = AdRequest.Builder(adUnitId).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
}

// 2. Show the ad immediately after polling.
private fun showAd(activity: Activity, adUnitId: String) {
  val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return
  interstitialAd.adEventCallback =
    object : InterstitialAdEventCallback {
      override fun onAdDismissedFullScreenContent() {
        // Preloading automatically fetches a replacement ad.
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError,
      ) {
        Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}")
      }
    }
  interstitialAd.show(activity)
}

Java

সিঙ্গেল লোড:

// 1. Maintain a member variable to store the ad.
private InterstitialAd interstitialAd;

// 2. Load the ad and listen for load completion.
private void loadAd() {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  InterstitialAd.load(
      adRequest,
      new AdLoadCallback<InterstitialAd>() {
        @Override
        public void onAdLoaded(@NonNull InterstitialAd ad) {
          interstitialAd = ad;
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          interstitialAd = null;
        }
      });
}

// 3. Show the saved ad.
private void showAd(Activity activity) {
  if (interstitialAd == null) {
    return;
  }
  interstitialAd.setAdEventCallback(
      new InterstitialAdEventCallback() {
        @Override
        public void onAdDismissedFullScreenContent() {
          // Reload the ad after dismissal in single-load integrations.
          loadAd();
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          Log.d(
              TAG,
              "Ad failed to show: " + fullScreenContentError.getMessage());
        }
      });
  interstitialAd.show(activity);
}

বিজ্ঞাপন প্রিলোড করা:

// 1. Start preloading with a callback to listen for loaded ads.
private void startPreloading(String adUnitId) {
  PreloadCallback preloadCallback =
      new PreloadCallback() {
        @Override
        public void onAdPreloaded(
            @NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
          // Ad preloaded successfully.
        }

        @Override
        public void onAdFailedToPreload(
            @NonNull String preloadId, @NonNull LoadAdError adError) {
          Log.d(TAG, "Ad failed to preload: " + adError.getMessage());
        }
      };

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

// 2. Show the ad immediately after polling.
private void showAd(Activity activity, String adUnitId) {
  InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId);
  if (interstitialAd == null) {
    return;
  }
  interstitialAd.setAdEventCallback(
      new InterstitialAdEventCallback() {
        @Override
        public void onAdDismissedFullScreenContent() {
          // Preloading automatically fetches a replacement ad.
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          Log.d(
              TAG,
              "Ad failed to show: " + fullScreenContentError.getMessage());
        }
      });
  interstitialAd.show(activity);
}

পরবর্তী ধাপ

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