বিজ্ঞাপন প্রি-লোডিং (বিটা)

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

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

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

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

পূর্বশর্ত

এই টিউটোরিয়ালটি শুরু করার আগে, আপনাকে অবশ্যই Google Mobile Ads SDK ) সেট আপ করতে হবে।

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

অ্যাপটি চালু হলে, preload মেথডটি একবার কল করুন। preload মেথডটি কল করার পর, Google Mobile Ads SDK স্বয়ংক্রিয়ভাবে বিজ্ঞাপন প্রিলোড করে এবং প্রিলোড করা কনফিগারেশনগুলোর জন্য ব্যর্থ হওয়া অনুরোধগুলো পুনরায় চেষ্টা করে।

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

সুইফট

private func startPreloading(adUnitID: String) {
  // Start the preloading initialization process.
  let request = Request()
  let interstitialConfig = PreloadConfigurationV2(
    adUnitID: adUnitID, request: request)
  InterstitialAdPreloader.shared.preload(
    for: adUnitID, configuration: interstitialConfig, delegate: self)
}

উদ্দেশ্য-সি

- (void)startPreloadingWithAdUnitID:(nonnull NSString *)adUnitID {
  // Start the preloading initialization process.
  GADRequest *request = [GADRequest request];
  GADPreloadConfigurationV2 *interstitialConfig =
      [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID
                                                  request:request];

  [GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:adUnitID
                                                   configuration:interstitialConfig
                                                        delegate:self];
}

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

অ্যাড প্রি-লোডিং ব্যবহার করার সময়, Google Mobile Ads SDK ক্যাশ করা বিজ্ঞাপনগুলো সংরক্ষণ করে রাখে। যখন আপনি কোনো বিজ্ঞাপন দেখাতে চান, তখন adWithPreloadID মেথডটি কল করুন। Google Mobile Ads SDK একটি উপলব্ধ বিজ্ঞাপন খুঁজে বের করে এবং ব্যাকগ্রাউন্ডে স্বয়ংক্রিয়ভাবে পরবর্তী বিজ্ঞাপনটি প্রি-লোড করে।

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

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

সুইফট

private func showInterstitialAd(adUnitID: String) {
  // Verify that the preloaded ad is available before polling.
  guard isInterstitialAvailable(adUnitID: adUnitID) else {
    print("Preloaded interstitial ad is not available.")
    return
  }

  // Polling returns the next available ad and loads another ad in the background.
  let ad = InterstitialAdPreloader.shared.ad(with: adUnitID)

  // Interact with the ad object as needed.
  print("Interstitial ad response info: \(String(describing: ad?.responseInfo))")
  ad?.paidEventHandler = { (value: AdValue) in
    print("Interstitial ad paid event: \(value.value), \(value.currencyCode)")
  }

  ad?.fullScreenContentDelegate = self
  ad?.present(from: self)
}

উদ্দেশ্য-সি

- (void)showInterstitialAdWithAdUnitID:(nonnull NSString *)adUnitID {
  // Verify that the preloaded ad is available before polling.
  if (![self isInterstitialAvailableWithAdUnitID:adUnitID]) {
    NSLog(@"Preloaded interstitial ad is not available.");
    return;
  }

  // Getting the preloaded ad loads another ad in the background.
  GADInterstitialAd *ad =
      [GADInterstitialAdPreloader.sharedInstance adWithPreloadID:adUnitID];

  // Interact with the ad object as needed.
  NSLog(@"Interstitial ad response info: %@", ad.responseInfo);
  ad.paidEventHandler = ^(GADAdValue *_Nonnull value) {
    NSLog(@"Interstitial ad paid event: %@ %@ ", value.value, value.currencyCode);
  };
  ad.fullScreenContentDelegate = self;
  [ad presentFromRootViewController:self];
}

প্রি-লোডেড বিজ্ঞাপনের মেটাডেটা পান

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

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

সুইফট

