इनाम वाले विज्ञापन

इनाम वाले विज्ञापन ऐसे विज्ञापन होते हैं जिनके साथ उपयोगकर्ता इंटरैक्ट कर सकते हैं. जैसे, इन-ऐप्लिकेशन इनाम पाने के लिए. इस गाइड में, इनाम वाले विज्ञापनों को Ad Manager iOS ऐप्लिकेशन में इंटिग्रेट करने का तरीका बताया गया है.

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

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

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

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

/6499/example/rewarded

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

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

कार्यान्वयन

इनाम वाले इंटरस्टीशियल विज्ञापनों को इंटिग्रेट करने का मुख्य तरीका यहां बताया गया है:

  • विज्ञापन लोड करें
  • [ज़रूरी नहीं] एसएसवी कॉलबैक की पुष्टि करें
  • कॉलबैक के लिए रजिस्टर करें
  • विज्ञापन दिखाएं और इनाम वाले इवेंट को मैनेज करें

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

GADRewardedAd क्लास में स्टैटिक loadWithAdUnitID:request:completionHandler: तरीके का इस्तेमाल करके, विज्ञापन लोड किया जाता है. लोड करने के तरीके के लिए आपका विज्ञापन यूनिट आईडी, GAMRequest ऑब्जेक्ट, और पूरा करने वाले हैंडलर की ज़रूरत होती है. विज्ञापन लोड होने या न होने पर, इसे कॉल किया जाता है. लोड किया गया GADRewardedAd ऑब्जेक्ट, कंप्लीशन हैंडलर में पैरामीटर के तौर पर दिया जाता है. यहां दिए गए उदाहरण में, ViewController क्लास में GADRewardedAd लोड करने का तरीका बताया गया है.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var rewardedAd: GADRewardedAd?

  func loadRewardedAd() {
    do {
      rewardedAd = try await GADRewardedAd.load(
        withAdUnitID: "/6499/example/rewarded", request: GAMRequest())
    } catch {
      print("Rewarded ad failed to load with error: \(error.localizedDescription)")
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GAMRequest *request = [GAMRequest request];
  [GADRewardedAd
      loadWithAdUnitID:@"/6499/example/rewarded"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
      }];
}

[ज़रूरी नहीं] सर्वर साइड वेरिफ़िकेशन (SSV) कॉलबैक की पुष्टि करें

जिन ऐप्लिकेशन को सर्वर साइड से पुष्टि कॉलबैक में ज़्यादा डेटा की ज़रूरत होती है उन्हें इनाम वाले विज्ञापनों की कस्टम डेटा सुविधा का इस्तेमाल करना चाहिए. इनाम वाले विज्ञापन के ऑब्जेक्ट पर सेट की गई किसी भी स्ट्रिंग की वैल्यू को एसएसवी कॉलबैक के custom_data क्वेरी पैरामीटर को पास किया जाता है. अगर कोई कस्टम डेटा वैल्यू सेट नहीं है, तो एसएसवी कॉलबैक में custom_data क्वेरी पैरामीटर की वैल्यू नहीं दिखेगी.

नीचे दिया गया कोड सैंपल, इनाम वाले विज्ञापन के ऑब्जेक्ट पर कस्टम डेटा सेट करने का तरीका बताता है. ऐसा, विज्ञापन का अनुरोध करने से पहले किया जाता है.

Swift

do {
  rewardedAd = try await GADRewardedAd.load(
    withAdUnitID: "/6499/example/rewarded", request: GAMRequest())
  let options = GADServerSideVerificationOptions()
  options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING"
  rewardedAd.serverSideVerificationOptions = options
} catch {
  print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}

Objective-C

[GADRewardedAd
     loadWithAdUnitID:@"/6499/example/rewarded"
              request:[GAMRequest request];
    completionHandler:^(GADRewardedAd *ad, NSError *error) {
      if (error) {
        // Handle Error
        return;
      }
      self.rewardedAd = ad;
      GADServerSideVerificationOptions *options =
          [[GADServerSideVerificationOptions alloc] init];
      options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING";
      ad.serverSideVerificationOptions = options;
    }];

कॉलबैक के लिए रजिस्टर करें

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

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var rewardedAd: GADRewardedAd?

  func loadRewardedAd() {
    do {
      rewardedAd = try await GADRewardedAd.load(
        withAdUnitID: "/6499/example/rewarded", request: GAMRequest())
      rewardedAd?.fullScreenContentDelegate = self
    } catch {
      print("Rewarded ad failed to load with error: \(error.localizedDescription)")
    }
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

Objective-C

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GAMRequest *request = [GAMRequest request];
  [GADRewardedAd
      loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
        self.rewardedAd.fullScreenContentDelegate = self;
      }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad did dismiss full screen content.");
}

