बैनर विज्ञापन, रेक्टैंगल के आकार वाले विज्ञापन होते हैं. ये विज्ञापन, ऐप्लिकेशन के लेआउट का कुछ हिस्सा घेरते हैं. जब उपयोगकर्ता आपके ऐप्लिकेशन के साथ इंटरैक्ट करते हैं, तब स्क्रीन पर सबसे ऊपर या सबसे नीचे बैनर विज्ञापन दिखते रहते हैं. इसी तरह स्क्रीन पर स्क्रोल करने के दौरान भी ये विज्ञापन इनलाइन होकर दिखते रहते हैं. बैनर विज्ञापन कुछ समय बाद अपने-आप रीफ़्रेश हो सकते हैं. ज़्यादा जानकारी के लिए, बैनर विज्ञापनों के बारे में खास जानकारी देखें.
इस गाइड में, ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों का इस्तेमाल शुरू करने का तरीका बताया गया है. ये विज्ञापन, आपके तय किए गए विज्ञापन की चौड़ाई का इस्तेमाल करके, हर डिवाइस के लिए विज्ञापन के साइज़ को ऑप्टिमाइज़ करके परफ़ॉर्मेंस को बेहतर बनाते हैं.
ऐंकर किए गए अडैप्टिव बैनर विज्ञापन, सामान्य तौर पर तय साइज़ के विज्ञापनों के बजाय, तय आसपेक्ट रेशियो वाले विज्ञापन होते हैं. आसपेक्ट रेशियो, इंडस्ट्री स्टैंडर्ड 320x50 जैसा ही है. उपलब्ध पूरी चौड़ाई तय करने के बाद, आपको उस चौड़ाई के लिए सबसे सही ऊंचाई वाला विज्ञापन दिखेगा. एक ही डिवाइस से किए गए अनुरोधों के लिए, सबसे सही ऊंचाई में कोई बदलाव नहीं होता. साथ ही, विज्ञापन रीफ़्रेश होने पर, आस-पास के व्यू को दूसरी जगह ले जाने की ज़रूरत नहीं होती.
ज़रूरी शर्तें
- शुरुआती निर्देशों की गाइड को पूरा करें.
हमेशा टेस्ट विज्ञापनों की मदद से जांच करें
अपने ऐप्लिकेशन बनाते और टेस्ट करते समय, लाइव और प्रोडक्शन विज्ञापनों के बजाय, टेस्ट विज्ञापनों का इस्तेमाल करें. ऐसा न करने पर, आपके खाते को निलंबित किया जा सकता है.
टेस्ट विज्ञापन लोड करने का सबसे आसान तरीका, Android बैनर के लिए बने हमारे खास टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना है:
/21775744923/example/adaptive-banner
इसे खास तौर पर, हर अनुरोध के लिए टेस्ट विज्ञापन दिखाने के लिए कॉन्फ़िगर किया गया है. साथ ही, कोडिंग, टेस्टिंग, और डीबग करने के दौरान, अपने ऐप्लिकेशन में इसका इस्तेमाल किया जा सकता है. बस, ऐप्लिकेशन पब्लिश करने से पहले, पक्का करें कि आपने इसे अपने विज्ञापन यूनिट आईडी से बदल दिया हो.
Mobile Ads SDK के टेस्ट विज्ञापनों के काम करने के तरीके के बारे में ज़्यादा जानने के लिए, टेस्ट विज्ञापन लेख पढ़ें.
लेआउट में AdManagerAdView जोड़ना
विज्ञापन का साइज़ तय करके, बैनर बनाया जाता है. यहां दिया गया तरीका अपनाएं:
पूरी चौड़ाई वाला ऐंकर किया गया अडैप्टिव विज्ञापन साइज़ बनाएं:
Java
// Get the ad size with screen width. public AdSize getAdSize() { DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); int adWidthPixels = displayMetrics.widthPixels; if (VERSION.SDK_INT >= VERSION_CODES.R) { WindowMetrics windowMetrics = this.getWindowManager().getCurrentWindowMetrics(); adWidthPixels = windowMetrics.getBounds().width(); } float density = displayMetrics.density; int adWidth = (int) (adWidthPixels / density); return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth); }
Kotlin
// Get the ad size with screen width. private val adSize: AdSize get() { val displayMetrics = resources.displayMetrics val adWidthPixels = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { val windowMetrics: WindowMetrics = this.windowManager.currentWindowMetrics windowMetrics.bounds.width() } else { displayMetrics.widthPixels } val density = displayMetrics.density val adWidth = (adWidthPixels / density).toInt() return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth) }
विज्ञापन के साइज़ का इस्तेमाल करके
AdManagerAdView
बनाएं और इसे अपने ऐप्लिकेशन के लेआउट में जोड़ें:Java
// Create a new ad view. adView = new AdManagerAdView(this); adView.setAdUnitId(AD_UNIT); adView.setAdSize(getAdSize()); // 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 adView.setAdSize(adSize) this.adView = adView // Replace ad container with new ad view. binding.adViewContainer.removeAllViews() binding.adViewContainer.addView(adView)
विज्ञापन लोड करना
AdManagerAdView
लागू होने के बाद, अगला चरण विज्ञापन लोड करना है. ऐसा करने के लिए, AdManagerAdView
क्लास में loadAd()
तरीका इस्तेमाल करें. यह एक AdManagerAdRequest
पैरामीटर लेता है, जिसमें किसी एक विज्ञापन अनुरोध के बारे में टारगेटिंग की जानकारी जैसी रनटाइम की जानकारी होती है.
यहां विज्ञापन लोड करने का तरीका बताने वाला उदाहरण दिया गया है:
Java
// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
Kotlin
// Start loading the ad in the background.
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)
अगर यह प्रोसेस पूरी हो जाती है, तो आपका ऐप्लिकेशन बैनर विज्ञापन दिखाने के लिए तैयार हो जाता है.
किसी विज्ञापन को रीफ़्रेश करना
अगर आपने अपनी विज्ञापन यूनिट को रीफ़्रेश करने के लिए कॉन्फ़िगर किया है, तो विज्ञापन लोड न होने पर, आपको किसी दूसरे विज्ञापन का अनुरोध करने की ज़रूरत नहीं है. Google Mobile Ads SDK, Ad Manager के यूज़र इंटरफ़ेस (यूआई) में बताए गए किसी भी रीफ़्रेश रेट का पालन करता है. अगर आपने रीफ़्रेश करने की सुविधा चालू नहीं की है, तो नया अनुरोध करें. विज्ञापन यूनिट के रीफ़्रेश होने के बारे में ज़्यादा जानने के लिए, जैसे कि रीफ़्रेश रेट सेट करना, मोबाइल ऐप्लिकेशन में विज्ञापनों के लिए रीफ़्रेश रेट देखें.
विज्ञापन इवेंट
विज्ञापन के लाइफ़साइकल में कई इवेंट को ट्रैक किया जा सकता है. जैसे, विज्ञापन लोड होने, विज्ञापन इंप्रेशन, क्लिक, विज्ञापन खुलने और बंद होने के इवेंट. हमारा सुझाव है कि बैनर लोड करने से पहले कॉलबैक सेट करें.Java
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(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
क्लास के लिए, हार्डवेयर की मदद से तेज़ी लाने की सुविधा चालू करें.
हार्डवेयर से तेज़ी लाने की सुविधा चालू करना
अगर आपका ऐप्लिकेशन, हार्डवेयर एक्सेलेरेशन की सुविधा को पूरी तरह से चालू करने पर ठीक से काम नहीं करता है, तो इसे अलग-अलग गतिविधियों के लिए भी कंट्रोल किया जा सकता है. हार्डवेयर से तेज़ी लाने की सुविधा को चालू या बंद करने के लिए, AndroidManifest.xml
में <application>
और <activity>
एलिमेंट के लिए android:hardwareAccelerated
एट्रिब्यूट का इस्तेमाल किया जा सकता है. नीचे दिए गए उदाहरण में, पूरे ऐप्लिकेशन के लिए हार्डवेयर ऐक्सेलरेशन चालू किया गया है, लेकिन एक गतिविधि के लिए इसे बंद किया गया है:
<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 को मैन्युअल तरीके से इंप्रेशन पिंग भेजे जा सकते हैं. ऐसा करने के लिए, विज्ञापन लोड करने से पहले मैन्युअल इंप्रेशन के लिए AdManagerAdRequest
चालू करें:
Java
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build();
Kotlin
val adRequest = AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build()
जब आपको यह पता चल जाए कि विज्ञापन वापस आ गया है और वह स्क्रीन पर दिख रहा है, तो मैन्युअल तरीके से इंप्रेशन रिकॉर्ड किया जा सकता है:
Java
{ ad_view }.recordManualImpression();
Kotlin
AdManagerAdView.recordManualImpression()
ऐप्लिकेशन इवेंट
ऐप्लिकेशन इवेंट की मदद से, ऐसे विज्ञापन बनाए जा सकते हैं जो ऐप्लिकेशन कोड को मैसेज भेज सकते हैं. इसके बाद, ऐप्लिकेशन इन मैसेज के आधार पर कार्रवाई कर सकता है.
AppEventListener
का इस्तेमाल करके, Ad Manager के खास ऐप्लिकेशन इवेंट को सुना जा सकता है.
ये इवेंट, विज्ञापन के लाइफ़साइकल के दौरान कभी भी हो सकते हैं. यहां तक कि onAdLoaded()
को कॉल करने से पहले भी ऐसा हो सकता है.
Java
public interface AppEventListener {
void onAppEvent(String name, String info);
}
Kotlin
interface AppEventListener {
fun onAppEvent(name: String, info: String)
}
void onAppEvent(String name, String info)
को तब कॉल किया जाता है, जब किसी विज्ञापन में ऐप्लिकेशन इवेंट होता है. इस इंटरफ़ेस को आपकी गतिविधि या किसी अन्य ऑब्जेक्ट के ज़रिए लागू किया जा सकता है:
Java
import com.google.android.gms.ads.admanager.*;
public class BannerExample extends Activity implements AppEventListener {
}
Kotlin
import com.google.android.gms.ads.admanager.*
class BannerExample : Activity(), AppEventListener {
}
और फिर AdManagerAdView
को भेजा गया:
Java
AdManagerAdView.setAppEventListener(this);
Kotlin
AdManagerAdView.appEventListener = this
यहां एक उदाहरण दिया गया है, जिसमें रंग के नाम वाले ऐप्लिकेशन इवेंट के आधार पर, अपने ऐप्लिकेशन के बैकग्राउंड का रंग बदलने का तरीका बताया गया है:
Java
@Override
public void onAppEvent(String name, String info) {
if ("color".equals(name)) {
if ("green".equals(info)) {
// Set background color to green.
} else if ("blue".equals(info)) {
// Set background color to blue.
} else {
// Set background color to black.
}
}
}
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.
}
}
}
}
यहां उस क्रिएटिव का उदाहरण दिया गया है जो Color ऐप्लिकेशन के इवेंट मैसेज को Listener को भेजता है:
<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 ऐप्लिकेशन इवेंट का उदाहरण देखें.
अन्य संसाधन
GitHub पर मौजूद उदाहरण
अगले चरण
छोटे किए जा सकने वाले बैनर
छोटे किए जा सकने वाले बैनर विज्ञापन, बैनर विज्ञापन होते हैं. शुरुआत में, इन्हें बड़े ओवरले के तौर पर दिखाया जाता है. साथ ही, इनमें विज्ञापन को छोटे साइज़ में करने के लिए बटन भी होता है. अपनी परफ़ॉर्मेंस को और ऑप्टिमाइज़ करने के लिए, इसका इस्तेमाल करें. ज़्यादा जानकारी के लिए, छोटे हो जाने वाले बैनर विज्ञापन देखें.
इनलाइन अडैप्टिव बैनर
ऐंकर किए गए अडैप्टिव बैनर की तुलना में, इनलाइन अडैप्टिव बैनर बड़े और लंबे होते हैं. इनकी लंबाई कम या ज़्यादा की जा सकती है. साथ ही, ये डिवाइस की स्क्रीन जितने लंबे भी हो सकते हैं. जिन ऐप्लिकेशन में स्क्रोल किए जा सकने वाले कॉन्टेंट में बैनर विज्ञापन दिखाए जाते हैं उनके लिए, ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों के बजाय, इनलाइन अडैप्टिव बैनर का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए, इनलाइन अडैप्टिव बैनर देखें.
दूसरे विषय एक्सप्लोर करना
- उपयोगकर्ता की निजता
- SDK टूल को शुरू करने और विज्ञापन लोड करने की प्रोसेस को ऑप्टिमाइज़ करना (बीटा वर्शन)