इनाम वाले विज्ञापन ऐसे विज्ञापन होते हैं जिनमें उपयोगकर्ता इन-ऐप्लिकेशन इनाम के बदले में इंटरैक्ट कर सकते हैं. इस गाइड में, AdMobसे मिले इनाम वाले विज्ञापनों को, iOS ऐप्लिकेशन में इंटिग्रेट करने का तरीका बताया गया है. ग्राहक की सफलता की कुछ कहानियां पढ़ें: केस स्टडी 1, केस स्टडी 2.
ज़रूरी शर्तें
- Google मोबाइल विज्ञापन SDK 8.0.0 या उसके बाद के वर्शन.
- शुरू करने के लिए गाइड पूरी करें.
हमेशा टेस्ट विज्ञापनों के साथ टेस्ट करें
ऐप्लिकेशन बनाते और उसकी जांच करते समय, पक्का करें कि आप लाइव, प्रोडक्शन विज्ञापन के बजाय टेस्ट विज्ञापन का इस्तेमाल करें. ऐसा न करने पर, आपके खाते को निलंबित किया जा सकता है.
टेस्ट विज्ञापनों को लोड करने का सबसे आसान तरीका है, iOS इनाम वाले विज्ञापनों के लिए हमारे खास टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना:
ca-app-pub-3940256099942544/1712485313
इसे हर अनुरोध के लिए, टेस्ट विज्ञापन दिखाने के लिए खास तौर पर कॉन्फ़िगर किया गया है. साथ ही, आप कोडिंग, टेस्ट, और डीबग करने के दौरान, अपने ऐप्लिकेशन में इसका इस्तेमाल कर सकते हैं. अपना ऐप्लिकेशन पब्लिश करने से पहले, पक्का करें कि आप उसे अपने विज्ञापन यूनिट के आईडी से बदलें.
मोबाइल विज्ञापन SDK टूल के टेस्ट विज्ञापन कैसे काम करते हैं, इस बारे में ज़्यादा जानकारी के लिए विज्ञापन टेस्ट करें देखें.
लागू करना
इनाम वाले इंटरस्टीशियल विज्ञापनों को जोड़ने के लिए मुख्य तरीके ये हैं:
- विज्ञापन लोड करना
- [ज़रूरी नहीं] एसएसवी कॉलबैक की पुष्टि करें
- कॉलबैक के लिए रजिस्टर करें
- विज्ञापन दिखाना और इनाम वाले इवेंट को मैनेज करना
विज्ञापन लोड करना
GADRewardedAd
क्लास में स्टैटिक
loadWithAdUnitID:request:completionHandler:
तरीके का इस्तेमाल करके, विज्ञापन लोड किया जाता है. लोड करने के तरीके के लिए, आपकी विज्ञापन यूनिट का आईडी,
GADRequest
ऑब्जेक्ट, और एक पूरा होने वाला हैंडलर ज़रूरी होता है.
जब विज्ञापन लोड होना या फ़ेल हो जाता है, तब इसे कॉल किया जाता है. लोड हो चुके
GADRewardedAd
ऑब्जेक्ट को, पूरा करने वाले हैंडलर में पैरामीटर के तौर पर दिया गया है. नीचे दिए गए उदाहरण में बताया गया है कि अपनी ViewController
कक्षा में GADRewardedAd
कैसे लोड करें.
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController { private var rewardedAd: GADRewardedAd? func loadRewardedAd() { let request = GADRequest() GADRewardedAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error = error { print("Failed to load rewarded ad with error: \(error.localizedDescription)") return } rewardedAd = ad print("Rewarded ad loaded.") } ) } }
Objective-C
@import GoogleMobileAds; @import UIKit; @interface ViewController () @property(nonatomic, strong) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)loadRewardedAd { GADRequest *request = [GADRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" 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
क्वेरी पैरामीटर में पास की जाती है. अगर कोई कस्टम डेटा वैल्यू सेट नहीं की गई है, तो SSV कॉलबैक में custom_data
क्वेरी पैरामीटर वैल्यू नहीं दिखेगी.
कोड का यह नमूना दिखाता है कि विज्ञापन का अनुरोध करने से पहले, इनाम वाले विज्ञापन के ऑब्जेक्ट पर कस्टम डेटा कैसे सेट किया जाता है.
Swift
GADRewardedInterstitialAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error != error { rewardedInterstitialAd = ad let options = GADServerSideVerificationOptions() options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING" rewardedInterstitialAd.serverSideVerificationOptions = options }
Objective-C
GADRequest *request = [GADRequest request]; [GADRewardedInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedInterstitialAd *ad, NSError *error) { if (error) { // Handle Error return; } self.rewardedInterstitialAd = ad; GADServerSideVerificationOptions *options = [[GADServerSideVerificationOptions alloc] init]; options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING"; ad.serverSideVerificationOptions = options; }];
कॉलबैक के लिए रजिस्टर करें
प्रज़ेंटेशन इवेंट की सूचनाएं पाने के लिए, आपको GADFullScreenContentDelegate
प्रोटोकॉल लागू करना होगा और उसे लौटाए गए विज्ञापन की fullScreenContentDelegate
प्रॉपर्टी को असाइन करना होगा. GADFullScreenContentDelegate
प्रोटोकॉल, कॉलबैक को मैनेज करता है. ऐसा तब होता है, जब विज्ञापन
दिखने के दौरान दिखता है या नहीं नीचे दिया गया कोड दिखाता है कि प्रोटोकॉल को कैसे लागू करें और उसे विज्ञापन में कैसे असाइन करें:
Swift
class ViewController: UIViewController, GADFullScreenContentDelegate { private var rewardedAd: GADRewardedAd? func loadRewardedAd() { let request = GADRequest() GADRewarded.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313", request: request, completionHandler: { [self] ad, error in if let error = error { print("Failed to load rewarded ad with error: \(error.localizedDescription)") return } rewardedAd = ad print("Rewarded ad loaded.") rewardedAd?.fullScreenContentDelegate = self } ) } /// 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 { GADRequest *request = [GADRequest 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() { if let ad = rewardedAd { ad.present(fromRootViewController: self) { let reward = ad.adReward print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)") // TODO: Reward the user. } } else { print("Ad wasn't ready") } }
Objective-C
- (void)show { ... if (self.rewardedAd) { [self.rewardedAd presentFromRootViewController:self userDidEarnRewardHandler:^{ GADAdReward *reward = self.rewardedAd.adReward; // TODO: Reward the user! }]; } else { NSLog(@"Ad wasn't ready"); } }
अक्सर पूछे जाने वाले सवाल
- क्या मुझे
GADRewardedAd
के लिए इनाम की जानकारी मिल सकती है? - हां, अगर आपको
userDidEarnReward
कॉलबैक के ट्रिगर होने से पहले इनाम की रकम चाहिए, तोGADRewardedAd
में एकadReward
प्रॉपर्टी है, जो विज्ञापन लोड होने के बाद इनाम की रकम की पुष्टि करने के लिए उपलब्ध है. - क्या इस सुविधा को शुरू करने का समय खत्म हो गया है?
- 10 सेकंड के बाद, Google मोबाइल विज्ञापन SDK,
startWithCompletionHandler:
तरीके में दिए गएGADInitializationCompletionHandler
को लागू करता है. भले ही, मीडिएशन नेटवर्क ने अब भी शुरुआत की प्रक्रिया पूरी न की हो. - अगर मुझे इनीशियलाइज़ेशन कॉलबैक मिलता है, तो क्या होगा?
हमारा सुझाव है कि आप
GADInitializationCompletionHandler
में विज्ञापन लोड करें. मीडिएशन नेटवर्क तैयार न होने पर भी, Google मोबाइल विज्ञापन SDK उस नेटवर्क से विज्ञापन चलाने का अनुरोध करता है. अगर कोई मीडिएशन नेटवर्क समय खत्म होने के बाद शुरू होता है, तो वह उस सेशन में आगे भी विज्ञापन अनुरोधों को पूरा कर सकता है.GADMobileAds.initializationStatus
को कॉल करके, ऐप्लिकेशन के पूरे सेशन के दौरान सभी अडैप्टर को शुरू करने की स्थिति को पोल किया जा सकता है.- मैं यह कैसे पता लगाऊं कि कोई खास मीडिएशन नेटवर्क तैयार क्यों नहीं है?
GADAdapterStatus
ऑब्जेक्ट कीdescription
प्रॉपर्टी से पता चलता है कि विज्ञापन देने वाले, विज्ञापन के अनुरोधों के लिए तैयार क्यों नहीं हैं.- क्या
userDidEarnRewardHandler
पूरा होने वाला हैंडलर हमेशाadDidDismissFullScreenContent:
प्रतिनिधि तरीके से पहले कॉल किया जाता है? Google विज्ञापनों के लिए, सभी
userDidEarnRewardHandler
कॉलadDidDismissFullScreenContent:
से पहले होते हैं. मीडिएशन के ज़रिए दिखाए जाने वाले विज्ञापनों के लिए, तीसरे पक्ष के विज्ञापन नेटवर्क कंपनी का SDK टूल लागू करता है, जिससे कॉलबैक ऑर्डर तय होता है. इनाम की जानकारी के साथ एक ही तरीका इस्तेमाल करने वाले विज्ञापन नेटवर्क SDK टूल के लिए, मीडिएशन अडैप्टरuserDidEarnRewardHandler
कोadDidDismissFullScreenContent:
से पहले इस्तेमाल करता है.
GitHub पर उदाहरण
- इनाम वाले विज्ञापनों का उदाहरण: Swift | Objective-C
अगले चरण
उपयोगकर्ता की निजता के बारे में ज़्यादा जानें.