इस गाइड में, Android ऐप्लिकेशन में ऐंकर किए गए अडैप्टिव बैनर विज्ञापन को लोड करने का तरीका बताया गया है.
ज़रूरी शर्तें
- Google Mobile Ads SDK (Legacy) को सेट अप करें.
- ज़रूरी नहीं: बैनर विज्ञापनों को लागू करने का उदाहरण देखने के लिए, सैंपल के तौर पर उपलब्ध इनमें से कोई ऐप्लिकेशन चुनें:
- Java, Kotlin या Jetpack Compose में ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों का उदाहरण.
- Java या Kotlin की ऐडवांस सुविधाओं का डेमो.
हमेशा टेस्ट विज्ञापनों का इस्तेमाल करके टेस्ट करना
अपने ऐप्लिकेशन बनाने और उनकी टेस्टिंग करने के लिए, लाइव और प्रोडक्शन विज्ञापन इस्तेमाल करने के बजाय, टेस्ट विज्ञापन इस्तेमाल करें. ऐसा न करने पर, आपका खाता निलंबित किया जा सकता है.
टेस्ट विज्ञापन लोड करने का सबसे आसान तरीका, Android बैनर के लिए हमारे खास टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना है:
/21775744923/example/adaptive-banner
इसे खास तौर पर इस तरह कॉन्फ़िगर किया गया है कि हर अनुरोध के लिए टेस्ट विज्ञापन दिखाए जा सकें. कोडिंग, टेस्टिंग, और डीबग करने के दौरान, इसका इस्तेमाल अपने ऐप्लिकेशन में किया जा सकता है. हालांकि, ऐप्लिकेशन पब्लिश करने से पहले, इसे अपने विज्ञापन यूनिट का आईडी से बदल लें.
Google Mobile Ads SDK (Legacy) टेस्ट विज्ञापनों के काम करने के तरीके के बारे में ज़्यादा जानने के लिए, टेस्ट विज्ञापन चालू करें लेख पढ़ें.
विज्ञापन व्यू तय करना
एक्सएमएल लेआउट
ऐंकर किए गए अडैप्टिव बैनर विज्ञापन के लिए, कंटेनर के तौर पर काम करने के लिए, अपने लेआउट की एक्सएमएल फ़ाइल में एक व्यू जोड़ें:
<!-- Ad view container that fills the width of the screen and adjusts its
height to the content of the ad. -->
<FrameLayout
android:id="@+id/ad_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentBottom="true" />
Jetpack Compose
JetpackCompose Utilities फ़ोल्डर शामिल करें. इस फ़ोल्डर में,
AdViewऑब्जेक्ट और ऐसेट बनाने के लिए हेल्पर शामिल हैं.AdViewलिखें:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}
विज्ञापन का साइज़ सेट करना
बड़े अडैप्टिव बैनर, स्क्रोल न किए जा सकने वाले लेआउट के लिए डिज़ाइन किया गया बड़ा फ़ॉर्मैट उपलब्ध कराते हैं. ऐंकर किए गए स्टैंडर्ड अडैप्टिव बैनर की तुलना में, इन बैनर की ऊंचाई ज़्यादा हो सकती है. इनकी ऊंचाई, स्क्रीन की ऊंचाई का 20% तक और 50 से 150dp के बीच हो सकती है. इस स्पेस को वीडियो कॉन्टेंट के लिए ऑप्टिमाइज़ किया गया है.
AdSize को तय चौड़ाई वाले ऐंकर किए गए अडैप्टिव बैनर टाइप पर सेट करें:
Java
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
Kotlin
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
Jetpack Compose
// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
विज्ञापन का साइज़, डिवाइस की स्क्रीन के साइज़ से छोटा या उसके बराबर सेट करें.
स्क्रीन का ज़्यादा से ज़्यादा साइज़ तय करने के लिए, Resources.getDisplayMetrics
तरीके का इस्तेमाल करें. AdSize ऑब्जेक्ट के डाइमेंशन, डेंसिटी-इंडिपेंडेंट पिक्सल (डीपी) का इस्तेमाल करते हैं. तुलना करते समय, स्क्रीन के साइज़ को पिक्सल से डीपी में बदलें.
साइज़ से जुड़ी पाबंदियों के बारे में जानने के लिए, Ad Manager में, विज्ञापन न दिखाए जाने की वजह से मिले इंप्रेशन की समस्या हल करना लेख पढ़ें.
लेआउट में AdManagerAdView जोड़ें
अपने ऐप्लिकेशन के लेआउट में जोड़ने के लिए, विज्ञापन के साइज़ का इस्तेमाल करके AdManagerAdView बनाएं:
Java
// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
Kotlin
// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView
// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)
Jetpack Compose
val adView = remember { AdManagerAdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANAGER_ADAPTIVE_BANNER_AD_UNIT_ID
// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}
विज्ञापन लोड करना
नीचे दिए गए उदाहरण में, 360-चौड़ाई वाले ऐंकर किए गए अडैप्टिव बैनर विज्ञापन को AdManagerAdView ऑब्जेक्ट में लोड किया गया है:
Java
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
Kotlin
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)
किसी विज्ञापन को रीफ़्रेश करना
अगर आपने विज्ञापन यूनिट को रीफ़्रेश करने के लिए कॉन्फ़िगर किया है, तो विज्ञापन लोड न होने पर आपको दूसरे विज्ञापन का अनुरोध करने की ज़रूरत नहीं है. Google Mobile Ads SDK (Legacy), Ad Manager के यूज़र इंटरफ़ेस (यूआई) में आपके तय किए गए रीफ़्रेश रेट का पालन करता है. अगर आपने रीफ़्रेश करने की सुविधा चालू नहीं की है, तो नया अनुरोध करें. विज्ञापन यूनिट के रीफ़्रेश होने के बारे में ज़्यादा जानकारी के लिए, जैसे कि रीफ़्रेश रेट सेट करना, मोबाइल ऐप्लिकेशन में विज्ञापनों के लिए रीफ़्रेश रेट देखें.
विज्ञापन के लिए संसाधन रिलीज़ करना
बैनर विज्ञापन का इस्तेमाल करने के बाद, बैनर विज्ञापन के संसाधनों को रिलीज़ किया जा सकता है.
विज्ञापन के संसाधन को रिलीज़ करने के लिए, विज्ञापन को व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) से हटाएं और उसके सभी रेफ़रंस छोड़ें:
Java
public void destroyBanner() {
// Remove banner from view hierarchy.
if (adView != null) {
View parentView = (View) adView.getParent();
if (parentView instanceof ViewGroup) {
((ViewGroup) parentView).removeView(adView);
}
// Destroy the banner ad resources.
adView.destroy();
}
// Drop reference to the banner ad.
adView = null;
}
Kotlin
fun destroyBanner() {
// Remove banner from view hierarchy.
val parentView = adView?.parent
if (parentView is ViewGroup) {
parentView.removeView(adView)
}
// Destroy the banner ad resources.
adView?.destroy()
// Drop reference to the banner ad.
adView = null
}
Jetpack Compose
DisposableEffect(Unit) {
// Destroy the AdView to prevent memory leaks when the screen is disposed.
onDispose { adView.destroy() }
}
विज्ञापन इवेंट
विज्ञापन के लाइफ़साइकल में कई इवेंट को सुना जा सकता है. इनमें विज्ञापन लोड होना, विज्ञापन इंप्रेशन, और क्लिक के साथ-साथ विज्ञापन खोलने और बंद करने के इवेंट शामिल हैं. हमारा सुझाव है कि बैनर लोड करने से पहले कॉलबैक सेट करें.
Java
if (adView != null) {
adView.setAdListener(
new AdListener() {
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@Override
public void onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
});
}
Kotlin
adView?.adListener =
object : AdListener() {
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
override fun onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Code to be executed when an ad request fails.
}
override fun onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
override fun onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
}
AdListener में मौजूद हर ओवरराइड किए जा सकने वाले तरीके, विज्ञापन की लाइफ़साइकल में किसी इवेंट से जुड़े होते हैं.
| ओवरराइड किए जा सकने वाले मेथड | |
|---|---|
onAdClicked() |
जब किसी विज्ञापन के लिए क्लिक रिकॉर्ड किया जाता है, तो onAdClicked() तरीका लागू होता है.
|
onAdClosed() |
onAdClosed()
मेथड को तब कॉल किया जाता है, जब कोई उपयोगकर्ता किसी विज्ञापन के डेस्टिनेशन यूआरएल को देखने के बाद, ऐप्लिकेशन पर वापस आता है. आपका ऐप्लिकेशन, रोकी गई गतिविधियों को फिर से शुरू करने या इंटरैक्शन के लिए खुद को तैयार करने के लिए, ज़रूरी कोई अन्य काम करने के लिए इसका इस्तेमाल कर सकता है.
|
onAdFailedToLoad() |
onAdFailedToLoad()
तरीके में ही पैरामीटर शामिल होता है. LoadAdError टाइप का गड़बड़ी पैरामीटर,
यह बताता है कि कौनसी गड़बड़ी हुई. ज़्यादा जानकारी के लिए, विज्ञापन लोड होने से जुड़ी गड़बड़ियों को डीबग करने का दस्तावेज़ देखें.
|
onAdImpression() |
जब किसी विज्ञापन के लिए इंप्रेशन रिकॉर्ड किया जाता है, तब onAdImpression() तरीका लागू होता है.
|
onAdLoaded() |
onAdLoaded()
मेथड तब लागू होता है, जब विज्ञापन लोड हो जाता है. अगर आपको अपनी गतिविधि या फ़्रैगमेंट में AdManagerAdView को जोड़ने में तब तक देरी करनी है, जब तक आपको यह पक्का न हो जाए कि विज्ञापन लोड हो जाएगा, तो ऐसा यहां किया जा सकता है.
|
onAdOpened() |
onAdOpened()
मेथड को तब शुरू किया जाता है, जब कोई विज्ञापन स्क्रीन को कवर करने वाला ओवरले खोलता है.
|
वीडियो विज्ञापनों के लिए हार्डवेयर से तेज़ी लाने की सुविधा
बैनर विज्ञापन व्यू में वीडियो विज्ञापन दिखाने के लिए, हार्डवेयर से तेज़ी लाने की सुविधा चालू होनी चाहिए.
हार्डवेयर से तेज़ी लाने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. हालांकि, कुछ ऐप्लिकेशन इसे बंद कर सकते हैं. अगर यह आपके ऐप्लिकेशन पर लागू होता है, तो हमारा सुझाव है कि आप विज्ञापन दिखाने वाली Activity क्लास के लिए, हार्डवेयर से तेज़ी लाने की सुविधा चालू करें.
हार्डवेयर से तेज़ी लाने की सुविधा चालू करना
अगर हार्डवेयर से तेज़ी लाने की सुविधा को ग्लोबल तौर पर चालू करने के बाद, आपका ऐप्लिकेशन ठीक से काम नहीं करता है, तो आपके पास अलग-अलग गतिविधियों के लिए इसे कंट्रोल करने का विकल्प भी होता है. हार्डवेयर से तेज़ी लाने की सुविधा को चालू या बंद करने के लिए, android:hardwareAccelerated एट्रिब्यूट का इस्तेमाल किया जा सकता है. इसके लिए, अपनी AndroidManifest.xml में <application> और <activity> एलिमेंट का इस्तेमाल करें. नीचे दिए गए उदाहरण में, पूरे ऐप्लिकेशन के लिए हार्डवेयर से तेज़ी लाने की सुविधा चालू की गई है. हालांकि, एक गतिविधि के लिए इसे बंद किया गया है:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
हार्डवेयर से तेज़ी लाने की सुविधा को कंट्रोल करने के विकल्पों के बारे में ज़्यादा जानने के लिए, हार्डवेयर से तेज़ी लाने की सुविधा से जुड़ी गाइड देखें. ध्यान दें कि अगर गतिविधि बंद है, तो हार्डवेयर से तेज़ी लाने की सुविधा के लिए, अलग-अलग विज्ञापन व्यू चालू नहीं किए जा सकते. इसलिए, गतिविधि में ही हार्डवेयर से तेज़ी लाने की सुविधा चालू होनी चाहिए.
इंप्रेशन की मैन्युअल गिनती
मैन्युअल तरीके से इंप्रेशन की गिनती करने की सुविधा, सिर्फ़ सीधे तौर पर बेचे गए और हाउस कैंपेन के साथ काम करती है. इन कैंपेन में, क्रिएटिव को सीधे Ad Manager में ट्रैफ़िक किया जाता है. इसका इस्तेमाल, बैकफ़िल या तीसरे पक्ष के नेटवर्क के विज्ञापनों के लिए नहीं किया जाना चाहिए. ज़्यादा जानकारी के लिए, इंप्रेशन और क्लिक की गिनती करना लेख पढ़ें.
अगर आपके पास इंप्रेशन रिकॉर्ड करने के लिए खास शर्तें हैं, तो Ad Manager को मैन्युअल तरीके से इंप्रेशन पिंग भेजे जा सकते हैं:
Java
if (adManagerAdView != null) {
adManagerAdView.setManualImpressionsEnabled(true);
}
Kotlin
adManagerAdView?.setManualImpressionsEnabled(true)
जब आपको पता चले कि कोई विज्ञापन सही तरीके से वापस आ गया है और स्क्रीन पर दिख रहा है, तो मैन्युअल तरीके से इंप्रेशन रिकॉर्ड किया जा सकता है:
Java
if (adManagerAdView != null) {
adManagerAdView.recordManualImpression();
}
Kotlin
adManagerAdView?.recordManualImpression()
ऐप्लिकेशन इवेंट
ऐप्लिकेशन इवेंट की मदद से, ऐसे विज्ञापन बनाए जा सकते हैं जो आपके ऐप्लिकेशन कोड को मैसेज भेज सकते हैं. इसके बाद, ऐप्लिकेशन इन मैसेज के आधार पर कार्रवाइयां कर सकता है.
AppEventListener का इस्तेमाल करके, Ad Manager के खास ऐप्लिकेशन इवेंट सुने जा सकते हैं.
ये इवेंट, विज्ञापन की लाइफ़साइकल के दौरान किसी भी समय हो सकते हैं. यहां तक कि onAdLoaded() को कॉल करने से पहले भी.
अपने AdManagerAdView पर AppEventListener सेट करें:
Java
if (adManagerAdView != null) {
adManagerAdView.setAppEventListener(this);
}
Kotlin
adManagerAdView?.appEventListener = this
यहां एक उदाहरण दिया गया है, जिसमें रंग के नाम वाले ऐप्लिकेशन इवेंट के आधार पर, आपके ऐप्लिकेशन के बैकग्राउंड का रंग बदलने का तरीका बताया गया है:
Java
@Override
public void onAppEvent(@NonNull String name, @NonNull String info) {
if (name.equals("color")) {
switch (info) {
case "green":
// Set background color to green.
break;
case "blue":
// Set background color to blue.
break;
default:
// Set background color to black.
break;
}
}
}
Kotlin
override fun onAppEvent(name: String, info: String) {
if (name == "color") {
when (info) {
"green" -> {
// Set background color to green.
}
"blue" -> {
// Set background color to blue.
}
else -> {
// Set background color to black.
}
}
}
}
यहां वह क्रिएटिव दिया गया है जो लिसनर को कलर ऐप्लिकेशन इवेंट के मैसेज भेजता है:
<html>
<head>
<script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Send a color=green event when ad loads.
admob.events.dispatchAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.dispatchAppEvent("color", "blue");
});
});
</script>
<style>
#ad {
width: 320px;
height: 50px;
top: 0px;
left: 0px;
font-size: 24pt;
font-weight: bold;
position: absolute;
background: black;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div id="ad">Carpe diem!</div>
</body>
</html>
एपीआई डेमो ऐप्लिकेशन में, ऐप्लिकेशन इवेंट लागू करने के लिए, Ad Manager ऐप्लिकेशन इवेंट का उदाहरण देखें.
अगले चरण
छोटे हो जाने वाले बैनर विज्ञापन
छोटे हो जाने वाले बैनर विज्ञापन, ऐसे बैनर विज्ञापन होते हैं जो शुरुआत में बड़े ओवरले के तौर पर दिखते हैं. इनमें एक बटन होता है, जिसकी मदद से इन्हें छोटे साइज़ पर वापस लाया जा सकता है. अपनी परफ़ॉर्मेंस को और बेहतर बनाने के लिए, इसका इस्तेमाल करें. ज़्यादा जानकारी के लिए, छोटे हो जाने वाले बैनर विज्ञापन देखें.
इनलाइन अडैप्टिव बैनर
इनलाइन अडैप्टिव बैनर, ऐंकर किए गए अडैप्टिव बैनर की तुलना में बड़े और लंबे होते हैं. इनकी ऊंचाई अलग-अलग हो सकती है. साथ ही, ये डिवाइस की स्क्रीन जितने लंबे हो सकते हैं. जिन ऐप्लिकेशन में स्क्रोल किए जा सकने वाले कॉन्टेंट में बैनर विज्ञापन दिखाए जाते हैं उनके लिए, ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों के बजाय इनलाइन अडैप्टिव बैनर इस्तेमाल करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए, इनलाइन अडैप्टिव बैनर देखें.
अन्य विषयों को एक्सप्लोर करें
- उपयोगकर्ता की निजता
- एसडीके को शुरू करने और विज्ञापन लोड होने की प्रोसेस को ऑप्टिमाइज़ करना (बीटा वर्शन)