বিজ্ঞাপন প্রিলোডিং (আলফা)

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

ম্যানুয়াল বিজ্ঞাপন লোডিংয়ের তুলনায় বিজ্ঞাপন প্রি-লোডিং নিম্নলিখিত সুবিধাগুলো প্রদান করে:

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

এই নির্দেশিকায় প্রিলোড বিজ্ঞাপন কনফিগার করা, প্রিলোড বিজ্ঞাপনের প্রাপ্যতা যাচাই করা এবং প্রিলোড করা বিজ্ঞাপনটি দেখানোর পদ্ধতি আলোচনা করা হয়েছে।

পূর্বশর্ত

টিউটোরিয়ালটি শুরু করার আগে, আপনাকে নিম্নলিখিত বিষয়গুলো সম্পন্ন করতে হবে:

বিজ্ঞাপন প্রি-লোড করা শুরু করুন

বিজ্ঞাপন প্রি-লোড করা শুরু করতে, startPreload() মেথডটি কল করুন। অ্যাপটি চালু হওয়ার সময় এই মেথডটি শুধুমাত্র একবার কল করুন। startPreload() কল করার পর, GMA Next-Gen SDK স্বয়ংক্রিয়ভাবে বিজ্ঞাপন প্রি-লোড করে এবং প্রি-লোড করা কনফিগারেশনের জন্য ব্যর্থ হওয়া অনুরোধগুলো পুনরায় চেষ্টা করে।

নিম্নলিখিত উদাহরণটি বিজ্ঞাপন প্রি-লোড করা শুরু করে:

কোটলিন

private fun startPreloading(adUnitId: String) {
  val adRequest = AdRequest.Builder(adUnitId).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitId, preloadConfig)
}

জাভা

private void startPreloading(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

আগে থেকে লোড করা বিজ্ঞাপনটি নিন এবং দেখান

অ্যাড প্রি-লোডিং ব্যবহার করার সময়, GMA Next-Gen SDK ক্যাশ করা বিজ্ঞাপন সংরক্ষণ করে। যখন আপনি কোনো বিজ্ঞাপন দেখাতে চান, তখন pollAd() কল করুন। GMA Next-Gen SDK উপলব্ধ বিজ্ঞাপনটি খুঁজে বের করে এবং স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে পরবর্তী বিজ্ঞাপনটি প্রি-লোড করে।

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

নিম্নলিখিত উদাহরণটি আগে থেকে লোড করা একটি বিজ্ঞাপন খুঁজে বের করে দেখায়:

কোটলিন

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)

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

        override fun onAdPaid(value: AdValue) {
          Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
        }
      }

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

জাভা

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.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
    ad.setAdEventCallback(
        new InterstitialAdEventCallback() {
          @Override
          public void onAdImpression() {
            Log.d(TAG, "Interstitial ad recorded an impression.");
          }

          @Override
          public void onAdPaid(AdValue value) {
            Log.d(
                TAG,
                "Interstitial ad onPaidEvent: "
                    + value.getValueMicros()
                    + " "
                    + value.getCurrencyCode());
          }
        });

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

প্রি-লোডিং বিজ্ঞাপনের প্রাপ্যতা যাচাই করুন

বিজ্ঞাপনের প্রাপ্যতা যাচাই করতে, নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বেছে নিন:

প্রি-লোডেড বিজ্ঞাপনের প্রাপ্যতা পান

নিম্নলিখিত উদাহরণটি বিজ্ঞাপনের প্রাপ্যতা যাচাই করে:

কোটলিন

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

জাভা

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

আগে থেকে লোড করা বিজ্ঞাপনের প্রাপ্যতা শুনুন

বিজ্ঞাপন সফলভাবে প্রি-লোড হলে, প্রি-লোড হতে ব্যর্থ হলে, বা বিজ্ঞাপনের ক্যাশে শেষ হয়ে গেলে বিজ্ঞপ্তি পেতে প্রি-লোড ইভেন্টের জন্য নিবন্ধন করুন।

প্রিলোড ইভেন্টগুলো অ্যানালিটিক্স উদ্দেশ্যে ব্যবহৃত হয়। প্রিলোড ইভেন্ট কলব্যাকের মধ্যে:

  • startPreload() কল করবেন না।
  • বিজ্ঞাপনটি অবিলম্বে দেখানো না হলে pollAd() কল করা থেকে বিরত থাকুন।

নিম্নলিখিত উদাহরণটি বিজ্ঞাপন ইভেন্টের জন্য নিবন্ধন করে:

কোটলিন

private fun startPreloadingWithCallback(adUnitId: String) {
  val preloadCallback =
    // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
    object : PreloadCallback {
      override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
        Log.i(
          TAG,
          ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
        )
        // [Optional] Get the error response info for additional details.
        // val responseInfo = adError.responseInfo
      }

      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)
}

জাভা

private void startPreloadingWithCallback(String adUnitId) {
  PreloadCallback preloadCallback =
      // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
      new PreloadCallback() {
        @Override
        public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
          Log.e(
              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(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(String preloadId, 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);
}

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

সেশনে কোনো প্রিলোড আইডির জন্য যদি আবার বিজ্ঞাপন দেখানোর প্রয়োজন না হয়, তাহলে আপনি বিজ্ঞাপন প্রিলোড করা বন্ধ করতে পারেন। একটি নির্দিষ্ট প্রিলোড আইডির জন্য বিজ্ঞাপন প্রিলোড করা বন্ধ করতে, প্রিলোড আইডিটি সহ destroy() ফাংশনটি কল করুন।

বাফার আকার সেট করুন

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

কোটলিন

private fun setBufferSize(adUnitId: String) {
  val adRequest = AdRequest.Builder(adUnitId).build()
  val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
  InterstitialAdPreloader.start(adUnitId, preloadConfig)
}

জাভা

private void setBufferSize(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}