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 पैकेज के तौर पर शिप किया जाता है. प्लग इन डाउनलोड और इंपोर्ट करने के लिए, यह तरीका अपनाएं:
- Unity के लिए उपलब्ध Google Play के प्लगिन की नई रिलीज़ डाउनलोड करने के लिए, रिपॉज़िटरी के GitHub पर मौजूद रिलीज़ पेज पर जाएं.
Unity के मेन्यू बार में, ऐसेट > पैकेज इंपोर्ट करें > कस्टम पैकेज पर क्लिक करें.
.unitypackage
फ़ाइल को डाउनलोड करने की जगह ढूंढें और उसे चुनें.Unity पैकेज इंपोर्ट करें डायलॉग में, सभी ऐसेट को चुना हुआ छोड़ें और इंपोर्ट करें पर क्लिक करें.
पैकेज इंपोर्ट होने के बाद, आपके प्रोजेक्ट की ऐसेट में GooglePlayPlugins नाम का एक नया फ़ोल्डर (ऐसेट फ़ोल्डर के रूट में) जोड़ दिया जाता है. इस फ़ोल्डर में, प्लग इन के लिए Google Play Billing Library की सभी ऐसेट होती हैं.
बिल्ड सेटिंग कॉन्फ़िगर करना
प्लगिन, Unity IAP को बढ़ाता है. इसलिए, Unity को समस्याएं आ सकती हैं और वह Android APK नहीं बना पाएगा. ऐसा तब तक होगा, जब तक Unity IAP में मौजूद कुछ पुरानी और ओवरलैप होने वाली डिपेंडेंसी को बिल्ड से नहीं हटाया जाता. यह प्लग इन, आपके प्रोजेक्ट से उन लाइब्रेरी को अपने-आप हटाने का तरीका उपलब्ध कराता है जिनमें आपस में कोई फ़र्क़ है. इन विरोधों को हल करने के लिए, यह तरीका अपनाएं:
Unity के मेन्यू बार में, Google > Play Billing > Build Settings चुनें.
Play Billing Build Settings विंडो में, ठीक करें पर क्लिक करें. इससे, विरोध को हल किया जाता है और विरोध वाली Unity IAP फ़ाइलों को बैकअप डायरेक्ट्री में ले जाया जाता है. ठीक करें पर क्लिक करने के बाद, बटन वापस लाएं में बदल जाता है. इस पर क्लिक करके, ओरिजनल और डुप्लीकेट फ़ाइलों को वापस लाया जा सकता है.
प्लग इन चालू करना
प्लग इन चालू करने के लिए, Unity IAP के Google Play के लागू होने की जगह पर, Google Play Billing प्लग इन का इस्तेमाल करें. उदाहरण के लिए, Unity IAP Purchaser Script का इस्तेमाल करते समय, Google.Play.Billing.GooglePlayStoreModule
का इस्तेमाल करने के लिए, IAP बिल्डर में पास किए गए StandardPurchaseModule
को बदलना होगा:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
अगर आपका गेम एक से ज़्यादा प्लैटफ़ॉर्म के लिए एक ही परचेज़र स्क्रिप्ट का इस्तेमाल करता है, तो आपको प्लैटफ़ॉर्म की जांच करने की सुविधा जोड़नी चाहिए. इससे यह पक्का किया जा सकेगा कि Unity, दूसरे प्लैटफ़ॉर्म के लिए अपने आईएपी सलूशन का इस्तेमाल करता रहेगा:
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 के स्टैंडर्ड आईएपी के बीच अंतर की वजह से, अन्य ऐप्लिकेशन स्टोर के लिए एपीआई के काम करने के तरीके में कुछ छोटे बदलाव हुए हैं. अगर आपने Unity IAP API का इस्तेमाल पहले कभी नहीं किया है, तो खरीदारी के बुनियादी फ़्लो को लागू करने का उदाहरण पाने के लिए, Unity IAP ट्यूटोरियल में "खरीदारी की स्क्रिप्ट बनाना" सेक्शन देखें.
Google Play Billing लाइब्रेरी में कुछ ऐसी सुविधाएं भी शामिल हैं जो 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 को बदला गया प्रोफ़ाइल आईडी भेजने के बाद, उस आईडी को खरीदारी की रसीद में देखा जा सकता है.
बदला गया प्रोफ़ाइल आईडी पास करने के लिए, अपने आईएपी बिल्डर का इस्तेमाल करके, अपने मॉड्यूल के कॉन्फ़िगरेशन में बदलाव करें. इसके लिए, 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 के स्टैंडर्ड आईएपी लागू होते हैं. हालांकि, कुछ मामलों में एपीआई अलग तरह से काम करेंगे. इस सेक्शन में, व्यवहार में इन अंतरों के बारे में बताया गया है.
डेवलपर पेलोड काम नहीं करता
Google Play ने डेवलपर पेलोड की सुविधा बंद कर दी है. इसे ऐसे विकल्पों से बदला जा रहा है जो ज़्यादा काम के और काम के हिसाब से हों. इस वजह से, डेवलपर पेलोड का इस्तेमाल नहीं किया जा सकता. अन्य विकल्पों के बारे में ज़्यादा जानने के लिए, डेवलपर पेलोड पेज देखें.
IStoreController
के साथ-साथ अन्य ऐप्लिकेशन स्टोर के लिए, Unity के स्टैंडर्ड आईएपी लागू करने के तरीके से तय किए गए इंटरफ़ेस का इस्तेमाल जारी रखा जा सकता है. खरीदारी शुरू करने पर भी, IStoreController
का इस्तेमाल किया जा सकता है और InitiatePurchase()
का तरीका कॉल किया जा सकता है:
public void InitiatePurchase(Purchasing.Product product, string payload);
हालांकि, आपका पास किया गया कोई भी पेलोड लागू नहीं होगा. वह आखिरी रसीद में नहीं दिखेगा.
SubscriptionManager काम नहीं करता
Unity IAP, सदस्यताओं को मैनेज करने के लिए SubscriptionManager
क्लास उपलब्ध कराता है. इस क्लास के लिए, Unity के स्टैंडर्ड आईएपी लागू करने की सुविधा, डेवलपर पेलोड का इस्तेमाल करती है. इसलिए, इस क्लास का इस्तेमाल नहीं किया जा सकता. इस क्लास को अब भी बनाया जा सकता है. हालांकि, क्लास के किसी भी getter तरीके का इस्तेमाल करने पर, आपको भरोसेमंद डेटा नहीं मिल सकता.
UpdateSubscription में एपीआई से जुड़े कुछ छोटे बदलाव किए गए हैं
Google Play Billing प्लग इन, आपकी सदस्यताओं को अपग्रेड और डाउनग्रेड करने के लिए, SubscriptionManager.UpdateSubscription()
और SubscriptionManager.UpdateSubscriptionInGooglePlayStore()
तरीकों का इस्तेमाल नहीं करता. अगर आपका गेम इन तरीकों को कॉल करता है, तो GooglePlayStoreUnsupportedException
को ट्रिगर किया जाता है.
Google Play Billing लाइब्रेरी, इन तरीकों के बजाय इस्तेमाल करने के लिए एक अन्य एपीआई उपलब्ध कराती है. किसी सदस्यता को अपग्रेड या डाउनग्रेड करने के लिए, प्रोरेशन मोड का इस्तेमाल करके UpdateSubscription()
तरीका कॉल करें:
void UpdateSubscription(Product oldProduct, Product newProduct,
GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);
इस मेथड कॉल को प्लैटफ़ॉर्म की जांच के साथ रैप किया जा सकता है या GooglePlayStoreUnsupportedException
मिलने पर, इसे कैच ब्लॉक में रैप किया जा सकता है.
प्रोरेशन मोड का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानकारी और उदाहरणों के लिए, प्रोरेशन मोड सेट करना लेख पढ़ें.