অ্যাপ খোলার সাথে সাথে দেখা যায় এমন বিজ্ঞাপন

প্ল্যাটফর্ম বেছে নিন: Android iOS Unity Flutter Android (পুরনো)

এই নির্দেশিকাটি সেইসব প্রকাশকদের জন্য যারা অ্যাপ খোলার সাথে সাথে দেখা যায় এমন বিজ্ঞাপন ইন্টিগ্রেট করছেন।

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

অ্যাপ খোলার সাথে সাথে দেখা যায় এমন বিজ্ঞাপন অটোমেটিক একটি ছোট ব্র্যান্ডিং এরিয়া দেখায় যাতে ব্যবহারকারীরা বুঝতে পারেন যে তারা আপনার অ্যাপে আছেন। অ্যাপ খোলার সাথে সাথে দেখা যায় এমন বিজ্ঞাপন কেমন দেখতে হয় তার একটি উদাহরণ এখানে দেওয়া হল:

অ্যাপ খোলার সাথে সাথে দেখা যায় এমন বিজ্ঞাপন প্রয়োগ করার জন্য প্রয়োজনীয় ধাপগুলি এখানে দেওয়া হল:

  1. একটি ম্যানেজার ক্লাস তৈরি করুন যা বিজ্ঞাপন দেখানোর আগে সেটি লোড করে।
  2. অ্যাপ ফোরগ্রাউন্ডিং ইভেন্ট চলাকালীন বিজ্ঞাপন দেখান।
  3. প্রেজেন্টেশন কলব্যাক ম্যানেজ করুন।

পূর্বশর্ত

সবসময় টেস্ট বিজ্ঞাপন দিয়ে পরীক্ষা করুন

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

অ্যাপ খোলার সাথে সাথে দেখা যায় এমন বিজ্ঞাপনের জন্য আমাদের নির্দিষ্ট টেস্ট বিজ্ঞাপন ইউনিট আইডি ব্যবহার করা হল টেস্ট বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায়:

ca-app-pub-3940256099942544/5575463023

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

Google Mobile Ads SDK টেস্ট বিজ্ঞাপন কীভাবে কাজ করে সেই সম্পর্কে আরও জানতে, টেস্ট বিজ্ঞাপন দেখুন।

ম্যানেজার ক্লাস প্রয়োগ করা

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

AppOpenAdManager নামে একটি নতুন সিঙ্গলটন ক্লাস তৈরি করো:

Swift

class AppOpenAdManager: NSObject {
  /// The app open ad.
  var appOpenAd: AppOpenAd?
  /// Maintains a reference to the delegate.
  weak var appOpenAdManagerDelegate: AppOpenAdManagerDelegate?
  /// Keeps track of if an app open ad is loading.
  var isLoadingAd = false
  /// Keeps track of if an app open ad is showing.
  var isShowingAd = false
  /// Keeps track of the time when an app open ad was loaded to discard expired ad.
  var loadTime: Date?
  /// For more interval details, see https://support.google.com/admob/answer/9341964
  let timeoutInterval: TimeInterval = 4 * 3_600

  static let shared = AppOpenAdManager()

Objective-C

@interface AppOpenAdManager ()

/// The app open ad.
@property(nonatomic, strong, nullable) GADAppOpenAd *appOpenAd;
/// Keeps track of if an app open ad is loading.
@property(nonatomic, assign) BOOL isLoadingAd;
/// Keeps track of if an app open ad is showing.
@property(nonatomic, assign) BOOL isShowingAd;
/// Keeps track of the time when an app open ad was loaded to discard expired ad.
@property(nonatomic, strong, nullable) NSDate *loadTime;

@end

/// For more interval details, see https://support.google.com/admob/answer/9341964
static const NSInteger kTimeoutInterval = 4;

@implementation AppOpenAdManager

+ (nonnull AppOpenAdManager *)sharedInstance {
  static AppOpenAdManager *instance = nil;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    instance = [[AppOpenAdManager alloc] init];
  });
  return instance;
}

এবং এর AppOpenAdManagerDelegate প্রোটোকল প্রয়োগ করুন:

Swift

