2015-08-31 11 views
12

मेरे पास Google Play Store में एक सशुल्क ऐप है। मैं उस ऐप की कीमत को कम करने पर विचार कर रहा हूं (कुछ हद तक नहीं; मुफ्त में सभी तरह से नहीं) और सुविधाओं में से एक को एक अलग इन-ऐप खरीद के रूप में पेश करना।पहले खरीदारों को मुफ्त सुविधाएं प्रदान करें

यदि मैंने ऐसा किया है, तो मैं इस सुविधा को किसी भी व्यक्ति से दूर नहीं करना चाहता हूं जो इसे पहले ही खरीदा है।

क्या कोई भी तरीका यह पता लगाने का कोई तरीका है कि उपयोगकर्ता ने अपना ऐप खरीदा है, या ऐप के मूल संस्करण को खरीदा है, या ऐसा कुछ है? मैं कुछ ऐसा कहना चाहूंगा, "यदि ऐप मूल्य परिवर्तन से पहले था (या तो तिथि या संस्करण द्वारा), तो उन्हें सुविधा मुफ्त में मिलनी चाहिए, अन्यथा, सुविधा को अनलॉक करने के लिए आईएपी की आवश्यकता है।"

उदाहरण के लिए, आईओएस की इस तरह की सुविधा है; ऐप रसीद में एक "मूल संस्करण" फ़ील्ड शामिल है जिसका उपयोग सुविधाओं तक पहुंच को नियंत्रित करने के लिए किया जा सकता है।

उत्तर

4

अपने ग्राहकों के लिए

दुर्भाग्य से, यह असंभव है। कोई एपीआई कॉल या Google Play पर कुछ भी नहीं है जहां आप उस समय को प्राप्त कर सकते हैं जिस पर ऐप खरीदा गया था।

मुझे पता है कि अस्तित्व में android-publisher API है, हालांकि यह जांचने के लिए कोई सुविधा प्रदान नहीं करता है।

जो फ़ंक्शन आप उपयोग करना चाहते हैं वे सार्वजनिक उपलब्ध नहीं हैं और केवल Playstore द्वारा आंतरिक रूप से उपयोग किए जाते हैं!




समाधान तुम कर सकते हो जो:

1. समय एप्लिकेशन

स्थापित किया गया था पहली शुरुआत आप जांच कर सकता है पर प्राप्त करें वह और सुविधाओं को अनलॉक करें।

चेतावनी: यह प्रणाली डिवाइस

long installed = context 
.getPackageManager() 
.getPackageInfo(context.getPackag‌​eName(), 0) 
.firstInstallTime; 


2. उपयोगकर्ताओं को मुक्त कुंजी

आप हर उपयोगकर्ता दे सकता है दे दो पर समय बदलकर साथ दुर्व्यवहार किया जा सकता है ऐप का उपयोग कर मेल या पुश अधिसूचना

के माध्यम से एक फ्री कुंजी एटीएम का उपयोग कर रहा है


3. अनलॉक inapp खरीद अब

एक ऐप अपडेट जो मुक्त करने के लिए inapp खरीद बातें बताता प्रकाशित करें।कुछ हफ्तों के बाद आप अपने नए संस्करण को कम कीमत के साथ पुसब्लिश कर सकते हैं और केवल सुविधाओं को अनलॉक कर सकते हैं जैसे कि आपके मौजूदा ग्राहकों ने आपका एक्सटेंशन खरीदा है।

यदि आप किसी प्रकार के लगातार भंडारण का उपयोग कर रहे हैं तो आप इसके आसपास अपना रास्ता हैक करने में सक्षम हो सकते हैं।

साझा किए गए संदर्भों के लिए, पहले भाग पर, SharedPreferences.contains() का उपयोग करके अपनी प्राथमिकताओं में से किसी एक के लिए चेक करें। यदि इसमें यह शामिल है, तो ऐप पहले ही इंस्टॉल हो चुका होगा। यदि नहीं, तो एक और प्राथमिकता सेट करें जो उपयोगकर्ता को नए के रूप में चिह्नित करे, और अभी तक एक और सेट करें ताकि यह हर बार चेक न करे।

यह केवल तभी काम कर सकता है जब वरीयता में "डिफ़ॉल्ट" मान न हो, मैं पूरी तरह से सुनिश्चित नहीं हूं कि xml में डिफ़ॉल्ट सेट करना इसे निहित के रूप में चिह्नित करेगा।

