उपयोगकर्ताओं के लिए, ऐप्लिकेशन में खरीदारी के लिए उपलब्ध प्रॉडक्ट और फ़ायदों को अनलॉक करने का एक तरीका यह है कि इनाम वाले प्रॉडक्ट बनाए जाएं. ये ऐसे आइटम होते हैं जो उपयोगकर्ताओं को वीडियो विज्ञापन देखने के बाद मिलते हैं. इनाम वाले प्रॉडक्ट उपलब्ध कराने से, उपयोगकर्ताओं को ऐप्लिकेशन में इनाम और फ़ायदे पाने की अनुमति मिलती है. इसके लिए, उन्हें सीधे तौर पर खरीदारी करने की ज़रूरत नहीं होती.
इस दस्तावेज़ में, इनाम में दिए गए प्रॉडक्ट के लिए खास तौर पर तैयार की गई सुविधा को लागू करने का तरीका बताया गया है. इस पेज के वर्कफ़्लो डायग्राम सेक्शन में, इस प्रोसेस के बारे में बताया गया है.
अपने ऐप्लिकेशन के लिए इनाम वाले प्रॉडक्ट की पहचान करना
इनाम में मिले प्रॉडक्ट का SkuType, INAPP है.
यह पक्का करने के लिए कि उपयोगकर्ता कई विज्ञापन देख सकें और उन्हें कई इनाम मिल सकें, उन्हें प्रॉडक्ट का इस्तेमाल करना होगा.
किसी उपयोगकर्ता को इनाम में मिलने वाला प्रॉडक्ट ऑफ़र करने से पहले, आपको उस प्रॉडक्ट के लिए SkuDetails हासिल करना होगा. इसके लिए, प्रॉडक्ट टाइप के तौर पर SkuType.INAPP का इस्तेमाल करके, querySkuDetailsAsync() को कॉल करें.
उम्र के हिसाब से विज्ञापन दिखाने का एलान करना
बच्चों और कम उम्र के उपयोगकर्ताओं से जुड़ी कानूनी जवाबदेही का पालन करने में मदद करने के लिए, जिसमें चिल्ड्रंस ऑनलाइन प्राइवसी प्रोटेक्शन ऐक्ट (कोपा) और जनरल डेटा प्रोटेक्शन रेगुलेशन (जीडीपीआर) शामिल हैं, आपके ऐप्लिकेशन को यह बताना होगा कि अमेरिका में किन विज्ञापनों को बच्चों के लिए बने विज्ञापन के तौर पर माना जाना चाहिए. साथ ही, यह भी बताना होगा कि किन विज्ञापनों को उन उपयोगकर्ताओं के लिए बनाया गया है जिनकी उम्र उनके देश में सहमति देने की मान्य उम्र से कम है. AdMob सहायता केंद्र में बताया गया है कि आपको अपने विज्ञापन अनुरोधों को बच्चों को ध्यान में रखते हुए व्यवहार/बर्ताव करने के लिए कब टैग करना चाहिए और सहमति देने की कानूनी उम्र से कम उम्र के बच्चों को ध्यान में रखते हुए व्यवहार/बर्ताव करने के लिए कब टैग करना चाहिए. साथ ही, ऐसा करने के नतीजों के बारे में भी बताया गया है.
अपने ऐप्लिकेशन के लिए बिलिंग क्लाइंट बनाते समय, यह तय करें कि इनाम वाले विज्ञापन के अनुरोधों को बच्चों के लिए बने ऐप्लिकेशन के तौर पर माना जाना चाहिए या उन्हें सहमति देने की कानूनी उम्र से कम उम्र के उपयोगकर्ताओं को टारगेट करना चाहिए. अगर विज्ञापन अनुरोधों पर ये पाबंदियां लागू होनी चाहिए, तो setChildDirected() और setUnderAgeOfConsent() तरीकों को कॉल करें. साथ ही, हर तरीके में सही वैल्यू पास करें.
नीचे दिए गए कोड स्निपेट में बताया गया है कि वीडियो विज्ञापनों को बच्चों या सहमति देने की मान्य उम्र से कम उम्र के लोगों के लिए सही कैसे माना जाए:
Kotlin
val billingClient = BillingClient.newBuilder(context) .setListener(this) .setChildDirected(ChildDirected.CHILD_DIRECTED) .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT) .build()
Java
BillingClient billingClient = BillingClient.newBuilder(context) .setListener(this) .setChildDirected(ChildDirected.CHILD_DIRECTED) .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT) .build();
वीडियो विज्ञापन लोड करना
उपयोगकर्ता को इनाम में मिलने वाला प्रॉडक्ट पाने के लिए, वीडियो विज्ञापन देखने का विकल्प दिखाने से पहले, आपको वीडियो लोड करना होगा. इसके लिए, RewardLoadParams ऑब्जेक्ट बनाएं और उसे SkuDetails ऑब्जेक्ट से जोड़ें. यह ऑब्जेक्ट, इनाम में मिलने वाले प्रॉडक्ट को दिखाता है. इसके बाद, बिलिंग क्लाइंट के loadRewardedSku() तरीके को कॉल करें. इसमें RewardLoadParams ऑब्जेक्ट और RewardResponseListener ऑब्जेक्ट पास करें.
वीडियो लोड होने के बाद, RewardResponseListener लिसनर को सूचना दी जाती है. अगर वीडियो उपलब्ध नहीं है या सर्वर टाइम आउट होने जैसी कोई अन्य गड़बड़ी होती है, तो सुनने वाले को भी इसकी सूचना दी जाती है.
ऐप्लिकेशन के इनाम वाले प्रॉडक्ट से जुड़े वीडियो लोड करते समय, डिवाइस की परफ़ॉर्मेंस को बनाए रखने के लिए, इन सबसे सही तरीकों को ध्यान में रखें:
- एक बार में ज़्यादा से ज़्यादा तीन इनाम में मिलने वाले प्रॉडक्ट एसकेयू लोड करें.
- जब भी कोई व्यक्ति आपके ऐप्लिकेशन में जाता है, तब वीडियो लोड करने की कोशिश करें. इस चरण से, यह पता लगाने में मदद मिलती है कि वीडियो अब भी लोड हैं और उपलब्ध हैं या नहीं.
वीडियो लोड करने का समय तय करते समय, बैंडविथ के इस्तेमाल और ऐप्लिकेशन की परफ़ॉर्मेंस के बीच ऐसा संतुलन चुनें जो आपके इस्तेमाल के उदाहरण के लिए सबसे सही हो:
- इनाम में मिलने वाले प्रॉडक्ट से जुड़े
getSkuDetails()को कॉल करने के बाद, वीडियो को जल्द से जल्द लोड करें. आपका ऐप्लिकेशन बहुत तेज़ी से काम करता है. हालांकि, ऐसा हो सकता है कि उपयोगकर्ता कभी न देखे जाने वाले वीडियो को लोड करने में आपका नेटवर्क डेटा बर्बाद हो जाए. - जब उपयोगकर्ता उस पेज पर जाता है जहां वीडियो दिखाना है, तब वीडियो लोड करें. इस मामले में, आपका ऐप्लिकेशन शायद ही कभी बैंडविथ का इस्तेमाल करता है. हालांकि, उपयोगकर्ता को वीडियो देखने के लिए बटन पर क्लिक करने से पहले कुछ देर इंतज़ार करना पड़ सकता है.
- इनाम में मिलने वाले प्रॉडक्ट से जुड़े
यहां दिए गए कोड स्निपेट में, वीडियो विज्ञापन लोड करने की प्रोसेस दिखाई गई है. यह विज्ञापन, उपयोगकर्ता को इनाम में मिलने वाला प्रॉडक्ट मिलने से पहले चलता है:
Kotlin
if (skuDetails.isRewarded()) { val params = RewardLoadParams.Builder() .setSkuDetails(skuDetails) .build() mBillingClient.loadRewardedSku(params.build(), object : RewardResponseListener { override fun onRewardResponse(@BillingResponse responseCode : Int) { if (responseCode == BillingResponse.OK) { // Enable the reward product, or make // any necessary updates to the UI. } } }) }
Java
if (skuDetails.isRewarded()) { RewardLoadParams.Builder params = RewardLoadParams.newBuilder(); params.setSkuDetails(skuDetails); mBillingClient.loadRewardedSku(params.build(), new RewardResponseListener() { @Override public void onRewardResponse(int responseCode) { if (responseCode == BillingResponse.OK) { // Enable the reward product, or make // any necessary updates to the UI. } } }); }
उपयोगकर्ताओं को इनाम के तौर पर खरीदारी करने की सुविधा देना
अगर Google Play Billing Library, इनाम में मिलने वाले प्रॉडक्ट से जुड़ा वीडियो लोड कर लेती है, तो इसका मतलब है कि RewardResponseListener को BillingResponse.OK का responseCode मिला है. ऐसे में, बिलिंग फ़्लो लॉन्च किया जा सकता है.
इनाम में मिलने वाले प्रॉडक्ट के लिए विज्ञापन दिखाने की सुविधा शुरू करने के लिए, launchBillingFlow() को कॉल करें. ऐसा सभी अन्य तरह के ऐप्लिकेशन में खरीदने के लिए प्रॉडक्ट के लिए किया जाता है. उपयोगकर्ता को इनाम में मिलने वाला प्रॉडक्ट पाने के लिए सीधे तौर पर खरीदारी नहीं करनी पड़ती. हालांकि, आपको बिलिंग फ़्लो चालू करना होगा, ताकि उपयोगकर्ता प्रॉडक्ट पा सके और उसका इस्तेमाल कर सके.
खरीदारी को कंज़्यूम करें
अपने बिलिंग क्लाइंट को यह सूचना देने के लिए कि किसी उपयोगकर्ता को इनाम वाला प्रॉडक्ट मिल गया है और उसने उसका इस्तेमाल कर लिया है, बिलिंग क्लाइंट लिसनर के onPurchasesUpdated() तरीके में खरीदारी मैनेज करें. ध्यान दें कि इनाम के तौर पर मिली खरीदारी इस्तेमाल की जानी चाहिए.
इनाम में मिलने वाले प्रॉडक्ट की जांच करना
यह जांच करने के लिए कि आपका ऐप्लिकेशन वीडियो विज्ञापन कैसे लोड करता है और उपयोगकर्ताओं को इनाम वाले प्रॉडक्ट कैसे उपलब्ध कराता है, लाइसेंस वाले टेस्टर का इस्तेमाल करें. इन्हें डिफ़ॉल्ट रूप से, असली विज्ञापनों के बजाय टेस्ट विज्ञापन मिलते हैं. इन टेस्टर के लिए खाते सेट अप करने का तरीका जानने के लिए, उपयोगकर्ता से Google Play Billing ऐप्लिकेशन की जांच कराना लेख पढ़ें.
जांच करने का एक और तरीका यह है कि आप android.test.reward प्रॉडक्ट आईडी का इस्तेमाल करें. यह प्रॉडक्ट, Google Play Billing में रिज़र्व किया गया नाम है. इसलिए, आपको इसे Play Console में, ऐप्लिकेशन में खरीदने के लिए उपलब्ध प्रॉडक्ट की सूची में जोड़ने की ज़रूरत नहीं है.
चेतावनी: इनाम वाले प्रॉडक्ट की जांच करते समय, असली प्रॉडक्ट का इस्तेमाल न करें. ऐसा न करने पर, आपके खाते को स्पैम या धोखाधड़ी करने वाले खाते के तौर पर फ़्लैग किया जा सकता है.
हालांकि, टेस्टिंग पूरी होने के बाद, पक्का करें कि आपने android.test.reward को इनाम वाले असली प्रॉडक्ट के आईडी से बदल दिया हो. ऐसा आपको प्रोडक्शन ट्रैक पर मौजूद ऐप्लिकेशन को असली उपयोगकर्ताओं के लिए डिप्लॉय करने से पहले करना होगा.
इनाम में मिलने वाले प्रॉडक्ट के वर्कफ़्लो का डायग्राम
इस क्रम के डायग्राम में दिखाया गया है कि वीडियो विज्ञापन दिखाने और उपयोगकर्ता को इनाम में मिलने वाले प्रॉडक्ट का ऐक्सेस देने के लिए, उपयोगकर्ता, आपका ऐप्लिकेशन, और Google Play Billing Library एक साथ कैसे काम करते हैं: