এই সমস্যার সমাধান করতে, AdMob কনফিগার করা যায় এমন অ্যাডাপ্টার ইনিশিয়ালাইজেশন প্রদান করে। এই ফিচার আপনাকে প্রথম বিজ্ঞাপন ইম্প্রেশনের জন্য কোন অ্যাডাপ্টার ইনিশিয়ালাইজ করা হবে তা নিয়ন্ত্রণ করতে দেয় এবং সেই ইম্প্রেশনের জন্য লেটেন্সি কমায়।
এই নির্দেশিকায় কনফিগার করা যায় এমন অ্যাডাপ্টারের ইনিশিয়ালাইজেশনের নিম্নলিখিত দিকগুলি অন্তর্ভুক্ত:
- অ্যাডাপ্টার কনফিগারেশন তৈরি করা
- আনইনিশিয়ালাইজড অ্যাডাপ্টার এড়িয়ে যান
- বাকি থাকা অ্যাডাপ্টার ইনিশিয়ালাইজ করুন
পূর্বশর্ত
- Google Mobile Ads SDK 13.4.0 বা তার পরবর্তী যেকোনও ভার্সন ইমপোর্ট করুন।
- Google Mobile Ads SDK সেট-আপ করুন।
Objective-C-তে
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>যোগ করে অথবা Swift-এimport GoogleMobileAds_Privateযোগ করে এই ফিচারে অপ্ট-ইন করুন।Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
অ্যাডাপ্টার কনফিগারেশন তৈরি করুন
অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশন Google Mobile Ads SDK-কে শুধুমাত্র প্রয়োজনীয় অ্যাডাপ্টার ইনিশিয়ালাইজ করার নির্দেশ দেয়। এটি অপ্রয়োজনীয় অ্যাডাপ্টারকে আপনার প্রথম বিজ্ঞাপনের অনুরোধ ব্লক করা থেকে আটকায়, কম্পিউটেশন রিসোর্স বাঁচায় এবং প্রথম বিজ্ঞাপনের ইম্প্রেশনের জন্য লেটেন্সি উল্লেখযোগ্যভাবে কমায়।
আপনার অ্যাপের পারফর্ম্যান্স অপ্টিমাইজ করতে, আপনি অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশন তৈরি করার সময় নিম্নলিখিত স্ট্র্যাটেজি বিবেচনা করুন:
নির্দিষ্ট বিজ্ঞাপন ফর্ম্যাট বা বিজ্ঞাপন ইউনিটকে অগ্রাধিকার দিন
আপনার অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশনে নির্দিষ্ট বিজ্ঞাপন ফর্ম্যাট বা বিজ্ঞাপন ইউনিট ঘোষণা করে, অ্যাপ খোলার সাথে সাথে দেখা যায় এমন বিজ্ঞাপনের মতো, লঞ্চ করার সাথে সাথে বিজ্ঞাপন দেখায় এমন অ্যাপের পারফর্ম্যান্স উন্নত করুন।
নিচের উদাহরণে একটি অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশন তৈরি করা হয়েছে যা পাঁচ সেকেন্ডের টাইম-আউট সহ কোনও নির্দিষ্ট অ্যাপ-ওপেন বিজ্ঞাপন ইউনিটের জন্য শুধুমাত্র প্রয়োজনীয় মধ্যস্থতা অ্যাডাপ্টার ইনিশিয়ালাইজ করে:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdUnitIDs = [adUnitID]
adapterConfig.initializationTimeout = 5.0
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdUnitIDs = [NSSet setWithArray:@[ kTestAdUnitID ]];
adapterConfig.initializationTimeout = 5.0;
নিচের উদাহরণে একটি অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশন তৈরি করা হয়েছে যা সব অ্যাপ ওপেন বিজ্ঞাপনের জন্য শুধুমাত্র প্রয়োজনীয় মধ্যস্থতা অ্যাডাপ্টার ইনিশিয়ালাইজ করে এবং পাঁচ সেকেন্ডের টাইম-আউট সেট করে:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdFormats = [AdFormat.appOpen.rawValue as NSNumber]
adapterConfig.initializationTimeout = 5.0
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdFormats = [NSSet setWithArray:@[ @(GADAdFormatAppOpen) ]];
adapterConfig.initializationTimeout = 5.0;
নির্দিষ্ট মধ্যস্থতা অ্যাডাপ্টার ইনিশিয়ালাইজ করা
কোন মধ্যস্থতা পার্টনার সাধারণত আপনার প্রথম বিজ্ঞাপন ইম্প্রেশন পূরণ করে তা আপনি ঠিকঠাক জানলে, আপনার অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশনে অ্যাডাপ্টার ক্লাস নেম প্রদান করে আপনি শুধুমাত্র সেই নির্দিষ্ট অ্যাডাপ্টার ইনিশিয়ালাইজ করতে পারবেন। শুরু না হওয়া অ্যাডাপ্টার এড়িয়ে যাওয়া এবং Google Mobile Ads SDK-এর জন্য টাইম-আউট সেট করার মাধ্যমে এটি করুন, যাতে নিলাম চলাকালীন বাকি শুরু না হওয়া অ্যাডাপ্টারের জন্য অপেক্ষা করতে না হয়।
নিম্নলিখিত উদাহরণটি একটি অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশন তৈরি করে যা একটি নির্দিষ্ট মধ্যস্থতা অ্যাডাপ্টার ইনিশিয়ালাইজ করে এবং পাঁচ সেকেন্ডের টাইমআউট সেট করে:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdapterClasses = [adapterClassName]
adapterConfig.initializationTimeout = 5.0
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdapterClasses = [NSSet setWithArray:@[ kTestAdapterClassName ]];
adapterConfig.initializationTimeout = 5.0;
নির্দিষ্ট মধ্যস্থতা অ্যাডাপ্টার বাদ দেওয়া
আপনি যদি লক্ষ্য করেন যে নির্দিষ্ট কিছু মেডিয়েশন অ্যাডাপ্টারে ধারাবাহিকভাবে বেশি লেটেন্সি আছে, তাহলে আপনি এইসব অ্যাডাপ্টার বাদ দিতে এবং পরে সেগুলি চালু করতে পারবেন।
নিম্নলিখিত উদাহরণটি একটি অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশন তৈরি করে যা ইনিশিয়ালাইজ করা থেকে নির্দিষ্ট অ্যাডাপ্টার বাদ দেয় এবং পাঁচ সেকেন্ডের টাইমআউট সেট করে:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.excludedAdapterClasses = [adapterClassName]
adapterConfig.initializationTimeout = 5.0
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.excludedAdapterClasses = [NSSet setWithArray:@[ kTestAdapterClassName ]];
adapterConfig.initializationTimeout = 5.0;
আনইনিশিয়ালাইজড অ্যাডাপ্টার এড়িয়ে যান
আপনি যদি নির্দিষ্ট মধ্যস্থতা অ্যাডাপ্টার শুরু করতে বা বাদ দিতে চান, তাহলে আপনি আপনার ওয়াটারফলে এখনও উপস্থিত থাকা অ্যাডাপ্টারগুলি এড়িয়ে যাওয়ার জন্য আপনার বিজ্ঞাপনের অনুরোধ কনফিগার করতে পারেন।
আপনি অ্যাডাপ্টার কনফিগারেশন তৈরি না করলেও, আপনি এখনও অপ্রারম্ভিক অ্যাডাপ্টার এড়িয়ে যাওয়ার জন্য বিজ্ঞাপন দেখানোর অনুরোধ কনফিগার করতে পারবেন। অ্যাডাপ্টারের টাইম-আউট হওয়া বা ইনস্টল হতে না পারার জন্য অপেক্ষা না করেই Google Mobile Ads SDK একটি বিজ্ঞাপন অনুরোধ ইস্যু করে।
নিচের উদাহরণটি অ্যাডাপ্টার ইনিশিয়ালাইজেশন কনফিগারেশনের মাধ্যমে SDK ইনিশিয়ালাইজ করে এবং অ্যাপ খোলার বিজ্ঞাপন সংক্রান্ত অনুরোধ তৈরি করে যা ইনিশিয়ালাইজ করা হয়নি এমন অ্যাডাপ্টার এড়িয়ে যায়:
Swift
await MobileAds.shared.start(with: adapterInitializationConfig)
// Make your ad request after adapter initialization completes.
let request = Request()
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
request.skipUninitializedAdapters = true
do {
let _ = try await AppOpenAd.load(with: adUnitID, request: request)
} catch {
print("Failed to load app open ad with error: \(error.localizedDescription)")
// TODO: Handle error
}
// Handle non time-sensitive tasks after the ad has loaded regardless of whether ad load
// succeeded.
performPostLaunchSetup()
Objective-C
[[GADMobileAds sharedInstance]
startWithMediationInitializationConfiguration:adapterInitializationConfig
completionHandler:^(GADInitializationStatus *_Nonnull status) {
// Make your ad request after adapter initialization
// completes.
GADRequest *request = [GADRequest request];
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters
request.shouldSkipUninitializedAdapters = YES;
[GADAppOpenAd
loadWithAdUnitID:adUnitID
request:request
completionHandler:^(GADAppOpenAd *_Nullable ad,
NSError *_Nullable error) {
if (error) {
NSLog(@"Failed to load app open ad with error: %@",
error.localizedDescription);
}
// Handle non time-sensitive tasks after the
// ad has loaded regardless of whether ad load succeeded.
[self performPostLaunchSetup];
}];
}];
বাকি অ্যাডাপ্টার ইনিশিয়ালাইজ করা
সময়-সংবেদনশীল বিজ্ঞাপন দেখানোর সুযোগ লোড হয়ে যাওয়ার পরে, বাকি অ্যাপ সেশনের জন্য পার্টনার মেডিটেশন কভারেজ সম্পূর্ণ করতে আপনার বাকি অ্যাডাপ্টার ইনিশিয়ালাইজ করুন।
নিম্নলিখিত উদাহরণটি একটি খালি কনফিগারেশন প্রদান করে বাকি অ্যাডাপ্টারগুলি শুরু করে:
Swift
// Provide start with nil to initialize any adapters
// not initialized with configurable initialization.
MobileAds.shared.start(with: nil) { status in
// Remaining adapters are now initialized.
}
Objective-C
// Call start with nil to initialize any adapters not initialized via configurable initialization.
[[GADMobileAds sharedInstance]
startWithMediationInitializationConfiguration:nil
completionHandler:^(GADInitializationStatus *_Nonnull status) {
// Remaining adapters are now initialized.
}];