इस समस्या को हल करने के लिए, 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 अडैप्टर के टाइम आउट होने या शुरू न होने का इंतज़ार किए बिना विज्ञापन का अनुरोध करता है.
यहां दिए गए उदाहरण में, अडैप्टर को शुरू करने की कॉन्फ़िगरेशन के साथ एसडीके को शुरू किया गया है. साथ ही, ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन का ऐसा विज्ञापन दिखाने का अनुरोध बनाया गया है जो शुरू नहीं किए गए अडैप्टर को स्किप करता है:
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.
}];