private func getInterstitialAdResponseInfo(preloadID: String) {
  // Get the response info for the preloaded ad.
  if let responseInfo = InterstitialAdPreloader.shared.responseInfo(
    with: preloadID)
  {
    print("Ad response ID: \(responseInfo.responseIdentifier ?? "")")
  }
}

উদ্দেশ্য-সি

- (void)getInterstitialAdResponseInfoWithPreloadID:(nonnull NSString *)preloadID {
  // Get the response info for the preloaded ad.
  GADResponseInfo *responseInfo =
      [GADInterstitialAdPreloader.sharedInstance
          adResponseInfoWithPreloadID:preloadID];
  if (responseInfo) {
    NSLog(@"Ad response ID: %@", responseInfo.responseIdentifier);
  }
}

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

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

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

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

সুইফট

private func isInterstitialAvailable(adUnitID: String) -> Bool {
  // Verify that an ad is available before polling.
  return InterstitialAdPreloader.shared.isAdAvailable(with: adUnitID)
}

উদ্দেশ্য-সি

- (BOOL)isInterstitialAvailableWithAdUnitID:(nonnull NSString *)adUnitID {
  // Verify that an ad is available before polling.
  return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}

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

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

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

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

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

সুইফট

func adAvailable(forPreloadID preloadID: String, responseInfo: ResponseInfo) {
  // This callback indicates that an ad is available for the specified configuration.
  // No action is required here, but updating the UI can be useful in some cases.
  print("Ad preloaded successfully for ad preload ID: \(preloadID)")
}

func adsExhausted(forPreloadID preloadID: String) {
  // This callback indicates that all the ads for the specified configuration have been
  // consumed and no ads are available to show. No action is required here, but updating
  // the UI can be useful in some cases.
  // Don't call InterstitialAdPreloader.shared.preload or
  // InterstitialAdPreloader.shared.ad from adsExhausted.
  print("Ad exhausted for ad preload ID: \(preloadID)")
}

func adFailedToPreload(forPreloadID preloadID: String, error: Error) {
  print(
    "Ad failed to load with ad preload ID: \(preloadID), Error: \(error.localizedDescription)"
  )
}

উদ্দেশ্য-সি

- (void)adAvailableForPreloadID:(nonnull NSString *)preloadID
                   responseInfo:(nonnull GADResponseInfo *)responseInfo {
  // This callback indicates that an ad is available for the specified configuration.
  // No action is required here, but updating the UI can be useful in some cases.
  NSLog(@"Ad preloaded successfully for ad unit ID: %@", preloadID);
}

- (void)adsExhaustedForPreloadID:(nonnull NSString *)preloadID {
  // This callback indicates that all the ads for the specified configuration have been
  // consumed and no ads are available to show. No action is required here, but updating
  // the UI can be useful in some cases.
  // Don't call [GAD<Format>AdPreloader preloadForPreloadID:] or
  // [GAD<Format>AdPreloader adWithPreloadID:] from adsExhaustedForPreloadID.
  NSLog(@"Ad exhausted for ad preload ID: %@", preloadID);
}

- (void)adFailedToPreloadForPreloadID:(nonnull NSString *)preloadID
                                error:(nonnull NSError *)error {
  NSLog(@"Ad failed to load with ad preload ID: %@, Error: %@", preloadID,
        error.localizedDescription);
}

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

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

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

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

সুইফট

let preloadConfig = PreloadConfigurationV2(adUnitID: "ca-app-pub-3940256099942544/1712485313")
preloadConfig.bufferSize = 3

উদ্দেশ্য-সি

GADPreloadConfigurationV2 *preloadConfig =
    [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
preloadConfig.bufferSize = 3;

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

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

  • ডিফল্ট সীমা: Google Mobile Ads SDK মেমরিতে সর্বোচ্চ ৬টি প্রি-লোডেড বিজ্ঞাপন ধারণ করে। এই সীমাটি সমস্ত ফরম্যাট এবং প্রি-লোড আইডি জুড়ে প্রযোজ্য।
  • আমরা প্রতিটি প্রিলোড আইডির জন্য ২ বা ৩ এর একটি বাফার সাইজ রাখার পরামর্শ দিই।