यदि आप एसडी में स्थानांतरित होने वाली कोई भी संपत्ति है, या किसी भी एक ही समय के सेटअप के लिए आप कुछ ऐसा ही कर सकते हैं। बस यह देखने के लिए जांचें कि यह पहली बार ऐसा करने से पहले ही किया गया है या नहीं।

यदि आप SQLite डीबी का उपयोग कर रहे हैं, तो आप वर्तमान संस्करण (या पहले) से आने पर अपग्रेड() में "भुगतान" के रूप में डीबी संस्करण बढ़ा सकते हैं और "पेड" के रूप में चिह्नित कर सकते हैं।

हालांकि यहां कुछ समस्याएं हैं। उदाहरण के लिए, यदि कोई पिछला भुगतान ग्राहक नया संस्करण स्थापित करने से पहले पूरी तरह से अनइंस्टॉल करता है, या यदि यह किसी नए डिवाइस पर है। यही कारण है कि आप करना चाहिए के लिए:


4. समर्थन

अपने अनुप्रयोग के बारे में पूछे जाने वाले प्रश्न या अनुभाग में और अपने नए एक समर्थन मेल पता सेट संस्करण की पहली बार चलाने जो ग्राहकों अगर वे उपयोग कर सकते हैं पर प्रदान करें कोई समस्या है क्योंकि नई सुविधाओं को उनके लिए अनलॉक नहीं किया गया था।

वे अपनी खरीद के लिए कोई प्रमाण (बिल) प्रदान कर सकते हैं।




जैसा कि मैंने कहा, उन विचारों कामकाज से जुड़े हैं, लेकिन मैं यह देखने के लिए एक ऐप्लिकेशन इंस्टॉल एक उन्नत या एक प्रारंभिक स्थापित है की जाँच करने के लिए किसी भी "आधिकारिक" रास्ते से पता नहीं है।

आपका सबसे अच्छा विकल्प उन चारों का संयोजन हो सकता है।




FYI करें: मैं एक सुविधा का अनुरोध/विचार Google मेघ बंधन में काम के लिए खोल दिया है जो आप मतदान कर सकता है: https://connect.googleforwork.com/ideas/9392 (आप केवल यदि आप एक भुगतान किए गए Google राशि मतदान कर सकते हैं Buisiness खाता)


मुझे उम्मीद है कि यह आपको कम से कम थोड़ा सा मदद करेगा।

+0

इस बारे में सबसे अजीब चीज यह है कि, यदि मैं समर्थन प्रदान करता हूं, तो उपयोगकर्ता को _doesn't_ को खरीद का प्रमाण प्रदान करने की आवश्यकता नहीं है। मुझे बस इतना ही चाहिए कि उनका Google खाता ईमेल पता है; तो मैं Google Play डेवलपर कंसोल के ऑर्डर प्रबंधन अनुभाग में मैन्युअल रूप से अपनी रसीद की खोज कर सकता हूं और अपना पूरा रसीद इतिहास प्राप्त कर सकता हूं।मुझे केवल ईमेल द्वारा अपने ऑर्डर खोजने के लिए एक एपीआई चाहिए, और फिर मेरे पास सब कुछ चाहिए जो मुझे चाहिए। और Google स्पष्ट रूप से _has_ ऐसा एपीआई है, क्योंकि मैं इसे जीपीएस देव कंसोल पर मैन्युअल रूप से उपयोग कर सकता हूं। (मैं शायद इसे स्क्रैप कर सकता हूं?) –

+0

@DanFabulich मुझे पता है कि अस्तित्व में ऐसा एपीआई है, हालांकि यह ** सार्वजनिक ** उपलब्ध नहीं है! यह API https://developers.google.com/android-publisher/api-ref/purchases/voidedpurchases/list यह जांचने के लिए कोई सुविधा प्रदान नहीं करता है। आपका एकमात्र विकल्प मैन्युअल रूप से करना है (संपादित करें देखें) –

+0

@DanFabulich OFC आप एक क्रॉलर लिख सकते हैं जो कंसोल से सबकुछ क्रॉल करता है, लेकिन इस प्रश्न में ऐसा करने से इस उत्तर की सीमाएं बनी रहेंगी –

-1

जहाँ तक मुझे पता है, सबसे अच्छा आप यह कर सकते हैं कि यह इंस्टॉल किया गया था। http://developer.android.com/reference/android/content/pm/PackageInfo.html#firstInstallTime

+0

'firstInstallTime' आपको एक सुविधा के लिए भुगतान करने का सही समय नहीं देगा ... – gustavogbc

संबंधित मुद्दे