बैनर विज्ञापन, रेक्टैंगल के आकार वाले विज्ञापन होते हैं. ये विज्ञापन, ऐप्लिकेशन के लेआउट का कुछ हिस्सा घेरते हैं. जब उपयोगकर्ता आपके ऐप्लिकेशन के साथ इंटरैक्ट करते हैं, तब स्क्रीन पर सबसे ऊपर या सबसे नीचे बैनर विज्ञापन दिखते रहते हैं. वहीं, स्क्रीन पर स्क्रोल करने के दौरान भी ये विज्ञापन इनलाइन होकर दिखते रहते हैं. बैनर विज्ञापन कुछ समय बाद अपने-आप रीफ़्रेश हो सकते हैं. ज़्यादा जानकारी के लिए, बैनर विज्ञापनों के बारे में खास जानकारी लेख पढ़ें.
इस गाइड में, ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों का इस्तेमाल शुरू करने का तरीका बताया गया है. ये विज्ञापन, हर डिवाइस के लिए विज्ञापन के साइज़ को ऑप्टिमाइज़ करके परफ़ॉर्मेंस को बेहतर बनाते हैं. इसके लिए, विज्ञापन की उस चौड़ाई का इस्तेमाल किया जाता है जिसे आपने तय किया है.
ऐंकर किया गया अडैप्टिव बैनर
ऐंकर किए गए अडैप्टिव बैनर विज्ञापन, तय साइज़ वाले विज्ञापनों के बजाय, तय आसपेक्ट रेशियो (चौड़ाई-ऊंचाई का अनुपात) वाले विज्ञापन होते हैं. इसका आसपेक्ट रेशियो, इंडस्ट्री स्टैंडर्ड 320x50 के जैसा होता है. पूरी चौड़ाई उपलब्ध होने की जानकारी देने पर, यह उस चौड़ाई के लिए सबसे सही ऊंचाई वाला विज्ञापन दिखाता है. एक ही डिवाइस से की गई सभी अनुरोधों के लिए, विज्ञापन की सबसे सही ऊंचाई एक जैसी होती है. साथ ही, विज्ञापन रीफ़्रेश होने पर आस-पास के व्यू को बदलने की ज़रूरत नहीं होती.
ज़रूरी शर्तें
- शुरुआती निर्देश पढ़ें.
हमेशा टेस्ट विज्ञापनों का इस्तेमाल करके टेस्ट करें
अपने ऐप्लिकेशन बनाते और उनकी टेस्टिंग करते समय, पक्का करें कि आपने लाइव और प्रोडक्शन विज्ञापनों के बजाय, टेस्ट विज्ञापनों का इस्तेमाल किया हो. ऐसा न करने पर, आपका खाता निलंबित किया जा सकता है.
टेस्ट विज्ञापनों को लोड करने का सबसे आसान तरीका, iOS बैनर के लिए हमारे टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना है:
/21775744923/example/adaptive-banner
इसे खास तौर पर हर अनुरोध के लिए टेस्ट विज्ञापन दिखाने के लिए कॉन्फ़िगर किया गया है. साथ ही, कोडिंग, टेस्टिंग, और डीबग करने के दौरान, अपने ऐप्लिकेशन में इसका इस्तेमाल किया जा सकता है. हालांकि, ऐप्लिकेशन पब्लिश करने से पहले, इसे अपनी विज्ञापन यूनिट के आईडी से बदलना न भूलें.
Mobile Ads SDK के टेस्ट विज्ञापन कैसे काम करते हैं, इस बारे में ज़्यादा जानने के लिए टेस्ट विज्ञापन देखें.
GAMBannerView बनाना
बैनर विज्ञापन, GAMBannerView
ऑब्जेक्ट में दिखाए जाते हैं. इसलिए, बैनर विज्ञापनों को इंटिग्रेट करने का पहला चरण यह है कि आप अपने व्यू हैरारकी में GAMBannerView
शामिल करें. आम तौर पर, ऐसा प्रोग्राम के ज़रिए या Interface Builder की मदद से किया जाता है.
प्रोग्राम के हिसाब से, अपने-आप होने वाली प्रोसेस
GAMBannerView
को सीधे तौर पर भी इंस्टैंशिएट किया जा सकता है.
यहां दिए गए उदाहरण में, GAMBannerView
बनाने का तरीका बताया गया है:
Swift
// Initialize the BannerView.
bannerView = BannerView()
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
NSLayoutConstraint.activate([
// Align the banner's bottom edge with the safe area's bottom edge
bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
// Center the banner horizontally in the view
bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
])
SwiftUI
AdManagerBannerView
का इस्तेमाल करने के लिए, UIViewRepresentable
बनाएं:
private struct BannerViewContainer: UIViewRepresentable {
typealias UIViewType = BannerView
let adSize: AdSize
init(_ adSize: AdSize) {
self.adSize = adSize
}
func makeUIView(context: Context) -> BannerView {
let banner = BannerView(adSize: adSize)
banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(Request())
banner.delegate = context.coordinator
return banner
}
func updateUIView(_ uiView: BannerView, context: Context) {}
func makeCoordinator() -> BannerCoordinator {
return BannerCoordinator(self)
}
UIViewRepresentable
को व्यू हैरारकी में जोड़ें. साथ ही, height
और width
वैल्यू तय करें:
var body: some View {
Spacer()
// Request an anchored adaptive banner with a width of 375.
let adSize = currentOrientationAnchoredAdaptiveBanner(width: 375)
BannerViewContainer(adSize)
.frame(width: adSize.size.width, height: adSize.size.height)
}
Objective-C
// Initialize the GADBannerView.
self.bannerView = [[GADBannerView alloc] init];
self.bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:self.bannerView];
// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
[NSLayoutConstraint activateConstraints:@[
// Align the banner's bottom edge with the safe area's bottom edge
[self.bannerView.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor],
// Center the banner horizontally in the view
[self.bannerView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
]];
Interface Builder
किसी स्टोरीबोर्ड या xib फ़ाइल में GAMBannerView
जोड़ा जा सकता है. इस तरीके का इस्तेमाल करते समय, पक्का करें कि आपने बैनर पर सिर्फ़ पोज़िशन से जुड़ी पाबंदियां जोड़ी हों. उदाहरण के लिए,
स्क्रीन पर सबसे नीचे अडैप्टिव बैनर दिखाते समय, बैनर व्यू के सबसे नीचे वाले हिस्से को बॉटम लेआउट गाइड के सबसे ऊपर वाले हिस्से के बराबर सेट करें. साथ ही, centerX
कॉन्स्ट्रेंट को सुपरव्यू के centerX
के बराबर सेट करें.
विज्ञापन का साइज़ सेट करना
GADSize
स्ट्रक्चर को, तय की गई चौड़ाई वाले ऐंकर किए गए अडैप्टिव बैनर टाइप पर सेट करें:
Swift
// Request an anchored adaptive banner with a width of 375.
bannerView.adSize = currentOrientationAnchoredAdaptiveBanner(width: 375)
Objective-C
// Request an anchored adaptive banner with a width of 375.
self.bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(375);
विज्ञापन लोड करना
GAMBannerView
को लागू करने और इसकी प्रॉपर्टी, जैसे कि adUnitID
को कॉन्फ़िगर करने के बाद, विज्ञापन लोड करने का समय आ जाता है. इसके लिए, GAMRequest
ऑब्जेक्ट पर loadRequest:
को कॉल किया जाता है:
Swift
bannerView.load(AdManagerRequest())
SwiftUI
banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(Request())
Objective-C
[self.bannerView loadRequest:[GAMRequest request]];
GAMRequest
ऑब्जेक्ट, विज्ञापन के एक अनुरोध को दिखाते हैं. इनमें टारगेटिंग (विज्ञापन के लिए सही दर्शक चुनना) की जानकारी जैसी चीज़ों के लिए प्रॉपर्टी शामिल होती हैं.
विज्ञापन रीफ़्रेश करना
अगर आपने विज्ञापन यूनिट को रीफ़्रेश करने के लिए कॉन्फ़िगर किया है, तो विज्ञापन लोड न होने पर आपको किसी दूसरे विज्ञापन का अनुरोध करने की ज़रूरत नहीं है. Google Mobile Ads SDK, Ad Manager के यूज़र इंटरफ़ेस (यूआई) में तय की गई रीफ़्रेश दर का पालन करता है. अगर आपने रीफ़्रेश करने की सुविधा चालू नहीं की है, तो नया अनुरोध करें. विज्ञापन यूनिट रीफ़्रेश करने के बारे में ज़्यादा जानने के लिए, मोबाइल ऐप्लिकेशन में दिखने वाले विज्ञापनों के लिए रीफ़्रेश दर लेख पढ़ें. इस लेख में, रीफ़्रेश दर सेट करने के बारे में भी बताया गया है.
ओरिएंटेशन में होने वाले बदलावों को हैंडल करना
जब आपके ऐप्लिकेशन की स्क्रीन का ओरिएंटेशन बदलता है, जैसे कि portrait
मोड से लैंडस्केप मोड में, तो बैनर के लिए उपलब्ध चौड़ाई भी अक्सर बदल जाती है. यह पक्का करने के लिए कि नए लेआउट के लिए सही साइज़ का विज्ञापन दिखाया जाए, नए बैनर का अनुरोध करें. अगर आपके बैनर की चौड़ाई स्थिर है या लेआउट की सीमाएं, साइज़ बदलने की सुविधा को मैनेज कर सकती हैं, तो इस चरण को छोड़ दें.
Swift
override func viewWillTransition(
to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator
) {
coordinator.animate(alongsideTransition: { _ in
// Load a new ad for the new orientation.
})
}
Objective-C
- (void)viewWillTransitionToSize:(CGSize)size
withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
// Load a new ad for the new orientation.
} completion:nil];
}
विज्ञापन इवेंट
GADBannerViewDelegate
का इस्तेमाल करके, लाइफ़साइकल इवेंट के बारे में सुना जा सकता है. जैसे, जब कोई विज्ञापन बंद किया जाता है या उपयोगकर्ता ऐप्लिकेशन छोड़ देता है.
बैनर इवेंट के लिए रजिस्टर करना
बैनर विज्ञापन के इवेंट के लिए रजिस्टर करने के लिए, delegate
प्रॉपर्टी को GAMBannerView
पर सेट करें. ऐसा करने के लिए, GADBannerViewDelegate
प्रोटोकॉल लागू करने वाले ऑब्जेक्ट का इस्तेमाल करें. आम तौर पर, बैनर विज्ञापन दिखाने वाली क्लास, डेलिगेट क्लास के तौर पर भी काम करती है. ऐसे में, delegate
प्रॉपर्टी को self
पर सेट किया जा सकता है.
Swift
bannerView.delegate = self
SwiftUI
banner.delegate = context.coordinator
Objective-C
self.bannerView.delegate = self;
बैनर इवेंट लागू करना
GADBannerViewDelegate
में मौजूद हर तरीके को 'ज़रूरी नहीं' के तौर पर मार्क किया गया है. इसलिए, आपको सिर्फ़ उन तरीकों को लागू करना होगा जिन्हें आपको इस्तेमाल करना है. इस उदाहरण में, हर तरीके को लागू किया गया है और कंसोल में एक मैसेज लॉग किया गया है:
Swift
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
print(#function)
}
func bannerView(_ bannerView: BannerView, didFailToReceiveAdWithError error: Error) {
print(#function + ": " + error.localizedDescription)
}
func bannerViewDidRecordClick(_ bannerView: BannerView) {
print(#function)
}
func bannerViewDidRecordImpression(_ bannerView: BannerView) {
print(#function)
}
func bannerViewWillPresentScreen(_ bannerView: BannerView) {
print(#function)
}
func bannerViewWillDismissScreen(_ bannerView: BannerView) {
print(#function)
}
func bannerViewDidDismissScreen(_ bannerView: BannerView) {
print(#function)
}
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidReceiveAd");
}
- (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error {
NSLog(@"bannerView:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}
- (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidRecordImpression");
}
- (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewWillPresentScreen");
}
- (void)bannerViewWillDismissScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewWillDismissScreen");
}
- (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidDismissScreen");
}
iOS API Demo ऐप्लिकेशन में बैनर डेलिगेट के तरीकों को लागू करने के लिए, AdDelegate का उदाहरण देखें.
उपयोग के उदाहरण
यहां विज्ञापन इवेंट के इन तरीकों के इस्तेमाल के कुछ उदाहरण दिए गए हैं.
विज्ञापन मिलने के बाद, व्यू हैरारकी में बैनर जोड़ना
ऐसा हो सकता है कि आपको विज्ञापन मिलने तक, व्यू हैरारकी में GAMBannerView
को जोड़ने में देरी करनी हो. इसके लिए, bannerViewDidReceiveAd:
इवेंट को सुनें:
Swift
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
// Add banner to view and add constraints.
addBannerViewToView(bannerView)
}
Objective-C
- (void)bannerViewDidReceiveAd:(GAMBannerView *)bannerView {
// Add bannerView to view and add constraints as above.
[self addBannerViewToView:self.bannerView];
}
बैनर विज्ञापन में ऐनिमेशन जोड़ना
bannerViewDidReceiveAd:
इवेंट का इस्तेमाल, बैनर विज्ञापन को एक बार ऐनिमेट करने के लिए भी किया जा सकता है. ऐसा तब किया जाता है, जब विज्ञापन वापस आ जाता है. इसका उदाहरण यहां दिया गया है:
Swift
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
bannerView.alpha = 0
UIView.animate(withDuration: 1, animations: {
bannerView.alpha = 1
})
}
Objective-C
- (void)bannerViewDidReceiveAd:(GAMBannerView *)bannerView {
bannerView.alpha = 0;
[UIView animateWithDuration:1.0 animations:^{
bannerView.alpha = 1;
}];
}
ऐप्लिकेशन को रोकना और फिर से शुरू करना
GADBannerViewDelegate
प्रोटोकॉल में, आपको इवेंट की सूचना देने के तरीके होते हैं. जैसे, जब क्लिक करने पर कोई ओवरले दिखता है या बंद होता है. अगर आपको यह पता लगाना है कि ये इवेंट विज्ञापनों की वजह से हुए हैं या नहीं, तो इन GADBannerViewDelegate
तरीकों के लिए रजिस्टर करें.
सिर्फ़ विज्ञापन पर क्लिक करने से नहीं, बल्कि हर तरह के ओवरले प्रज़ेंटेशन या बाहरी ब्राउज़र के इनवोकेशन को कैप्चर करने के लिए, आपका ऐप्लिकेशन UIViewController
या UIApplication
पर उपलब्ध मिलते-जुलते तरीकों का इस्तेमाल कर सकता है. यहां एक टेबल दी गई है. इसमें iOS के उन तरीकों के बारे में बताया गया है जिन्हें GADBannerViewDelegate
के तरीकों के साथ ही लागू किया जाता है:
GADBannerViewDelegate तरीका | iOS का तरीका |
---|---|
bannerViewWillPresentScreen: |
UIViewController का viewWillDisappear: |
bannerViewWillDismissScreen: |
UIViewController का viewWillAppear: |
bannerViewDidDismissScreen: |
UIViewController का viewDidAppear: |
मैन्युअल तरीके से इंप्रेशन गिनना
अगर आपको इंप्रेशन रिकॉर्ड करने के लिए खास शर्तें तय करनी हैं, तो Ad Manager को मैन्युअल तरीके से इंप्रेशन पिंग भेजे जा सकते हैं. इसके लिए, विज्ञापन लोड करने से पहले मैन्युअल इंप्रेशन के लिए GAMBannerView
को चालू करना होगा:
Swift
bannerView.enableManualImpressions = true
Objective-C
self.bannerView.enableManualImpressions = YES;
जब आपको पता चले कि विज्ञापन वापस आ गया है और स्क्रीन पर दिख रहा है, तो इंप्रेशन को मैन्युअल तरीके से ट्रिगर किया जा सकता है:
Swift
bannerView.recordImpression()
Objective-C
[self.bannerView recordImpression];
ऐप्लिकेशन इवेंट
ऐप्लिकेशन इवेंट की मदद से, ऐसे विज्ञापन बनाए जा सकते हैं जो अपने ऐप्लिकेशन कोड को मैसेज भेज सकते हैं. इसके बाद, ऐप्लिकेशन इन मैसेज के आधार पर कार्रवाइयां कर सकता है.
GADAppEventDelegate
का इस्तेमाल करके, Ad Manager के लिए खास तौर पर बनाए गए ऐप्लिकेशन इवेंट सुने जा सकते हैं.
ये इवेंट, विज्ञापन के लाइफ़साइकल के दौरान कभी भी हो सकते हैं. यहां तक कि GADBannerViewDelegate
ऑब्जेक्ट के bannerViewDidReceiveAd:
को कॉल करने से पहले भी ऐसा हो सकता है.
Swift
// Implement your app event within this method. The delegate will be
// notified when the SDK receives an app event message from the ad.
// Called when the banner receives an app event.
optional public func bannerView(_ banner: AdManagerBannerView,
didReceiveAppEvent name: String, withInfo info: String?)
Objective-C
// Implement your app event within this method. The delegate will be
// notified when the SDK receives an app event message from the ad.
@optional
// Called when the banner receives an app event.
- (void)bannerView:(GAMBannerView *)banner
didReceiveAppEvent:(NSString *)name
withInfo:(NSString *)info;
आपके ऐप्लिकेशन के इवेंट के तरीकों को व्यू कंट्रोलर में लागू किया जा सकता है:
Swift
import GoogleMobileAds
class ViewController: UIViewController, AppEventDelegate {}
Objective-C
@import GoogleMobileAds;
@interface ViewController : UIViewController <GADAppEventDelegate> {}
@end
विज्ञापन का अनुरोध करने से पहले, appEventDelegate
प्रॉपर्टी का इस्तेमाल करके डेलिगेट सेट करना न भूलें.
Swift
bannerView.appEventDelegate = self
Objective-C
self.bannerView.appEventDelegate = self;
यहां एक उदाहरण दिया गया है, जिसमें ऐप्लिकेशन इवेंट के ज़रिए रंग तय करके, ऐप्लिकेशन के बैकग्राउंड का रंग बदलने का तरीका बताया गया है:
Swift
func bannerView(_ banner: AdManagerBannerView, didReceiveAppEvent name: String,
withInfo info: String?) {
if name == "color" {
guard let info = info else { return }
switch info {
case "green":
// Set background color to green.
view.backgroundColor = UIColor.green
case "blue":
// Set background color to blue.
view.backgroundColor = UIColor.blue
default:
// Set background color to black.
view.backgroundColor = UIColor.black
}
}
}
Objective-C
- (void)bannerView:(GAMBannerView *)banner
didReceiveAppEvent:(NSString *)name
withInfo:(NSString *)info {
if ([name isEqual:@"color"]) {
if ([info isEqual:@"green"]) {
// Set background color to green.
self.view.backgroundColor = [UIColor greenColor];
} else if ([info isEqual:@"blue"]) {
// Set background color to blue.
self.view.backgroundColor = [UIColor blueColor];
} else {
// Set background color to black.
self.view.backgroundColor = [UIColor blackColor];
}
}
}
यहां वह क्रिएटिव दिया गया है जो appEventDelegate
को रंग से जुड़े ऐप्लिकेशन इवेंट के मैसेज भेजता है:
<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>
iOS API Demo ऐप्लिकेशन में ऐप्लिकेशन इवेंट लागू करने के लिए, Ad Manager App Events का उदाहरण देखें.
अन्य संसाधन
GitHub पर मौजूद उदाहरण
- ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों का उदाहरण: Swift | SwiftUI | Objective-C
- बेहतर सुविधाओं का डेमो: Swift | Objective-C
अगले चरण
छोटे हो जाने वाले बैनर विज्ञापन
छोटा किया जा सकने वाला बैनर विज्ञापन, बैनर विज्ञापन होते हैं. ये शुरुआत में बड़े ओवरले के तौर पर दिखते हैं. इनमें एक बटन होता है, जिसकी मदद से विज्ञापन को छोटे साइज़ में छोटा किया जा सकता है. अपनी परफ़ॉर्मेंस को और बेहतर बनाने के लिए, इसका इस्तेमाल करें. ज़्यादा जानकारी के लिए, छोटे हो जाने वाले बैनर विज्ञापन देखें.
इनलाइन अडैप्टिव बैनर
इनलाइन अडैप्टिव बैनर, ऐंकर किए गए अडैप्टिव बैनर की तुलना में बड़े और लंबे होते हैं. इनकी लंबाई कम या ज़्यादा की जा सकती है. अपनी इस विशेषता की वजह से ये बैनर, डिवाइस की स्क्रीन जितने लंबे भी हो सकते हैं. स्क्रोल किए जा सकने वाले कॉन्टेंट में बैनर विज्ञापन दिखाने वाले ऐप्लिकेशन के लिए, ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों के बजाय इनलाइन अडैप्टिव बैनर विज्ञापनों का इस्तेमाल करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए, इनलाइन अडैप्टिव बैनर देखें.