protocol AppOpenAdManagerDelegate: AnyObject {
  /// Method to be invoked when an app open ad life cycle is complete (i.e. dismissed or fails to
  /// show).
  func appOpenAdManagerAdDidComplete(_ appOpenAdManager: AppOpenAdManager)
}

Objective-C

@protocol AppOpenAdManagerDelegate <NSObject>
/// Method to be invoked when an app open ad life cycle is complete (i.e. dismissed or fails to
/// show).
- (void)adDidComplete;
@end

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

পরবর্তী ধাপ হল অ্যাপ খোলার সাথে সাথে দেখা যায় এমন বিজ্ঞাপন লোড করা:

Swift

func loadAd() async {
  // Do not load ad if there is an unused ad or one is already loading.
  if isLoadingAd || isAdAvailable() {
    return
  }
  isLoadingAd = true

  do {
    appOpenAd = try await AppOpenAd.load(
      with: "ca-app-pub-3940256099942544/5575463023", request: Request())
    appOpenAd?.fullScreenContentDelegate = self
    loadTime = Date()
  } catch {
    print("App open ad failed to load with error: \(error.localizedDescription)")
    appOpenAd = nil
    loadTime = nil
  }
  isLoadingAd = false
}

Objective-C

- (void)loadAd {
  // Do not load ad if there is an unused ad or one is already loading.
  if ([self isAdAvailable] || self.isLoadingAd) {
    return;
  }
  self.isLoadingAd = YES;

  [GADAppOpenAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/5575463023"
                         request:[GADRequest request]
               completionHandler:^(GADAppOpenAd * _Nullable appOpenAd, NSError * _Nullable error) {
    self.isLoadingAd = NO;
    if (error) {
      NSLog(@"App open ad failed to load with error: %@", error);
      self.appOpenAd = nil;
      self.loadTime = nil;
      return;
    }
    self.appOpenAd = appOpenAd;
    self.appOpenAd.fullScreenContentDelegate = self;
    self.loadTime = [NSDate date];
  }];
}

বিজ্ঞাপন দেখান

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

Swift

func showAdIfAvailable() {
  // If the app open ad is already showing, do not show the ad again.
  if isShowingAd {
    return print("App open ad is already showing.")
  }

  // If the app open ad is not available yet but is supposed to show, load
  // a new ad.
  if !isAdAvailable() {
    print("App open ad is not ready yet.")
    // The app open ad is considered to be complete in this example.
    appOpenAdManagerDelegate?.appOpenAdManagerAdDidComplete(self)
    // Load a new ad.
    return
  }

  if let appOpenAd {
    appOpenAd.present(from: nil)
    isShowingAd = true
  }
}

Objective-C

- (void)showAdIfAvailable {
  // If the app open ad is already showing, do not show the ad again.
  if (self.isShowingAd) {
    NSLog(@"App open ad is already showing.");
    return;
  }

  // If the app open ad is not available yet but is supposed to show, load
  // a new ad.
  if (![self isAdAvailable]) {
    NSLog(@"App open ad is not ready yet.");
    // The app open ad is considered to be complete in this example.
    [self adDidComplete];
    // Load a new ad.
    return;
  }

  [self.appOpenAd presentFromRootViewController:nil];
  self.isShowingAd = YES;
}

অ্যাপ ফোরগ্রাউন্ডিং ইভেন্ট চলাকালীন বিজ্ঞাপন দেখান

অ্যাপ্লিকেশন অ্যাক্টিভ হয়ে গেলে, বিজ্ঞাপন উপলভ্য থাকলে তা দেখানোর জন্য showAdIfAvailable() কল করুন অথবা নতুন একটি লোড করুন।

Swift

func applicationDidBecomeActive(_ application: UIApplication) {
  // Show the app open ad when the app is foregrounded.
  AppOpenAdManager.shared.showAdIfAvailable()
}

Objective-C

- (void) applicationDidBecomeActive:(UIApplication *)application {
  // Show the app open ad when the app is foregrounded.
  [AppOpenAdManager.sharedInstance showAdIfAvailable];
}

প্রেজেন্টেশন কলব্যাক ম্যানেজ করুন

