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

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

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

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

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

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

/6499/example/rewarded

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

Mobile Ads SDK के टेस्ट विज्ञापनों के काम करने के तरीके के बारे में ज़्यादा जानने के लिए, जांच करें Google Ads.

लागू करना

इनाम वाले विज्ञापनों को इंटिग्रेट करने के मुख्य चरण यहां दिए गए हैं:

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

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

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

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) कॉलबैक की पुष्टि करें

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

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

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 एक बार इस्तेमाल किया जाने वाला ऑब्जेक्ट है. इसका मतलब यह है कि एक बार इनाम वाला विज्ञापन दिखाया नहीं गया है, तो इसे फिर से नहीं दिखाया जा सकता. सबसे सही तरीका यह है कि आप इनाम वाले किसी दूसरे विज्ञापन को लोड करें GADFullScreenContentDelegate पर adDidDismissFullScreenContent: तरीके में ताकि इनाम वाला अगला विज्ञापन, पिछला विज्ञापन लोड होते ही लोड होना शुरू हो जाए खारिज किया गया.

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

उपयोगकर्ताओं को इनाम वाला विज्ञापन दिखाने से पहले, आपको उपयोगकर्ता को इनाम के तौर पर विज्ञापन का कॉन्टेंट देखने का एक अलग विकल्प. इनाम दिया गया विज्ञापन हमेशा ऑप्ट-इन अनुभव देने चाहिए.

विज्ञापन दिखाते समय, आपको एक 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 GADInitializationCompletionHandler startWithCompletionHandler: तरीका, भले ही मीडिएशन नेटवर्क अब भी काम न करे प्रोसेस शुरू हो गई है.
अगर शुरू करने के लिए कॉलबैक के दौरान कुछ मीडिएशन नेटवर्क तैयार नहीं हैं, तो क्या होगा?

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

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

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

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

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

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

GitHub पर उदाहरण

अगले चरण

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