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

प्लैटफ़ॉर्म चुनें: Android iOS Flutter Unity

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

जब कोई नेटिव विज्ञापन लोड होता है, तो आपके ऐप्लिकेशन को एक विज्ञापन ऑब्जेक्ट मिलता है. इसमें उसकी ऐसेट शामिल होती हैं. इसके बाद, Google Mobile Ads SDK के बजाय, ऐप्लिकेशन इन ऐसेट को दिखाने के लिए ज़िम्मेदार होता है.

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

इस पेज पर, नेटिव विज्ञापन लोड करने के लिए, एसडीके टूल का इस्तेमाल करने का तरीका बताया गया है.

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

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

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

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

ca-app-pub-3940256099942544/3986624511

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

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

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

नेटिव विज्ञापन, GADAdLoader क्लास के साथ लोड होते हैं. यह क्लास, GADAdLoaderDelegate प्रोटोकॉल के मुताबिक अपने प्रतिनिधियों को मैसेज भेजती है.

विज्ञापन लोडर को शुरू करना

विज्ञापन लोड करने से पहले, आपको विज्ञापन लोडर को शुरू करना होगा. यहां दिए गए कोड में, GADAdLoader को शुरू करने का तरीका बताया गया है:

Swift

adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: rootViewController,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

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

adTypes अरे में यह कॉन्स्टेंट होना चाहिए :

विज्ञापन लोडर डेलिगेट को लागू करना

विज्ञापन लोडर डेलिगेट को, आपके विज्ञापन टाइप के हिसाब से प्रोटोकॉल लागू करने होंगे. नेटिव विज्ञापनों के लिए, GADNativeAdLoaderDelegate प्रोटोकॉल में एक मैसेज शामिल होता है. यह मैसेज, नेटिव विज्ञापन लोड होने पर डेलिगेट को भेजा जाता है.

Swift

public func adLoader(_ adLoader: AdLoader,
            didReceive nativeAd: NativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

विज्ञापन जोड़ने का अनुरोध करें

GADAdLoader शुरू होने के बाद, विज्ञापन का अनुरोध करने के लिए, इसके loadRequest: तरीके को कॉल करें:

Swift

adLoader.load(Request())

Objective-C

[self.adLoader loadRequest:[GADRequest request]];

GADAdLoader में मौजूद loadRequest: वाला तरीका, बैनर और इंटरस्टीशियल के तौर पर एक ही GADRequest ऑब्जेक्ट स्वीकार करता है. अनुरोध ऑब्जेक्ट का इस्तेमाल करके, टारगेटिंग की जानकारी जोड़ी जा सकती है. ऐसा ही अन्य विज्ञापन टाइप के साथ भी किया जा सकता है.

एक से ज़्यादा विज्ञापन लोड करना (ज़रूरी नहीं)

एक ही अनुरोध में कई विज्ञापन लोड करने के लिए, GADAdLoader को शुरू करते समय GADMultipleAdsAdLoaderOptions ऑब्जेक्ट सेट करें.

Swift

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

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

Google Ads से मिले सभी विज्ञापन एक-दूसरे से अलग होंगे. हालांकि, आरक्षित इन्वेंट्री या तीसरे पक्ष के खरीदारों के विज्ञापन यूनीक होने की गारंटी नहीं है.

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

यह कुकी यह तय करती है कि लोडिंग कब पूरी हुई

कोई ऐप्लिकेशन loadRequest: को कॉल करने के बाद, अनुरोध के नतीजे पाने के लिए इन फ़ंक्शन को कॉल कर सकता है:

एक विज्ञापन के लिए किए गए अनुरोध से, इनमें से किसी एक तरीके के लिए एक कॉल किया जाएगा.

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

इसके अलावा, GADAdLoaderDelegate adLoaderDidFinishLoading कॉलबैक भी उपलब्ध कराता है. यह डेलिगेट तरीका बताता है कि विज्ञापन लोडर ने विज्ञापन लोड कर लिए हैं. साथ ही, अनुरोध के लिए कोई अन्य विज्ञापन या गड़बड़ी रिपोर्ट नहीं की जाएगी. एक साथ कई नेटिव विज्ञापन लोड करते समय, इसका इस्तेमाल करने का तरीका यहां दिया गया है:

Swift

class ViewController: UIViewController, NativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = MultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        // The UIViewController parameter is optional.
        rootViewController: rootViewController,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(Request())
  }

  func adLoader(_ adLoader: AdLoader,
       didReceive nativeAd: NativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
    // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Objective-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;
  self.adLoader = [[GADAdLoader alloc]
        initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
      // The UIViewController parameter is nullable.
      rootViewController:rootViewController
                 adTypes:@[ GADAdLoaderAdTypeNative ]
                 options:@[ multipleAdsOptions ]];

  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

अनुरोध पूरे न होने पर कार्रवाई करना

ऊपर दिए गए प्रोटोकॉल, GADAdLoaderDelegate प्रोटोकॉल को बढ़ाते हैं. यह प्रोटोकॉल, विज्ञापन लोड न होने पर भेजे गए मैसेज को तय करता है.

Swift

public func adLoader(_ adLoader: AdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

नेटिव विज्ञापन इवेंट की सूचनाएं पाना

नेटिव विज्ञापन इंटरैक्शन से जुड़े इवेंट की सूचना पाने के लिए, नेटिव विज्ञापन की delegate प्रॉपर्टी सेट करें:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

इसके बाद, GADNativeAdDelegate लागू करें, ताकि आपको ये कॉल मिल सकें:

Swift

func nativeAdDidRecordImpression(_ nativeAd: NativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: NativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: NativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: NativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: NativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: NativeAd) {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Objective-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

सबसे सही तरीके

विज्ञापन लोड करते समय, इन नियमों का पालन करें.

  • किसी सूची में नेटिव विज्ञापनों का इस्तेमाल करने वाले ऐप्लिकेशन को, विज्ञापनों की सूची को पहले से कैश मेमोरी में सेव कर लेना चाहिए.

  • विज्ञापनों को पहले से कैश मेमोरी में सेव करते समय, अपनी कैश मेमोरी मिटाएं और एक घंटे बाद फिर से लोड करें.

  • adLoaderDidFinishLoading: के मुताबिक, जब तक पिछला अनुरोध लोड नहीं हो जाता, तब तक GADAdLoader पर loadRequest: को फिर से कॉल न करें.

  • नेटिव विज्ञापन की कैश मेमोरी को सिर्फ़ ज़रूरी डेटा तक सीमित रखें. उदाहरण के लिए, प्रीकैशिंग करते समय, सिर्फ़ उन विज्ञापनों को कैश मेमोरी में सेव करें जो स्क्रीन पर तुरंत दिखते हैं. नेटिव विज्ञापनों के लिए ज़्यादा मेमोरी की ज़रूरत होती है. नेटिव विज्ञापनों को मिटाए बिना उन्हें कैश मेमोरी में सेव करने से, बहुत ज़्यादा मेमोरी का इस्तेमाल होता है.

  • जब नेटिव विज्ञापनों का इस्तेमाल न हो रहा हो, तब उन्हें डिस्ट्रॉय कर दें.

विज्ञापन दिखाना

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