Google Play Billing प्लगिन, इन-ऐप्लिकेशन खरीदारी के लिए Unity की बिल्ट-इन सेवाओं और ऐसेट को बढ़ाता है. इन्हें Unity IAP कहा जाता है. इससे आपके गेम को Google Play Billing Library की सभी नई सुविधाएं मिलती हैं. इस गाइड में, प्लगिन का इस्तेमाल करने के लिए प्रोजेक्ट सेट अप करने का तरीका बताया गया है. इस गाइड में, Unity में अपने गेम में Google Play Billing Library की सुविधाओं को लागू करने का तरीका भी बताया गया है.
Google Play Billing प्लगिन सेट अप करना
प्लगिन सेट अप करने के लिए, लिंक किए गए इन सेक्शन में दिए गए चरणों को पूरा करें:
- Unity IAP के ऐब्स्ट्रैक्शन लेयर को चालू करें.
- प्लगिन डाउनलोड और इंपोर्ट करें.
- प्लगिन की बिल्ड सेटिंग कॉन्फ़िगर करें.
- प्लगिन चालू करें.
Unity IAP के ऐब्स्ट्रैक्शन लेयर को चालू करना
Google Play Billing प्लगिन, Unity IAP में शामिल ऐब्स्ट्रैक्शन लेयर पर बनाया गया है. इसलिए, प्लगिन को डाउनलोड और इंपोर्ट करने से पहले, आपको इस ऐब्स्ट्रैक्शन लेयर को चालू करना होगा. Unity IAP ऐब्स्ट्रैक्शन लेयर चालू करने के लिए, यह तरीका अपनाएं:
- Unity के इस ट्यूटोरियल में दिए गए सभी चरण पूरे करें: Unity Services के लिए अपना प्रोजेक्ट सेट अप करना.
- Unity के इस ट्यूटोरियल में दिए गए सभी चरण पूरे करें: Unity IAP सेवा चालू करना.
प्लगिन डाउनलोड और इंपोर्ट करना
यह प्लगिन, .unitypackage फ़ॉर्मैट में Unity पैकेज के तौर पर उपलब्ध है. प्लगिन को डाउनलोड और इंपोर्ट करने के लिए, यह तरीका अपनाएं:
- रिपॉज़िटरी के GitHub पर रिलीज़ पेज से, Unity के लिए उपलब्ध Google Play के प्लगिन का नया वर्शन डाउनलोड करें.
Unity मेन्यू बार में, ऐसेट > पैकेज इंपोर्ट करें > कस्टम पैकेज पर क्लिक करें.
.unitypackageफ़ाइल को डाउनलोड की गई जगह पर ढूंढें और उसे चुनें.Unity पैकेज इंपोर्ट करें डायलॉग बॉक्स में, सभी ऐसेट को चुना हुआ रहने दें. इसके बाद, इंपोर्ट करें पर क्लिक करें.
पैकेज इंपोर्ट होने के बाद, आपके प्रोजेक्ट की ऐसेट में GooglePlayPlugins नाम का एक नया फ़ोल्डर जुड़ जाता है. यह ऐसेट फ़ोल्डर के रूट में होता है. इस फ़ोल्डर में, प्लगिन के लिए Google Play Billing Library की सभी ऐसेट शामिल हैं.
बिल्ड सेटिंग कॉन्फ़िगर करना
इस प्लगिन से Unity IAP का दायरा बढ़ जाता है. इसलिए, Unity को टकराव का सामना करना पड़ेगा और वह Android APK नहीं बना पाएगा. ऐसा तब तक होगा, जब तक Unity IAP में मौजूद कुछ पुरानी और ओवरलैप होने वाली डिपेंडेंसी को बिल्ड से नहीं हटा दिया जाता. यह प्लगिन, आपके प्रोजेक्ट से उन लाइब्रेरी को अपने-आप हटाने का तरीका उपलब्ध कराता है जो एक-दूसरे के साथ काम नहीं करती हैं. इन टकरावों को ठीक करने के लिए, यह तरीका अपनाएं:
Unity मेन्यू बार में जाकर, Google > Play Billing > Build Settings चुनें.
Play Billing की बिल्ड सेटिंग विंडो में, ठीक करें पर क्लिक करें. इससे कॉन्फ़्लिक्ट ठीक हो जाता है. साथ ही, कॉन्फ़्लिक्ट वाली Unity IAP फ़ाइलों को बैकअप डायरेक्ट्री में ले जाया जाता है. ठीक करें पर क्लिक करने के बाद, बटन पहले जैसा करें में बदल जाता है. इस पर क्लिक करके, टकराव वाली मूल फ़ाइलों को पहले जैसा किया जा सकता है.
प्लगिन चालू करें
प्लगिन को चालू करने के लिए, Google Play के साथ Unity IAP के इंटिग्रेशन को Google Play Billing प्लगिन से बदलें. उदाहरण के लिए, Unity IAP Purchaser Script का इस्तेमाल करते समय, आपको IAP बिल्डर में पास किए गए StandardPurchaseModule को बदलकर Google.Play.Billing.GooglePlayStoreModule का इस्तेमाल करना होगा:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
अगर आपका गेम कई प्लैटफ़ॉर्म के लिए एक ही खरीदार स्क्रिप्ट का इस्तेमाल करता है, तो आपको प्लैटफ़ॉर्म की जांच करने की सुविधा जोड़नी चाहिए. इससे यह पक्का किया जा सकेगा कि Unity, अन्य प्लैटफ़ॉर्म के लिए अपने IAP समाधान का इस्तेमाल जारी रखेगा:
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
अगर आपने अपने गेम को Google Play Store के अलावा, Android के दूसरे ऐप्लिकेशन स्टोर पर भी पब्लिश किया है, तो आपको डिफ़ॉल्ट Unity IAP को सिर्फ़ तब बदलना चाहिए, जब आपने Google Play Store को चुना हो:
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
&& SelectedAndoidAppStore == AppStore.GooglePlay)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
अपने गेम में Google Play Billing Library की सुविधाओं को लागू करना
Google Play Billing प्लगिन, Unity IAP सेवाओं को बढ़ाता है. इसलिए, खरीदारी के सामान्य वर्कफ़्लो को मैनेज करने के लिए, एक ही Unity API का इस्तेमाल किया जा सकता है. ध्यान दें कि Google Play Billing Library और अन्य ऐप्लिकेशन स्टोर के लिए Unity के स्टैंडर्ड IAP को लागू करने के तरीके में अंतर होने की वजह से, एपीआई के काम करने के तरीके में कुछ मामूली बदलाव हुए हैं. अगर आपने Unity IAP API का इस्तेमाल पहले कभी नहीं किया है, तो खरीदारी के बुनियादी फ़्लो को लागू करने का तरीका जानने के लिए, Unity IAP ट्यूटोरियल में "Making a Purchase Script" सेक्शन देखें.
Google Play Billing Library में कुछ ऐसी सुविधाएं भी शामिल हैं जो सिर्फ़ Google Play Store पर उपलब्ध हैं. इन सुविधाओं को एक्सटेंड किए गए इंटरफ़ेस के ज़रिए ऐक्सेस किया जा सकता है. इस सेक्शन के बाकी हिस्से में, Google Play Billing Library की इन खास सुविधाओं को अपने गेम में लागू करने का तरीका बताया गया है.
खरीदारी में देरी करने की सुविधा चालू करना
Google Play पर, कुछ समय बाद खरीदारी करने की सुविधा उपलब्ध है. इसे लंबित लेन-देन या लंबित खरीदारी भी कहा जाता है. इसमें उपयोगकर्ता, खरीदारी करने का विकल्प चुन सकते हैं और बाद में स्टोर में जाकर नकद पैसे देकर खरीदारी पूरी कर सकते हैं.
खरीदारी को कुछ समय के लिए रोकने की सुविधा चालू करने के लिए, IAP बिल्डर का इस्तेमाल करके अपने मॉड्यूल के कॉन्फ़िगरेशन में बदलाव करें. इसके लिए, EnableDeferredPurchase() तरीके को कॉल करें:
// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
.EnableDeferredPurchase();
इसके बाद, Play Store एक्सटेंशन का इस्तेमाल करके, कुछ समय बाद की जाने वाली खरीदारी के लिए कॉलबैक लागू करें:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
delegate(Product product)
{
// Do not grant the item here. Instead, record the purchase and remind
// the user to complete the transaction in the Play Store.
});
Google Play को धुंधले किए गए खाता आईडी पास करना
उपयोगकर्ता के खाते के आईडी को Google Play पर भेजा जा सकता है. इससे, गलत इस्तेमाल का पता लगाने में मदद मिलती है. जैसे, यह पता लगाना कि क्या कम समय में कई डिवाइसों से एक ही खाते पर खरीदारी की जा रही है.
ओब्फ़स्केट किए गए खाते का आईडी पास करने के लिए, एक्सटेंशन एपीआई से SetObfuscatedAccountId() तरीके को कॉल करें:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);
Google Play को अस्पष्ट किए गए प्रोफ़ाइल आईडी पास करना
Google Play को धुंधला किया गया प्रोफ़ाइल आईडी भेजा जा सकता है, ताकि धोखाधड़ी का पता लगाने में मदद मिल सके. जैसे, यह पता लगाना कि क्या कम समय में कई डिवाइस, एक ही खाते से खरीदारी कर रहे हैं. यह उपयोगकर्ता खाते के अस्पष्ट किए गए आईडी को पास करने जैसा ही है. दोनों ही मामलों में आईडी, एक उपयोगकर्ता को दिखाता है. हालांकि, प्रोफ़ाइल आईडी की मदद से, एक ही ऐप्लिकेशन में मौजूद कई प्रोफ़ाइलों में किसी एक उपयोगकर्ता की पहचान की जा सकती है. Google Play को धुंधला किया गया प्रोफ़ाइल आईडी भेजने के बाद, खरीदारी की रसीद में उस आईडी को वापस पाया जा सकता है.
प्रोफ़ाइल आईडी को छिपाकर भेजने के लिए, अपने IAP बिल्डर का इस्तेमाल करके अपने मॉड्यूल के कॉन्फ़िगरेशन में बदलाव करें. इसके लिए, SetObfuscatedProfileId() तरीके को कॉल करें:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);
सदस्यताओं की कीमतों में हुए बदलावों की पुष्टि करना
Google Play पर, किसी चालू सदस्यता की कीमत बदली जा सकती है. कीमत में बदलाव लागू होने से पहले, आपके गेम के उपयोगकर्ताओं को इसकी पुष्टि करनी होगी. सदस्यता की कीमत में हुए बदलाव की पुष्टि करने के लिए, उपयोगकर्ताओं को सूचना दिखाने के लिए ConfirmSubscriptionPriceChange() तरीके को कॉल करें:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
delegate (bool success)
{
// Returns whether the user has accepted the new price or not.
});
Unity API के काम करने के तरीके में बदलाव
Google Play Billing प्लगिन का इस्तेमाल करते समय, ज़्यादातर एपीआई उसी तरह काम करते हैं जिस तरह अन्य ऐप्लिकेशन स्टोर के लिए, Unity के स्टैंडर्ड IAP लागू करने के दौरान काम करते हैं. हालांकि, कुछ मामलों में एपीआई अलग तरह से काम करेंगे. इस सेक्शन में, इन दोनों के बीच के अंतर के बारे में बताया गया है.
डेवलपर पेलोड काम नहीं करता
Google Play ने डेवलपर पेलोड को बंद कर दिया है. अब इसकी जगह, ज़्यादा काम के और कॉन्टेक्स्ट के हिसाब से काम करने वाले विकल्प उपलब्ध कराए जा रहे हैं. इस वजह से, डेवलपर पेलोड का इस्तेमाल नहीं किया जा सकता. अन्य विकल्पों के बारे में ज़्यादा जानने के लिए, डेवलपर पेलोड के बारे में जानकारी देने वाला पेज देखें.
अन्य ऐप्लिकेशन स्टोर के लिए, Unity के स्टैंडर्ड IAP इंटिग्रेशन में तय किए गए इंटरफ़ेस का इस्तेमाल जारी रखा जा सकता है. इनमें IStoreController भी शामिल है. खरीदारी शुरू करने पर, अब भी IStoreController का इस्तेमाल किया जा सकता है और InitiatePurchase() तरीके को कॉल किया जा सकता है:
public void InitiatePurchase(Purchasing.Product product, string payload);
हालांकि, पास किया गया कोई भी पेलोड लागू नहीं होगा. यह फ़ाइनल रसीद में नहीं दिखेगा.
SubscriptionManager काम नहीं करता है
Unity IAP, सदस्यताओं को मैनेज करने के लिए SubscriptionManager
क्लास उपलब्ध कराता है. इस क्लास के लिए, Unity के स्टैंडर्ड IAP को लागू करने के दौरान डेवलपर पेलोड का इस्तेमाल किया जाता है. इसलिए, यह क्लास काम नहीं करती. इस क्लास को अब भी बनाया जा सकता है. हालांकि, क्लास के किसी भी getter तरीके का इस्तेमाल करने पर, आपको ऐसा डेटा मिल सकता है जो भरोसेमंद न हो.
UpdateSubscription में एपीआई से जुड़े कुछ बदलाव किए गए हैं
Google Play Billing प्लगिन, सदस्यता को अपग्रेड और डाउनग्रेड करने के लिए SubscriptionManager.UpdateSubscription() और SubscriptionManager.UpdateSubscriptionInGooglePlayStore() तरीकों का इस्तेमाल करने की सुविधा नहीं देता है. अगर आपका गेम इन तरीकों को कॉल करता है, तो GooglePlayStoreUnsupportedException थ्रो किया जाता है.
Google Play Billing Library, इन तरीकों के बजाय इस्तेमाल करने के लिए एक अन्य एपीआई उपलब्ध कराती है. सदस्यता को अपग्रेड या डाउनग्रेड करने के लिए, प्रोरेशन मोड का इस्तेमाल करके UpdateSubscription()
तरीके को कॉल करें:
void UpdateSubscription(Product oldProduct, Product newProduct,
GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);
GooglePlayStoreUnsupportedException के पकड़े जाने पर, इस तरीके के कॉल को प्लैटफ़ॉर्म की जांच के साथ रैप किया जा सकता है या कैच ब्लॉक में रखा जा सकता है.
प्रोरेशन मोड इस्तेमाल करने के तरीके के बारे में ज़्यादा जानकारी और उदाहरण देखने के लिए, प्रोरेशन मोड सेट करना लेख पढ़ें.