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

উচ্চ স্তরে, অ্যাপ ওপেন বিজ্ঞাপন বাস্তবায়নের জন্য প্রয়োজনীয় পদক্ষেপগুলি এখানে দেওয়া হল:
- একটি ম্যানেজার ক্লাস তৈরি করুন যা বিজ্ঞাপন প্রদর্শনের আগে লোড করে।
- অ্যাপ ফোরগ্রাউন্ডিং ইভেন্টের সময় অ্যাডটি দেখান।
- উপস্থাপনা কলব্যাক পরিচালনা করুন।
পূর্বশর্ত
- আমাদের শুরু করুন নির্দেশিকায় সেটআপ নির্দেশাবলী অনুসরণ করুন।
- আপনার ডিভাইসটিকে পরীক্ষামূলক ডিভাইস হিসেবে কীভাবে কনফিগার করবেন তা জানুন।
সর্বদা পরীক্ষামূলক বিজ্ঞাপন দিয়ে পরীক্ষা করুন
আপনার অ্যাপ তৈরি এবং পরীক্ষা করার সময়, লাইভ, প্রোডাকশন বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন ব্যবহার করুন। এটি না করলে আপনার অ্যাকাউন্ট সাসপেন্ড হতে পারে।
পরীক্ষামূলক বিজ্ঞাপন লোড করার সবচেয়ে সহজ উপায় হল অ্যাপ খোলা বিজ্ঞাপনের জন্য আমাদের ডেডিকেটেড পরীক্ষামূলক বিজ্ঞাপন ইউনিট আইডি ব্যবহার করা:
/21775744923/example/app-open
এটি বিশেষভাবে প্রতিটি অনুরোধের জন্য পরীক্ষামূলক বিজ্ঞাপন ফেরত দেওয়ার জন্য কনফিগার করা হয়েছে এবং কোডিং, পরীক্ষা এবং ডিবাগিংয়ের সময় আপনি এটি আপনার নিজস্ব অ্যাপে ব্যবহার করতে পারেন। আপনার অ্যাপ প্রকাশ করার আগে এটি আপনার নিজস্ব বিজ্ঞাপন ইউনিট আইডি দিয়ে প্রতিস্থাপন করুন।
মোবাইল বিজ্ঞাপন SDK-এর পরীক্ষামূলক বিজ্ঞাপনগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, পরীক্ষামূলক বিজ্ঞাপন দেখুন।
একটি ম্যানেজার ক্লাস বাস্তবায়ন করুন
আপনার বিজ্ঞাপনটি দ্রুত দেখানো উচিত, তাই বিজ্ঞাপনটি প্রদর্শনের আগে লোড করাই ভালো। এইভাবে, ব্যবহারকারী আপনার অ্যাপে প্রবেশ করার সাথে সাথেই আপনার কাছে একটি বিজ্ঞাপন প্রস্তুত থাকবে। বিজ্ঞাপনটি দেখানোর আগে আগে থেকেই বিজ্ঞাপনের অনুরোধ করার জন্য একটি ম্যানেজার ক্লাস বাস্তবায়ন করুন।
AppOpenAdManager নামে একটি নতুন সিঙ্গেলটন ক্লাস তৈরি করুন:
সুইফট
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/admanager/answer/9351867
let timeoutInterval: TimeInterval = 4 * 3_600
static let shared = AppOpenAdManager()
অবজেক্টিভ-সি
@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/admanager/answer/9351867
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;
}
And implement its AppOpenAdManagerDelegate protocol:
সুইফট
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)
}
অবজেক্টিভ-সি
@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
একটি বিজ্ঞাপন লোড করুন
পরবর্তী ধাপ হল একটি অ্যাপ খোলা বিজ্ঞাপন লোড করা:
সুইফট
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: "/21775744923/example/app-open", request: AdManagerRequest())
appOpenAd?.fullScreenContentDelegate = self
loadTime = Date()
} catch {
print("App open ad failed to load with error: \(error.localizedDescription)")
appOpenAd = nil
loadTime = nil
}
isLoadingAd = false
}
অবজেক্টিভ-সি
- (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:@"/21775744923/example/app-open"
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];
}];
}
একটি বিজ্ঞাপন দেখান
The next step is to show an app open ad. If no ad is available, attempt to load a new ad.
সুইফট
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 {
print("App open ad will be displayed.")
appOpenAd.present(from: nil)
isShowingAd = true
}
}
অবজেক্টিভ-সি
- (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;
}
অ্যাপ ফোরগ্রাউন্ডিং ইভেন্টের সময় বিজ্ঞাপনটি দেখান
When the application becomes active, call showAdIfAvailable() to show an ad if one is available, or loads a new one.
সুইফট
func applicationDidBecomeActive(_ application: UIApplication) {
// Show the app open ad when the app is foregrounded.
AppOpenAdManager.shared.showAdIfAvailable()
}
অবজেক্টিভ-সি
- (void) applicationDidBecomeActive:(UIApplication *)application {
// Show the app open ad when the app is foregrounded.
[AppOpenAdManager.sharedInstance showAdIfAvailable];
}
উপস্থাপনা কলব্যাকগুলি পরিচালনা করুন
To receive notifications for presentation events, you must assign the GADFullScreenContentDelegate to the fullScreenContentDelegate`s property of the returned ad:
সুইফট
appOpenAd?.fullScreenContentDelegate = self
অবজেক্টিভ-সি
self.appOpenAd.fullScreenContentDelegate = self;
বিশেষ করে, প্রথমটি উপস্থাপনা শেষ হওয়ার পরে আপনাকে পরবর্তী অ্যাপ খোলার বিজ্ঞাপনের জন্য অনুরোধ করতে হবে। নিম্নলিখিত কোডটি আপনার AppOpenAdManager ফাইলে প্রোটোকলটি কীভাবে বাস্তবায়ন করবেন তা দেখায়:
সুইফট
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()
}
}
অবজেক্টিভ-সি
- (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];
}
বিজ্ঞাপনের মেয়াদ শেষ হওয়ার কথা বিবেচনা করুন
To make sure you don't show an expired ad, you can add a method to the app delegate that checks the elapsed time since your ad reference loaded.
আপনার AppOpenAdManager loadTime নামক একটি Date প্রপার্টি যোগ করুন এবং আপনার বিজ্ঞাপন লোড হওয়ার সময় প্রপার্টিটি সেট করুন। এরপর আপনি এমন একটি পদ্ধতি যোগ করতে পারেন যা আপনার বিজ্ঞাপন লোড হওয়ার পর নির্দিষ্ট সংখ্যক ঘন্টার কম সময় অতিবাহিত হলে true রিটার্ন করে। বিজ্ঞাপনটি দেখানোর চেষ্টা করার আগে নিশ্চিত করুন যে আপনি আপনার বিজ্ঞাপনের রেফারেন্সের বৈধতা পরীক্ষা করেছেন।
সুইফট
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)
}
অবজেক্টিভ-সি
- (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 self.appOpenAd && [self wasLoadTimeLessThanNHoursAgo:kTimeoutInterval];
}
কোল্ড স্টার্ট এবং লোডিং স্ক্রিন
ডকুমেন্টেশন ধরে নিয়েছে যে ব্যবহারকারীরা যখন আপনার অ্যাপটি মেমোরিতে সাসপেন্ড করা থাকে তখনই কেবল অ্যাপ ওপেন বিজ্ঞাপন দেখান। "কোল্ড স্টার্ট" তখন ঘটে যখন আপনার অ্যাপটি চালু হয় কিন্তু আগে মেমোরিতে সাসপেন্ড করা হয়নি।
An example of a cold start is when a user opens your app for the first time. With cold starts, you won't have a previously loaded app open ad that's ready to be shown right away. The delay between when you request an ad and receive an ad back can create a situation where users are able to briefly use your app before being surprised by an out of context ad. This should be avoided because it is a bad user experience.
কোল্ড স্টার্টে অ্যাপ ওপেন বিজ্ঞাপন ব্যবহার করার পছন্দের উপায় হল আপনার গেম বা অ্যাপ অ্যাসেট লোড করার জন্য একটি লোডিং স্ক্রিন ব্যবহার করা এবং শুধুমাত্র লোডিং স্ক্রিন থেকে বিজ্ঞাপনটি দেখানো। যদি আপনার অ্যাপ লোডিং সম্পন্ন করে থাকে এবং ব্যবহারকারীকে আপনার অ্যাপের মূল কন্টেন্টে পাঠিয়ে থাকে, তাহলে বিজ্ঞাপনটি দেখাবেন না।
সেরা অনুশীলন
Google built app open ads to help you monetize your app's loading screen, but it's important to keep best practices in mind so that your users enjoy using your app. Make sure to:
- Wait to show your first app open ad until after your users have used your app a few times.
- Show app open ads during times when your users would otherwise be waiting for your app to load.
- যদি অ্যাপ খোলা বিজ্ঞাপনের নিচে একটি লোডিং স্ক্রিন থাকে এবং বিজ্ঞাপনটি খারিজ হওয়ার আগেই আপনার লোডিং স্ক্রিন লোডিং সম্পন্ন করে, তাহলে আপনি
adDidDismissFullScreenContentপদ্ধতিতে আপনার লোডিং স্ক্রিনটি খারিজ করতে চাইতে পারেন।
GitHub-এ সম্পূর্ণ উদাহরণ
পরবর্তী পদক্ষেপ
ব্যবহারকারীর গোপনীয়তা সম্পর্কে আরও জানুন।