প্রেজেন্টেশন ইভেন্টের জন্য বিজ্ঞপ্তি পেতে, আপনাকে অবশ্যই GADFullScreenContentDelegate-কে রিটার্ন করা বিজ্ঞাপনের fullScreenContentDelegate`s প্রপার্টিতে অ্যাসাইন করতে হবে:

Swift

appOpenAd?.fullScreenContentDelegate = self

Objective-C

self.appOpenAd.fullScreenContentDelegate = self;

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

Swift

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("App open ad recorded an impression.")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("App open ad recorded a click.")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("App open ad will be dismissed.")
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("App open ad will be presented.")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("App open ad was dismissed.")
  appOpenAd = nil
  isShowingAd = false
  appOpenAdManagerDelegate?.appOpenAdManagerAdDidComplete(self)
  Task {
    await loadAd()
  }
}

func ad(
  _ ad: FullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("App open ad failed to present with error: \(error.localizedDescription)")
  appOpenAd = nil
  isShowingAd = false
  appOpenAdManagerDelegate?.appOpenAdManagerAdDidComplete(self)
  Task {
    await loadAd()
  }
}

Objective-C

- (void)adDidRecordImpression:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"App open ad recorded an impression.");
}

- (void)adDidRecordClick:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"App open ad recorded a click.");
}

- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"App open ad will be presented.");
}

- (void)adWillDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"App open ad will be dismissed.");
}

- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"App open ad was dismissed.");
  self.appOpenAd = nil;
  self.isShowingAd = NO;
  [self adDidComplete];
  [self loadAd];
}

- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
  NSLog(@"App open ad failed to present with error: %@", error.localizedDescription);
  self.appOpenAd = nil;
  self.isShowingAd = NO;
  [self adDidComplete];
  [self loadAd];
}

বিজ্ঞাপনের মেয়াদ শেষ হওয়ার বিষয়টি বিবেচনা করুন

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

আপনার AppOpenAdManager-এ loadTime নামে একটি Date প্রপার্টি যোগ করুন এবং আপনার বিজ্ঞাপন লোড হলে প্রপার্টি সেট করুন। তারপর আপনি এমন একটি পদ্ধতি যোগ করতে পারেন যা আপনার বিজ্ঞাপন লোড হওয়ার পর থেকে নির্দিষ্ট সংখ্যক ঘণ্টার কম সময় অতিবাহিত হলে true রিটার্ন করে। বিজ্ঞাপন দেখানোর চেষ্টা করার আগে আপনার বিজ্ঞাপন রেফারেন্সের বৈধতা চেক করতে ভুলবেন না।

Swift

private func wasLoadTimeLessThanNHoursAgo(timeoutInterval: TimeInterval) -> Bool {
  // Check if ad was loaded more than n hours ago.
  if let loadTime = loadTime {
    return Date().timeIntervalSince(loadTime) < timeoutInterval
  }
  return false
}

private func isAdAvailable() -> Bool {
  // Check if ad exists and can be shown.
  return appOpenAd != nil && wasLoadTimeLessThanNHoursAgo(timeoutInterval: timeoutInterval)
}

Objective-C

- (BOOL)wasLoadTimeLessThanNHoursAgo:(int)n {
  // Check if ad was loaded more than n hours ago.
  NSDate *now = [NSDate date];
  NSTimeInterval timeIntervalBetweenNowAndLoadTime = [now timeIntervalSinceDate:self.loadTime];
  double secondsPerHour = 3600.0;
  double intervalInHours = timeIntervalBetweenNowAndLoadTime / secondsPerHour;
  return intervalInHours < n;
}

- (BOOL)isAdAvailable {
  // Check if ad exists and can be shown.
  return _appOpenAd && [self wasLoadTimeLessThanNHoursAgo:kTimeoutInterval];
}

কোল্ড স্টার্ট ও লোডিং স্ক্রিন

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

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

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

পেশাদার পদ্ধতি

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

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

GitHub-এ সম্পূর্ণ উদাহরণ

Swift Objective-C

পরবর্তী ধাপ

ব্যবহারকারীর গোপনীয়তা সম্পর্কে আরও জানুন।