GADRewardedAd एक बार इस्तेमाल किया जाने वाला ऑब्जेक्ट है. इसका मतलब है कि एक बार इनाम वाला विज्ञापन दिखाए जाने के बाद, उसे दोबारा नहीं दिखाया जा सकता. सबसे सही तरीका यह है कि adDidDismissFullScreenContent: तरीके में GADFullScreenContentDelegate को एक और इनाम वाला विज्ञापन लोड किया जाए, ताकि इनाम वाला अगला विज्ञापन, खारिज होते ही लोड होना शुरू हो जाए.

विज्ञापन दिखाएं और इनाम वाले इवेंट को मैनेज करें

लोगों को इनाम वाला विज्ञापन दिखाने से पहले, आपको उन्हें एक ऐसा विकल्प देना होगा जिससे उन्हें इनाम वाला कॉन्टेंट देखने का विकल्प मिले. इनाम वाले विज्ञापनों को दिखाने के लिए ऑप्ट-इन किया जाना चाहिए.

अपना विज्ञापन दिखाते समय, आपको उपयोगकर्ता के इनाम को मैनेज करने के लिए एक GADUserDidEarnRewardHandler ऑब्जेक्ट देना होगा.

यहां दिया गया कोड, इनाम वाले विज्ञापन को दिखाने का सबसे अच्छा तरीका बताता है.

Swift

func show() {
  guard let rewardedAd = rewardedAd else {
    return print("Ad wasn't ready.")
  }

  // The UIViewController parameter is an optional.
  ad.present(fromRootViewController: nil) {
    let reward = ad.adReward
    print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
    // TODO: Reward the user.
  }
}

Objective-C

- (void)show {
  if (self.rewardedAd) {
    // The UIViewController parameter is nullable.
    [self.rewardedAd presentFromRootViewController:nil
                                  userDidEarnRewardHandler:^{
                                  GADAdReward *reward =
                                      self.rewardedAd.adReward;
                                  // TODO: Reward the user!
                                }];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

अक्सर पूछे जाने वाले सवाल

क्या मुझे GADRewardedAd के इनाम की जानकारी मिल सकती है?
हां, अगर userDidEarnReward कॉलबैक ट्रिगर होने से पहले आपको इनाम की रकम चाहिए, तो GADRewardedAd के पास एक adReward प्रॉपर्टी मौजूद है. इससे विज्ञापन लोड होने के बाद इनाम की रकम की पुष्टि की जा सकती है.
क्या शुरू करने के लिए कोई टाइम आउट सेट है?
10 सेकंड के बाद, Google Mobile Ads SDK, startWithCompletionHandler: तरीके के लिए दिए गए GADInitializationCompletionHandler को शुरू करता है. भले ही, मीडिएशन नेटवर्क ने अब भी प्रोसेस शुरू न किया हो.
अगर शुरू करने के लिए कॉलबैक के दौरान कुछ मीडिएशन नेटवर्क तैयार नहीं हैं, तो क्या होगा?

हमारा सुझाव है कि आप GADInitializationCompletionHandler में विज्ञापन लोड करें. मीडिएशन नेटवर्क तैयार न होने पर भी, Google Mobile Ads SDK उस नेटवर्क से विज्ञापन दिखाने के लिए कहता है. अगर कोई मीडिएशन नेटवर्क, टाइम आउट के बाद शुरू होता है, तो वह उस सेशन में भी आने वाले समय में विज्ञापन अनुरोधों को पूरा कर सकता है.

GADMobileAds.initializationStatus पर कॉल करके, अपने ऐप्लिकेशन सेशन के दौरान सभी अडैप्टर के शुरू होने की स्थिति की पोल करना जारी रखा जा सकता है.

मैं कैसे पता लगाऊं कि कोई खास मीडिएशन नेटवर्क तैयार क्यों नहीं है?

GADAdapterStatus ऑब्जेक्ट की description प्रॉपर्टी से पता चलता है कि अडैप्टर, सेवा विज्ञापन अनुरोधों के लिए तैयार क्यों नहीं है.

क्या डेलिगेट का तरीका adDidDismissFullScreenContent: से पहले हमेशा userDidEarnRewardHandler पूरा करने वाले हैंडलर को कॉल किया जाता है?

Google विज्ञापनों के लिए, सभी userDidEarnRewardHandler कॉल adDidDismissFullScreenContent: से पहले होते हैं. मीडिएशन के ज़रिए दिखाए जाने वाले विज्ञापनों के लिए, तीसरे पक्ष की विज्ञापन नेटवर्क कंपनी के SDK टूल को लागू करने पर, कॉलबैक का ऑर्डर तय होता है. जिन विज्ञापन नेटवर्क SDK टूल को इनाम की जानकारी देने के लिए एक ही तरीका देना पड़ता है उनके लिए मीडिएशन अडैप्टर, adDidDismissFullScreenContent: से पहले userDidEarnRewardHandler को चालू करता है.

GitHub पर उदाहरण

  • इनाम वाले विज्ञापनों का उदाहरण: Swift | Objective-C

अगले चरण

उपयोगकर्ता की निजता के बारे में ज़्यादा जानें.