बैनर विज्ञापन

बैनर विज्ञापन, रेक्टैंगल होते हैं. ये ऐप्लिकेशन के लेआउट का कुछ हिस्सा घेरते हैं. जब उपयोगकर्ता आपके ऐप्लिकेशन के साथ इंटरैक्ट करते हैं, तब स्क्रीन पर सबसे ऊपर या सबसे नीचे बैनर विज्ञापन दिखते रहते हैं. इसी तरह स्क्रीन पर स्क्रोल करने के दौरान भी ये विज्ञापन इनलाइन होकर दिखते रहते हैं. बैनर विज्ञापन, तय समय के बाद अपने-आप रीफ़्रेश हो सकते हैं. ज़्यादा जानकारी के लिए, बैनर विज्ञापनों के बारे में खास जानकारी देखें.

इस गाइड में, ऐंकर वाले अडैप्टिव बैनर विज्ञापनोंको इस्तेमाल करने का तरीका बताया गया है. ये विज्ञापन की चौड़ाई को तय करके, हर डिवाइस के लिए विज्ञापन के साइज़ को ऑप्टिमाइज़ करते हैं. इससे परफ़ॉर्मेंस बेहतर होती है.

ऐंकर विज्ञापन वाला अडैप्टिव बैनर

ऐंकर किए गए अडैप्टिव बैनर विज्ञापन, सामान्य साइज़ वाले विज्ञापनों के बजाय, तय आसपेक्ट रेशियो वाले विज्ञापन होते हैं. आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 320*50 इंडस्ट्री स्टैंडर्ड के समान है. उपलब्ध पूरी चौड़ाई सेट करने के बाद, यह आपको उस चौड़ाई के लिए सबसे सही ऊंचाई वाला विज्ञापन दिखाएगा. एक ही डिवाइस से किए गए अनुरोधों के हिसाब से, इतनी ऊंचाई नहीं बदलती. साथ ही, विज्ञापन को रीफ़्रेश करते समय आस-पास के व्यू की ज़रूरत नहीं होती.

ज़रूरी शर्तें

हमेशा टेस्ट विज्ञापनों से टेस्ट करें

अपने ऐप्लिकेशन बनाते और उनकी टेस्टिंग करते समय, पक्का करें कि आप लाइव, प्रोडक्शन विज्ञापनों के बजाय टेस्ट विज्ञापनों का इस्तेमाल करें. ऐसा न करने पर आपका खाता निलंबित किया जा सकता है.

टेस्ट विज्ञापनों को लोड करने का सबसे आसान तरीका, iOS बैनर के लिए हमारे खास टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना है: ca-app-pub-3940256099942544/2435281174

इसे हर अनुरोध पर टेस्ट विज्ञापन दिखाने के लिए खास तौर पर कॉन्फ़िगर किया गया है. साथ ही, कोडिंग, टेस्टिंग, और डीबग करने के दौरान, इसे अपने ऐप्लिकेशन में इस्तेमाल किया जा सकता है. बस यह पक्का कर लें कि अपना ऐप्लिकेशन पब्लिश करने से पहले, आपने इसे अपनी विज्ञापन यूनिट के आईडी से बदल दिया हो.

मोबाइल विज्ञापन SDK टूल के टेस्ट विज्ञापन कैसे काम करते हैं, इस बारे में ज़्यादा जानकारी के लिए विज्ञापनों की जांच करें लेख पढ़ें.

GADBannerViewबनाएं

बैनर विज्ञापन GADBannerView ऑब्जेक्ट में दिखाए जाते हैं. इसलिए, बैनर विज्ञापनों को इंटिग्रेट करने के लिए सबसे पहले, अपने व्यू हैरारकी में GADBannerView को शामिल करें. आम तौर पर, इसे प्रोग्राम के हिसाब से या इंटरफ़ेस बिल्डर की मदद से किया जाता है.

प्रोग्राम के हिसाब से

GADBannerView को सीधे भी इंस्टैंशिएट किया जा सकता है. स्क्रीन के सुरक्षित हिस्से के नीचे बीच में अलाइन किया गया GADBannerView बनाने का उदाहरण यहां दिया गया है:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  var bannerView: GADBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    
    let viewWidth = view.frame.inset(by: view.safeAreaInsets).width

    // Here the current interface orientation is used. Use
    // GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or
    // GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a
    // particular orientation,
    let adaptiveSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
    bannerView = GADBannerView(adSize: adaptiveSize)

    addBannerViewToView(bannerView)
  }

  func addBannerViewToView(_ bannerView: GADBannerView) {
    bannerView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(bannerView)
    view.addConstraints(
      [NSLayoutConstraint(item: bannerView,
                          attribute: .bottom,
                          relatedBy: .equal,
                          toItem: view.safeAreaLayoutGuide,
                          attribute: .bottom,
                          multiplier: 1,
                          constant: 0),
       NSLayoutConstraint(item: bannerView,
                          attribute: .centerX,
                          relatedBy: .equal,
                          toItem: view,
                          attribute: .centerX,
                          multiplier: 1,
                          constant: 0)
      ])
   }
   
}

