इनाम वाले विज्ञापन ऐसे विज्ञापन होते हैं जिन्हें इस्तेमाल करने वाले लोग इन-ऐप्लिकेशन इनाम
के बदले में इंटरैक्ट कर सकते हैं. इस गाइड में, इनाम वाले विज्ञापनों को AdMob
iOS ऐप्लिकेशन में इंटिग्रेट करने का तरीका बताया गया है.
ग्राहकों की सफलता से जुड़ी कुछ कहानियां पढ़ें:
केस स्टडी 1 ,
केस स्टडी 2 .
ज़रूरी शर्तें
Google मोबाइल विज्ञापन SDK 8.0.0 या इसके बाद के वर्शन.
शुरुआती निर्देश पूरी करें.
हमेशा टेस्ट विज्ञापनों की मदद से टेस्ट करें
अपने ऐप्लिकेशन बनाते और उनकी जांच करते समय पक्का करें कि आप लाइव और प्रोडक्शन विज्ञापनों के बजाय टेस्ट विज्ञापनों का इस्तेमाल करते हों. ऐसा नहीं करने पर, आपका खाता निलंबित किया जा सकता है.
टेस्ट विज्ञापनों को लोड करने का सबसे आसान तरीका, iOS इनाम वाले विज्ञापनों के लिए, हमारे खास टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना है:
ca-app-pub-3940256099942544/1712485313
इसे हर अनुरोध के लिए, टेस्ट विज्ञापनों को लौटाने के लिए खास तौर पर कॉन्फ़िगर किया गया है. साथ ही, आप कोडिंग, टेस्टिंग, और डीबग करने के दौरान अपने ऐप्लिकेशन में इसका इस्तेमाल कर सकते हैं. अपना ऐप्लिकेशन प्रकाशित करने से पहले
आपको इसे अपने विज्ञापन यूनिट आईडी से बदलना होगा.
मोबाइल विज्ञापन SDK टूल के टेस्ट विज्ञापन कैसे काम करते हैं, इस बारे में ज़्यादा जानने के लिए टेस्ट विज्ञापन
देखें देखें.
लागू करना
इनाम वाले इंटरस्टीशियल विज्ञापनों को इंटिग्रेट करने के मुख्य तरीके ये हैं:
विज्ञापन लोड करना
[ज़रूरी नहीं] SSV कॉलबैक की पुष्टि करें
कॉलबैक के लिए रजिस्टर करें
विज्ञापन दिखाएं और इनाम वाले इवेंट को मैनेज करें
विज्ञापन लोड करना
विज्ञापन को लोड करने के लिए,
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
क्वेरी पैरामीटर में पास की जाती है. अगर कोई कस्टम डेटा
वैल्यू सेट नहीं किया गया है, तो custom_data
क्वेरी पैरामीटर की वैल्यू, SSV कॉलबैक में नहीं दिखेगी.
कोड का यह नमूना बताता है कि विज्ञापन का अनुरोध करने से पहले, इनाम वाले विज्ञापन के मकसद से
कस्टम डेटा कैसे सेट करें.
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;
}];
अहम जानकारी: SDK टूल के वर्शन 7.50.0 के मुताबिक, आप किसी भी समय कस्टम इनाम स्ट्रिंग सेट
कर सकते हैं. खास बात: कस्टम इनाम स्ट्रिंग, प्रतिशत है
कॉलबैक के लिए रजिस्टर करें
अगर आप प्रज़ेंटेशन इवेंट के लिए सूचनाएं पाना चाहते हैं, तो आपको 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 सेकंड के बाद, 10 सेकंड के बाद, Google मोबाइल विज्ञापन SDK टूल,GADInitializationCompletionHandler
को शुरू कर देता है. यह startWithCompletionHandler:
तरीके से दिया जाता है. भले ही, किसी मीडिएशन नेटवर्क ने शुरुआत की प्रक्रिया पूरी न की हो.
अगर मुझे शुरुआती कॉलबैक मिलता है, तो क्या कुछ मीडिएशन नेटवर्क तैयार नहीं होते हैं?
हमारा सुझाव है कि आप GADInitializationCompletionHandler
में एक विज्ञापन लोड करें. किसी मीडिएशन नेटवर्क के तैयार न होने पर भी
Google मोबाइल विज्ञापन SDK टूल, विज्ञापन के लिए उस नेटवर्क की मांग करता है. इसलिए, अगर मीडिएशन नेटवर्क
टाइम आउट के बाद शुरू होता है, तो भी उस सेशन में आने वाले समय में
विज्ञापन अनुरोध दिखाए जा सकते हैं.
आप GADMobileAds.initializationStatus
पर कॉल करके, पूरे ऐप्लिकेशन सेशन में सभी अडैप्टर को शुरू करने की स्थिति पोल कर सकते हैं.
मैं यह कैसे पता लगा सकता/सकती हूं कि कोई खास मीडिएशन नेटवर्क तैयार नहीं है?
GADAdapterStatus
ऑब्जेक्ट की description
प्रॉपर्टी से पता चलता है कि
विज्ञापन अनुरोध के लिए, अडैप्टर क्यों तैयार नहीं है.
क्या userDidEarnRewardHandler
पूरा करने वाला हैंडलर हमेशा adDidDismissFullScreenContent:
डेलिगेट करने के तरीके से पहले कॉल किया जाता है?
Google विज्ञापनों के लिए, सभी userDidEarnRewardHandler
कॉल
adDidDismissFullScreenContent:
से पहले होते हैं. मीडिएशन के ज़रिए दिखाए गए विज्ञापनों के लिए, तीसरे पक्ष की विज्ञापन नेटवर्क कंपनी का SDK टूल यह तय करता है कि कॉलबैक किस क्रम में दिया जाए. इनाम की जानकारी के साथ एक ही तरीके से पुष्टि करने वाले
विज्ञापन नेटवर्क SDK टूल के लिए, मीडिएशन अडैप्टर
adDidDismissFullScreenContent:
से पहले userDidEarnRewardHandler
का इस्तेमाल करता है.
GitHub पर उदाहरण