इस समस्या को हल करने के लिए, AdMob कॉन्फ़िगर किए जा सकने वाले अडैप्टर को शुरू करने की सुविधा देता है. इस सुविधा की मदद से, यह कंट्रोल किया जा सकता है कि आपके पहले विज्ञापन इंप्रेशन के लिए कौनसे अडैप्टर शुरू किए जाएं. साथ ही, इससे उस इंप्रेशन के लिए इंतज़ार का समय कम हो जाता है.
इस गाइड में, कॉन्फ़िगर किए जा सकने वाले अडैप्टर को शुरू करने के इन पहलुओं के बारे में बताया गया है:
ज़रूरी शर्तें
- GMA Next-Gen SDK v0.25.0-beta01 या इसके बाद का वर्शन इंपोर्ट करें.
- GMA Next-Gen SDK को सेट अप करें.
इस सुविधा में शामिल होने के लिए, अपनी क्लास में
@ExperimentalApiएनोटेशन जोड़ें:Kotlin
@OptIn(ExperimentalApi::class)Java
import androidx.annotation.OptIn; // ... @OptIn(markerClass = ExperimentalApi.class)
अडैप्टर कॉन्फ़िगरेशन बनाना
अडैप्टर को शुरू करने का कॉन्फ़िगरेशन, GMA Next-Gen SDK को सिर्फ़ ज़रूरी अडैप्टर शुरू करने का निर्देश देता है. इससे, विज्ञापन दिखाने के पहले अनुरोध को ब्लॉक करने वाले ग़ैर-ज़रूरी अडैप्टर को रोका जा सकता है. साथ ही, कंप्यूटेशन रिसॉर्स को बचाया जा सकता है और पहले विज्ञापन इंप्रेशन के लिए इंतज़ार के समय को काफ़ी कम किया जा सकता है.
अपने ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, अडैप्टर को शुरू करने का कॉन्फ़िगरेशन बनाते समय इन रणनीतियों को अपनाएं:
किसी विज्ञापन फ़ॉर्मैट या विज्ञापन यूनिट को प्राथमिकता देना
लॉन्च होते ही विज्ञापन दिखाने वाले ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाएं. जैसे, ऐप्लिकेशन खोलने पर दिखने वाला विज्ञापन. इसके लिए, अडैप्टर को शुरू करने के कॉन्फ़िगरेशन में, विज्ञापन फ़ॉर्मैट या विज्ञापन यूनिट के बारे में बताएं.
यहां दिए गए उदाहरण में, अडैप्टर को शुरू करने का कॉन्फ़िगरेशन बनाया गया है. इससे, ऐप्लिकेशन खोलने पर दिखने वाली विज्ञापन यूनिट के लिए, सिर्फ़ ज़रूरी मीडिएशन अडैप्टर शुरू होते हैं. साथ ही, पांच सेकंड का टाइम आउट सेट किया गया है:
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdUnitIds(setOf(AD_UNIT_ID))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdUnitIds(Set.of(AD_UNIT_ID))
.setInitializationTimeoutMs(5000)
.build();
यहां दिए गए उदाहरण में, अडैप्टर को शुरू करने वाला ऐसा कॉन्फ़िगरेशन बनाया गया है जो ऐप्लिकेशन खोलने पर दिखने वाले सभी विज्ञापनों के लिए, सिर्फ़ ज़रूरी मीडिएशन अडैप्टर को शुरू करता है. साथ ही, टाइम आउट को पांच सेकंड पर सेट करता है:
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdFormats(setOf(AdFormat.APP_OPEN_AD))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdFormats(Set.of(AdFormat.APP_OPEN_AD))
.setInitializationTimeoutMs(5000)
.build();
खास मीडिएशन अडैप्टर को शुरू करना
अगर आपको पता है कि आम तौर पर कौनसे मीडिएशन पार्टनर आपके पहले विज्ञापन इंप्रेशन को भरते हैं, तो सिर्फ़ उस अडैप्टर को शुरू किया जा सकता है. इसके लिए, आपको अडैप्टर को शुरू करने के कॉन्फ़िगरेशन में, अडैप्टर क्लास का नाम देना होगा. इसके साथ-साथ, शुरू नहीं किए गए अडैप्टर को स्किप करें और GMA Next-Gen SDK के लिए टाइम आउट सेट करें, ताकि नीलामी के दौरान शुरू नहीं किए गए बाकी अडैप्टर के लिए इंतज़ार न करना पड़े.
यहां दिए गए उदाहरण में, अडैप्टर को शुरू करने का कॉन्फ़िगरेशन बनाया गया है. इससे, मीडिएशन अडैप्टर को शुरू किया जाता है और पांच सेकंड का टाइम आउट सेट किया जाता है:
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdapterClasses(setOf(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdapterClasses(Set.of(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build();
अडैप्टर क्लास के नामों को प्रोग्राम के हिसाब से फ़ेच किया जा सकता है. यहां दिए गए उदाहरण में, अडैप्टर क्लास के नाम प्रोग्राम के हिसाब से पुल किए गए हैं:
Kotlin
ExampleMediationAdapter::class.java.name
Java
ExampleMediationAdapter.class.getName()
चुनिंदा मीडिएशन अडैप्टर को बाहर रखना
अगर आपको लगता है कि कुछ मीडिएशन अडैप्टर को शुरू होने में लगातार ज़्यादा समय लग रहा है, तो उन्हें बाहर रखा जा सकता है और बाद में शुरू किया जा सकता है.
यहां दिए गए उदाहरण में, अडैप्टर को शुरू करने के लिए एक कॉन्फ़िगरेशन बनाया गया है. इसमें कुछ अडैप्टर को शुरू होने से रोका गया है और टाइम आउट को पांच सेकंड पर सेट किया गया है:
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setExcludedAdapterClasses(setOf(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setExcludedAdapterClasses(Set.of(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build();
शुरू नहीं किए गए अडैप्टर को स्किप करना
अगर आपको कुछ मीडिएशन अडैप्टर को शुरू करना है या उन्हें बाहर रखना है, तो विज्ञापन दिखाने का अनुरोध को इस तरह कॉन्फ़िगर किया जा सकता है कि वह वॉटरफ़ॉल में मौजूद उन अडैप्टर को छोड़ दे जिन्हें शुरू नहीं किया गया है.
अगर आपने अडैप्टर कॉन्फ़िगरेशन नहीं बनाया है, तो भी विज्ञापन दिखाने के अनुरोध को कॉन्फ़िगर किया जा सकता है, ताकि उन अडैप्टर को स्किप किया जा सके जिन्हें शुरू नहीं किया गया है. GMA Next-Gen SDK, अडैप्टर के टाइम आउट होने या शुरू न हो पाने का इंतज़ार किए बिना, विज्ञापन दिखाने का अनुरोध करता है.
यहां दिए गए उदाहरण में, अडैप्टर को शुरू करने के कॉन्फ़िगरेशन के साथ एसडीके टूल को शुरू किया गया है. साथ ही, ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन दिखाने का अनुरोध किया गया है, जो शुरू नहीं किए गए अडैप्टर को स्किप कर देता है:
Kotlin
val initConfig =
InitializationConfig.Builder(appId)
.setAdapterInitializationConfig(adapterInitializationConfig)
.build()
// Initialize the GMA Next-Gen SDK with a config containing your adapter initialization
// settings.
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
MobileAds.initialize(context = context, initConfig) {
// Make your ad request after adapter initialization completes.
AppOpenAd.load(
AdRequest.Builder(adUnitId = adUnitId)
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
.skipUninitializedAdapters()
.build(),
adLoadCallback =
object : AdLoadCallback<AppOpenAd> {
override fun onAdLoaded(ad: AppOpenAd) {
// TODO: Your ad logic here
// ....
// Execute non-time-sensitive tasks after ad load completes.
performPostLaunchSetup()
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// TODO: Handle load error.
// ....
// Ensure non-time-sensitive post-launch tasks execute even if ad load fails.
performPostLaunchSetup()
}
},
)
}
}
Java
InitializationConfig initConfig =
new InitializationConfig.Builder(appId)
.setAdapterInitializationConfig(adapterInitializationConfig)
.build();
// Initialize the GMA Next-Gen SDK with a config containing your adapter initialization
// settings.
MobileAds.initialize(
context,
initConfig,
initializationStatus -> {
// Make your ad request after adapter initialization completes.
AppOpenAd.load(
new AdRequest.Builder(adUnitId)
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
.skipUninitializedAdapters()
.build(),
new AdLoadCallback<AppOpenAd>() {
@Override
public void onAdLoaded(@NonNull AppOpenAd ad) {
// TODO: Your ad logic here
// ....
// Execute non-time-sensitive tasks after ad load completes.
performPostLaunchSetup();
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError error) {
// TODO: Handle load error.
// ....
// Ensure non-time-sensitive post-launch tasks execute even if ad load fails.
performPostLaunchSetup();
}
});
});
बाकी अडैप्टर को शुरू करना
समय के हिसाब से विज्ञापन दिखाने के अवसर लोड होने के बाद, अपने बाकी अडैप्टर को शुरू करें. इससे यह पक्का किया जा सकेगा कि ऐप्लिकेशन सेशन के बाकी हिस्से के लिए, पार्टनर मीडिएशन की पूरी कवरेज मिले.
यहां दिए गए उदाहरण में, खाली कॉन्फ़िगरेशन देकर बाकी अडैप्टर को शुरू करने का तरीका बताया गया है:
Kotlin
// Provide initializeAdapters with an empty configuration to initialize
// any adapters not initialized with configurable initialization.
MobileAds.initializeAdapters(AdapterInitializationConfig.Builder().build())
Java
// Provide initializeAdapters with an empty configuration to initialize
// any adapters not initialized with configurable initialization.
MobileAds.initializeAdapters(new AdapterInitializationConfig.Builder().build());