Objective-C

@import GoogleMobileAds;

@interface ViewController ()

@property(nonatomic, strong) GADBannerView *bannerView;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  // Here safe area is taken into account, hence the view frame is used after the
  // view has been laid out.
  CGRect frame = UIEdgeInsetsInsetRect(self.view.frame, self.view.safeAreaInsets);
  CGFloat viewWidth = frame.size.width;

  // Here the current interface orientation is used. If the ad is being preloaded
  // for a future orientation change or different orientation, the function for the
  // relevant orientation should be used.
  GADAdSize adaptiveSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth);
  // In this case, we instantiate the banner with desired ad size.
  self.bannerView = [[GADBannerView alloc] initWithAdSize:adaptiveSize];

  [self addBannerViewToView:self.bannerView];
}

- (void)addBannerViewToView:(UIView *)bannerView {
  bannerView.translatesAutoresizingMaskIntoConstraints = NO;
  [self.view addSubview:bannerView];
  [self.view addConstraints:@[
    [NSLayoutConstraint constraintWithItem:bannerView
                               attribute:NSLayoutAttributeBottom
                               relatedBy:NSLayoutRelationEqual
                                  toItem:self.view.safeAreaLayoutGuide
                               attribute:NSLayoutAttributeBottom
                              multiplier:1
                                constant:0],
    [NSLayoutConstraint constraintWithItem:bannerView
                               attribute:NSLayoutAttributeCenterX
                               relatedBy:NSLayoutRelationEqual
                                  toItem:self.view
                               attribute:NSLayoutAttributeCenterX
                              multiplier:1
                                constant:0]
                                ]];
}
  
@end

ध्यान दें कि इस मामले में हम चौड़ाई या ऊंचाई की सीमा का इस्तेमाल नहीं करते, क्योंकि विज्ञापन का साइज़ तय करने से बैनर, कॉन्टेंट के साइज़ के हिसाब से दिखेगा.

इंटरफ़ेस बिल्डर

GADBannerView को स्टोरीबोर्ड या xib फ़ाइल में जोड़ा जा सकता है. इस तरीके का इस्तेमाल करते समय, यह पक्का करें कि बैनर पर सिर्फ़ पोज़िशन की सीमाएं जोड़ी गई हों. उदाहरण के लिए, स्क्रीन पर सबसे नीचे एक अडैप्टिव बैनर दिखाते समय, बैनर व्यू में सबसे नीचे वाले हिस्से को, बॉटम लेआउट गाइड के टॉप के बराबर सेट करें. साथ ही, बीच वाले X को सुपरव्यू के बीच वाले X के बराबर सेट करें.

बैनर के विज्ञापन का साइज़ अब भी प्रोग्राम के हिसाब से सेट है:

Swift

  bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)

Objective-C

  self.bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth);

विज्ञापन लोड करें

GADBannerView की जगह तय करने और उसकी प्रॉपर्टी कॉन्फ़िगर करने के बाद, विज्ञापन लोड किया जा सकता है. ऐसा करने के लिए, loadRequest: को GADRequest ऑब्जेक्ट पर कॉल किया जाता है:

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  ...
  
  //  Set the ad unit ID and view controller that contains the GADBannerView.
  bannerView.adUnitID = "ca-app-pub-3940256099942544/2435281174"
  bannerView.rootViewController = self

  bannerView.load(GADRequest())
}

Objective-C

-   (void)viewDidLoad {
  [super viewDidLoad];
  ...
  
  //  Set the ad unit ID and view controller that contains the GADBannerView.
  self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2435281174";
  self.bannerView.rootViewController = self;

  [self.bannerView loadRequest:[GADRequest request]];
}

GADRequest ऑब्जेक्ट एक ही विज्ञापन अनुरोध दिखाते हैं और इसमें टारगेटिंग की जानकारी जैसी चीज़ों के लिए प्रॉपर्टी होती हैं.

अगर आपका विज्ञापन लोड नहीं हो पाता है, तो आपको अलग से एक और अनुरोध करने की ज़रूरत नहीं है. इसके लिए, जब तक आपने विज्ञापन यूनिट को रीफ़्रेश करने के लिए कॉन्फ़िगर किया हो, तब तक Google Mobile Ads SDK AdMob यूज़र इंटरफ़ेस में आपके तय किए गए रीफ़्रेश रेट को ध्यान में रखता है. अगर आपने रीफ़्रेश करने की सुविधा को चालू नहीं किया है, तो आपको नया अनुरोध करना होगा.

विज्ञापन इवेंट

GADBannerViewDelegate का इस्तेमाल करके, लाइफ़साइकल इवेंट की जानकारी सुनी जा सकती है. जैसे, जब कोई विज्ञापन बंद हो या उपयोगकर्ता ऐप्लिकेशन से बाहर निकल गया हो.

