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

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

এই নির্দেশিকাটি আপনাকে দেখাবে কীভাবে একটি iOS অ্যাপে ইন্টারস্টিশিয়াল বিজ্ঞাপন যুক্ত করতে হয়।

পূর্বশর্ত

চালিয়ে যাওয়ার আগে, Google Mobile Ads SDK সেট আপ করুন

সর্বদা টেস্ট অ্যাড দিয়ে পরীক্ষা করুন

আপনার অ্যাপ তৈরি ও পরীক্ষা করার সময়, লাইভ বা প্রোডাকশন অ্যাডের পরিবর্তে টেস্ট অ্যাড ব্যবহার করুন। এটি করতে ব্যর্থ হলে আপনার অ্যাকাউন্ট সাসপেন্ড হতে পারে।

টেস্ট অ্যাড লোড করার সবচেয়ে সহজ উপায় হলো iOS ইন্টারস্টিশিয়ালের জন্য আমাদের নির্দিষ্ট টেস্ট অ্যাড ইউনিট আইডি ব্যবহার করা:
/21775744923/example/interstitial

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

Google Mobile Ads SDK টেস্ট অ্যাড সম্পর্কে বিস্তারিত জানতে, ‘টেস্ট অ্যাড সক্ষম করুন’ দেখুন।

বাস্তবায়ন

ইন্টারস্টিশিয়াল বিজ্ঞাপন সংহত করার প্রধান ধাপগুলো হলো:

  1. একটি বিজ্ঞাপন লোড করুন।
  2. কলব্যাকের জন্য নিবন্ধন করুন।
  3. বিজ্ঞাপনটি প্রদর্শন করুন।

একটি বিজ্ঞাপন লোড করুন