बैनर इवेंट के लिए रजिस्टर करना

अगर आपको बैनर विज्ञापन इवेंट के लिए रजिस्टर करना है, तो GADBannerView पर delegate प्रॉपर्टी को किसी ऐसे ऑब्जेक्ट पर सेट करें जो GADBannerViewDelegate प्रोटोकॉल लागू करता हो. आम तौर पर, बैनर विज्ञापन लागू करने वाली क्लास, डेलिगेट क्लास के तौर पर भी काम करती है. इस मामले में, delegate प्रॉपर्टी को self पर सेट किया जा सकता है.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADBannerViewDelegate {

  var bannerView: GADBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    ...
    bannerView.delegate = self
  }
}

Objective-C

@import GoogleMobileAds;

@interface ViewController () <GADBannerViewDelegate>

@property(nonatomic, strong) GADBannerView *bannerView;

@end

@implementation ViewController

-   (void)viewDidLoad {
  [super viewDidLoad];
  ...
  self.bannerView.delegate = self;
}

बैनर इवेंट लागू करना

GADBannerViewDelegate में दिए गए हर तरीके को 'ज़रूरी नहीं' के तौर पर मार्क किया गया है. इसलिए, आपको सिर्फ़ अपनी पसंद के तरीके लागू करने होंगे. इस उदाहरण में, हर तरीके को लागू किया गया है और कंसोल में मैसेज लॉग किया गया है:

Swift

func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
  print("bannerViewDidReceiveAd")
}

func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
  print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
  print("bannerViewDidRecordImpression")
}

func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
  print("bannerViewWillPresentScreen")
}

func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
  print("bannerViewWillDIsmissScreen")
}

func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
  print("bannerViewDidDismissScreen")
}

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 डेमो ऐप्लिकेशन में बैनर डेलिगेट तरीकों को लागू करने के बारे में जानने के लिए, 'विज्ञापन डेलिगेट' का उदाहरण देखें.

स्विफ़्ट मकसद-सी

इस्तेमाल के उदाहरण

यहां विज्ञापन इवेंट के इन तरीकों के इस्तेमाल के कुछ उदाहरण दिए गए हैं.

विज्ञापन मिलने के बाद, व्यू की हैरारकी में बैनर जोड़ना

हो सकता है कि आप विज्ञापन मिलने के बाद ही व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) में GADBannerView जोड़ना चाहें. ऐसा करने के लिए, bannerViewDidReceiveAd: इवेंट को सुनें:

Swift

func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
  // Add banner to view and add constraints as above.
  addBannerViewToView(bannerView)
}

Objective-C

-   (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
  // Add bannerView to view and add constraints as above.
  [self addBannerViewToView:self.bannerView];
}

बैनर विज्ञापन को ऐनिमेट करना

bannerViewDidReceiveAd: इवेंट का इस्तेमाल करके, बैनर विज्ञापन के वापस आने पर उसे ऐनिमेट भी किया जा सकता है, जैसा कि इस उदाहरण में दिखाया गया है:

Swift

func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
  bannerView.alpha = 0
  UIView.animate(withDuration: 1, animations: {
    bannerView.alpha = 1
  })
}

Objective-C

-   (void)bannerViewDidReceiveAd:(GADBannerView *)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:

ज़्यादा रिसॉर्स

GitHub पर उदाहरण

  • ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों का उदाहरण: Swift | Objective-C
  • बेहतर सुविधाओं का डेमो: Swift | Objective-C

अगले चरण

छोटे किए जा सकने वाले बैनर विज्ञापन

छोटे किए जा सकने वाले बैनर विज्ञापन, ऐसे बैनर विज्ञापन होते हैं जिन्हें शुरुआत में एक बड़े ओवरले के तौर पर दिखाया जाता है. इन विज्ञापनों में, विज्ञापन को छोटे साइज़ में छोटा करने के लिए बटन होता है. अपने कैंपेन की परफ़ॉर्मेंस को और ऑप्टिमाइज़ करने के लिए इसका इस्तेमाल करें. ज़्यादा जानकारी के लिए, छोटे हो जाने वाले बैनर विज्ञापन देखें.

इनलाइन अडैप्टिव बैनर

इनलाइन अडैप्टिव बैनर, ऐंकर किए गए अडैप्टिव बैनर की तुलना में, बड़े और लंबे होते हैं. उनकी लंबाई अलग-अलग हो सकती है और उनकी लंबाई डिवाइस की स्क्रीन जितनी हो सकती है. ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों के बजाय, इनलाइन अडैप्टिव बैनर इस्तेमाल करने का सुझाव दिया जाता है. ये ऐसे अडैप्टिव बैनर विज्ञापन होते हैं जो स्क्रोल किए जा सकने वाले कॉन्टेंट में बैनर विज्ञापन दिखाते हैं. ज़्यादा जानकारी के लिए, इनलाइन अडैप्टिव बैनर देखें.

दूसरे विषय एक्सप्लोर करें