GAMInterstitialAd ক্লাসের load(adUnitID:request) ` মেথড ব্যবহার করে বিজ্ঞাপন লোড করা হয়।

সুইফট

fileprivate func loadInterstitial() async {
  do {
    interstitial = try await AdManagerInterstitialAd.load(
      with: "/21775744923/example/interstitial", request: AdManagerRequest())
    interstitial?.fullScreenContentDelegate = self
  } catch {
    print("Failed to load interstitial ad with error: \(error.localizedDescription)")
  }
}

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, FullScreenContentDelegate {
  private var interstitialAd: InterstitialAd?

  func loadAd() async {
    do {
      interstitialAd = try await InterstitialAd.load(
        with: "ca-app-pub-3940256099942544/4411468910", request: Request())
      interstitialAd?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

উদ্দেশ্য-সি

[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
                                     request:[GAMRequest request]
                           completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
                             if (error) {
                               NSLog(@"Failed to load interstitial ad with error: %@",
                                     [error localizedDescription]);
                               return;
                             }
                             self.interstitial = ad;
                             self.interstitial.fullScreenContentDelegate = self;
                           }];

কলব্যাকের জন্য নিবন্ধন করুন

প্রেজেন্টেশন ইভেন্টের নোটিফিকেশন পেতে হলে, আপনাকে ফেরত আসা অ্যাডের fullScreenContentDelegate প্রপার্টিতে GADFullScreenContentDelegate কে অ্যাসাইন করতে হবে:

সুইফট

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

উদ্দেশ্য-সি

self.interstitial.fullScreenContentDelegate = self;

GADFullScreenContentDelegate প্রোটোকলটি বিজ্ঞাপন সফলভাবে বা অসফলভাবে প্রদর্শিত হলে এবং তা বাতিল করা হলে কলব্যাকগুলো পরিচালনা করে। নিম্নলিখিত কোডটি দেখায় কিভাবে প্রোটোকলটি প্রয়োগ করতে হয়:

সুইফট

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
  print("\(#function) called with error: \(error.localizedDescription)")
  // Clear the interstitial ad.
  interstitial = nil
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitial = nil
}

SwiftUI

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(
  _ ad: FullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("\(#function) called")
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitialAd = nil
}

উদ্দেশ্য-সি

- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)ad:(id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(NSError *)error {
  NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

GAMInterstitialAd একটি ওয়ান-টাইম-ইউজ অবজেক্ট। এর মানে হলো, একবার একটি ইন্টারস্টিশিয়াল বিজ্ঞাপন দেখানো হলে, তা আর পুনরায় দেখানো যায় না। একটি উত্তম পদ্ধতি হলো GADFullScreenContentDelegate এর adDidDismissFullScreenContent: মেথডে আরেকটি ইন্টারস্টিশিয়াল বিজ্ঞাপন লোড করা, যাতে আগেরটি ডিসমিস হওয়ার সাথে সাথেই পরবর্তী বিজ্ঞাপনটি লোড হওয়া শুরু করে।

বিজ্ঞাপনটি প্রদর্শন করুন

অ্যাপের স্বাভাবিক কার্যপ্রবাহের মাঝে বিরতি দিলে ইন্টারস্টিশিয়াল দেখানো উচিত। যেমন, কোনো গেমের বিভিন্ন লেভেলের মাঝে অথবা ব্যবহারকারী কোনো কাজ সম্পন্ন করার পর এটি দেখানো যেতে পারে।

সুইফট

ad.present(from: self!)

SwiftUI

বিজ্ঞাপনটি কখন দেখানো হবে তা নির্ধারণ করতে ভিউ-এর UI ইভেন্টগুলো শুনুন।

var body: some View {
  // ...
  }
  .onChange(of: countdownTimer.isComplete) { newValue in
    showGameOverAlert = newValue
  }
  .alert(isPresented: $showGameOverAlert) {
    Alert(
      title: Text("Game Over"),
      message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
      dismissButton: .cancel(
        Text("OK"),
        action: {
          viewModel.showAd()
        }))

ভিউ মডেল থেকে ইন্টারস্টিশিয়াল বিজ্ঞাপনটি উপস্থাপন করুন:

func showAd() {
  guard let interstitialAd = interstitialAd else {
    return print("Ad wasn't ready.")
  }

  interstitialAd.present(from: nil)
}

উদ্দেশ্য-সি

[self.interstitial presentFromRootViewController:self];

সর্বোত্তম অনুশীলন

আপনার অ্যাপের জন্য ইন্টারস্টিশিয়াল বিজ্ঞাপন সঠিক ধরনের বিজ্ঞাপন কিনা, তা বিবেচনা করুন।
যেসব অ্যাপে স্বাভাবিক পরিবর্তনের মুহূর্ত থাকে, সেখানে ইন্টারস্টিশিয়াল বিজ্ঞাপন সবচেয়ে ভালো কাজ করে। অ্যাপের মধ্যে কোনো কাজ শেষ হওয়া, যেমন একটি ছবি শেয়ার করা বা গেমের একটি লেভেল সম্পূর্ণ করা, এমন একটি মুহূর্ত তৈরি করে। যেহেতু ব্যবহারকারী কাজের মাঝে একটি বিরতি আশা করেন, তাই তাদের অভিজ্ঞতায় ব্যাঘাত না ঘটিয়ে সহজেই একটি ইন্টারস্টিশিয়াল বিজ্ঞাপন দেখানো যায়। আপনার অ্যাপের কার্যপ্রবাহের কোন কোন পর্যায়ে আপনি ইন্টারস্টিশিয়াল বিজ্ঞাপন দেখাবেন এবং ব্যবহারকারী কীভাবে প্রতিক্রিয়া জানাতে পারেন, তা অবশ্যই বিবেচনা করে নেবেন।
মধ্যবর্তী বিজ্ঞাপন দেখানোর সময় কাজটি থামিয়ে রাখতে মনে রাখবেন।
বিভিন্ন ধরণের ইন্টারস্টিশিয়াল বিজ্ঞাপন রয়েছে: টেক্সট, ছবি, ভিডিও এবং আরও অনেক কিছু। এটা নিশ্চিত করা গুরুত্বপূর্ণ যে, যখন আপনার অ্যাপ একটি ইন্টারস্টিশিয়াল বিজ্ঞাপন প্রদর্শন করে, তখন এটি যেন কিছু রিসোর্সের ব্যবহারও স্থগিত রাখে, যাতে বিজ্ঞাপনটি সেগুলোর সুবিধা নিতে পারে। উদাহরণস্বরূপ, যখন আপনি একটি ইন্টারস্টিশিয়াল বিজ্ঞাপন দেখানোর জন্য কল করবেন, তখন আপনার অ্যাপ দ্বারা উৎপাদিত যেকোনো অডিও আউটপুট অবশ্যই থামিয়ে দিন। আপনি adDidDismissFullScreenContent: ইভেন্ট হ্যান্ডলারে শব্দ বাজানো পুনরায় শুরু করতে পারেন, যা ব্যবহারকারী বিজ্ঞাপনের সাথে ইন্টারঅ্যাক্ট করা শেষ করলে চালু হবে। এছাড়াও, বিজ্ঞাপনটি প্রদর্শিত হওয়ার সময় যেকোনো ভারী কম্পিউটেশনাল কাজ (যেমন একটি গেম লুপ) সাময়িকভাবে বন্ধ রাখার কথা বিবেচনা করুন। এটি নিশ্চিত করবে যে ব্যবহারকারী ধীর বা প্রতিক্রিয়াহীন গ্রাফিক্স অথবা আটকে আটকে যাওয়া ভিডিওর সম্মুখীন হবেন না।
লোড করার জন্য পর্যাপ্ত সময় দিন।
যেমন সঠিক সময়ে ইন্টারস্টিশিয়াল বিজ্ঞাপন দেখানো গুরুত্বপূর্ণ, তেমনই ব্যবহারকারীকে যেন সেগুলোর লোড হওয়ার জন্য অপেক্ষা করতে না হয়, তা নিশ্চিত করাও জরুরি। বিজ্ঞাপনটি দেখানোর আগেই লোড করে রাখলে, এটি নিশ্চিত করা যায় যে সঠিক সময়ে দেখানোর জন্য আপনার অ্যাপে একটি সম্পূর্ণ লোড হওয়া ইন্টারস্টিশিয়াল বিজ্ঞাপন প্রস্তুত থাকবে।
ব্যবহারকারীকে বিজ্ঞাপন দিয়ে ভারাক্রান্ত করবেন না।
আপনার অ্যাপে ইন্টারস্টিশিয়াল বিজ্ঞাপনের সংখ্যা বাড়ানো আয় বাড়ানোর একটি দুর্দান্ত উপায় বলে মনে হলেও, এটি ব্যবহারকারীর অভিজ্ঞতাকে খারাপ করতে পারে এবং ক্লিকথ্রু রেট কমিয়ে দিতে পারে। নিশ্চিত করুন যে ব্যবহারকারীরা যেন এত ঘন ঘন বাধাগ্রস্ত না হন যে তারা আপনার অ্যাপটি ব্যবহার করা আর উপভোগ করতে না পারেন।
ইন্টারস্টিশিয়াল দেখানোর জন্য লোড কমপ্লিশন কলব্যাক ব্যবহার করবেন না।
এর ফলে ব্যবহারকারীর অভিজ্ঞতা খারাপ হতে পারে। এর পরিবর্তে, বিজ্ঞাপনটি দেখানোর প্রয়োজন হওয়ার আগেই প্রি-লোড করুন। তারপর, এটি দেখানোর জন্য প্রস্তুত কিনা তা জানতে GAMInterstitialAd এর canPresentFromRootViewController:error: মেথডটি পরীক্ষা করুন।

গিটহাবে উদাহরণ

আপনার পছন্দের ভাষায় সম্পূর্ণ ইন্টারস্টিশিয়াল বিজ্ঞাপনের উদাহরণগুলো দেখুন:

পরবর্তী পদক্ষেপ