दिलचस्प पोस्ट
jQuery टेम्पलेटिंग इंजन अरबों पंक्तियों के लिए सर्वश्रेष्ठ डेटा स्टोर कंटेनर-द्रव बनाम। कंटेनर प्ले स्टोर पर प्रकाशित ऐप Google मानचित्र एपीआई और फेसबुक एपीआई के साथ संवाद नहीं कर सकता है एक स्ट्रिंग में stdout / stderr अनुप्रेषित करें फोरेक का प्रदर्शन, लैम्ब्डा के साथ array_map और स्थिर कार्य के साथ array_map लैम्ब्डा अभिव्यक्ति से संपत्ति का नाम पुनर्प्राप्त करना socket.io.js नहीं मिला विदेशी कुंजी बाधाओं का कारण हो सकता है चक्र या कई कैस्केड पथ? एक पूर्ण स्क्रीन मोड में शीर्षक छुपा रहा है? काफ्का का उपयोग (सीक्यूआरएस) इवेंटस्टोर अच्छा विचार? जावा एफएक्स और ओपनजेडीके सीडीएस में छद्म-वर्ग और छद्म-तत्व के बीच अंतर क्या है? दिनांक स्ट्रिंग से समय निकालें सर्वलेट रिटर्न "HTTP स्थिति 404 अनुरोधित संसाधन (/ servlet) उपलब्ध नहीं है"

मैं अपने ऐप के सशुल्क संस्करण को मुफ्त संस्करण के लिए "कुंजी" के रूप में कैसे उपयोग कर सकता हूं?

उदाहरण के लिए कहते हैं कि मेरे पास कुछ एंड्रॉइड ऐप है जो X करता है। निःशुल्क संस्करण में विज्ञापन या बुनियादी सुविधाएं हैं मुझे एक भुगतान किया गया संस्करण है जो विज्ञापनों को निकालता है और अतिरिक्त सुविधाओं को जोड़ता है।

मुफ्त ऐप में सुविधाओं को अनलॉक करने के लिए मैं "ऐड-ऑन" का उपयोग कैसे कर सकता हूं?

तो उपयोगकर्ता मुफ्त ऐप स्थापित करेगा, अतिरिक्त सुविधाओं को प्राप्त करने के लिए भुगतान किया ऐप इंस्टॉल करेगा, लेकिन वे अभी भी निःशुल्क ऐप चलाएंगे (जो अब अनलॉक हो जाएगा)। ऐसा करने के लिए सबसे अच्छा तरीका क्या है?

वेब के समाधान से एकत्रित समाधान "मैं अपने ऐप के सशुल्क संस्करण को मुफ्त संस्करण के लिए "कुंजी" के रूप में कैसे उपयोग कर सकता हूं?"

अपने भुगतान किए गए पैकेज को स्थापित करने के लिए पैकेजमैनेजर का उपयोग करें और सुनिश्चित करें कि आपका निःशुल्क पैकेज हस्ताक्षर मिलान प्रीमियम पैकेज हस्ताक्षर स्थापित करें। अन्यथा कोई व्यक्ति आपके पेड पैकेज नाम से मेल खाने वाले पैकेज नाम के साथ अहस्ताक्षरित ऐप को स्थापित करने में सक्षम होगा और इस तरह से प्रीमियम अनलॉक करेगा।

यह पोस्ट आपको अपना हस्ताक्षर ढूंढने में मदद कर सकता है पता लगाएँ कि ऐप Android मार्केट से डाउनलोड किया गया है या नहीं

मैं इसका उपयोग कर रहा हूं:

PackageManager manager = getPackageManager(); if (manager.checkSignatures("core.package.name", "key.package.name") == PackageManager.SIGNATURE_MATCH) { //full version } 

यह बहुत आसान है और यह काम करता है।

यहां एक सरल कार्य है जो प्रो कुंजी की उपस्थिति की जांच करता है, और जांच करता है कि पैकेज हस्ताक्षर मुफ़्त संस्करण से मेल खाता है:

 protected static boolean isProInstalled(Context context) { PackageManager manager = context.getPackageManager(); if (manager.checkSignatures(context.getPackageName(), "com.your.pro.key") == PackageManager.SIGNATURE_MATCH) { //Pro key installed, and signatures match return true; } return false; } 

Yoki.org पर उल्लिखित विधि के आधार पर कोड इस मंच पोस्ट से है

जैसा कि किसी और ने बताया, हाँ, आप पेड 'कुंजी' ऐप की उपस्थिति का पता लगाने के लिए पैकेज मैनेजर का उपयोग कर सकते हैं, लेकिन यह समस्याग्रस्त है अगर कोई केवल भुगतान किए गए संस्करण को स्थापित करता है, तो निःशुल्क संस्करण को अनइंस्टॉल करता है, आदि। उपयोगकर्ताओं को रखने के लिए परेशान हो सकते हैं। अपने ऐप का काम करने के लिए लगभग दो डाउनलोड एफडब्ल्यूआईडब्ल्यू, मुझे लगता है कि डबलस्टिविस्ट एयर सिंक यह इस तरह से करता है। मुझे पूरा यकीन है कि एयर सिंक एप्लिकेशन मुफ्त DoubleTwist ऐप में कार्यक्षमता को सक्षम करने के अलावा कुछ भी नहीं करता है।

एक अधिक व्यावहारिक मार्ग के लिए दो अलग-अलग ऐप्स हो सकते हैं, फिर एक ContentProvider और / या sharedUserId का उपयोग करके एक से दूसरे को प्रीफ़ेस और डेटा आयात करने की क्षमता दें । आप साझा लाइब्रेरी प्रोजेक्ट का उपयोग करके अपने अधिकांश कोड को साझा कर सकते हैं। हालांकि इसका मतलब यह है कि दोनों ऐप्स को एक अलग सामग्री यूआरआई का उपयोग करने की आवश्यकता है, क्योंकि दो ऐप उसी प्राधिकरण का उपयोग नहीं कर सकते हैं, जो एक तरह की पीड़ा है, क्योंकि आपके साझा लाइब्रेरी कोड में आपके जैसे कोई स्थिर CONTENT_URI या AUTHORITY फ़ील्ड नहीं हो सकता है सामान्यतः एक ContentProvider कार्यान्वयन में मिलते हैं

मुझे लगता है कि दो अलग-अलग ऐप्लिकेशन दो या अधिक अलग-अलग कोडबेस के साथ जाने का तरीका है, क्योंकि दो परियोजनाओं के बीच कोड की प्रतिलिपि बनाना वास्तव में आसान हो सकता है, साझा लाइब्रेरी को सभी प्रकार के स्विचेस को सक्षम या अक्षम करने के लिए बनाए रखने की कोशिश करने से एक निःशुल्क और सशुल्क संस्करण के बीच सुविधाएं

वास्तव में, एक ऐप का उपयोग करने और लाइसेंस का उपयोग करने के लिए edgman की सिफारिश शायद ऐप के मुफ्त और भुगतान किए गए संस्करण को प्रबंधित करने का सबसे अच्छा तरीका है। यह ऊपर सूचीबद्ध सभी समस्याओं को हल करता है, हालांकि निष्पक्ष होना मैंने अभी तक लाइसेंसिंग का इस्तेमाल नहीं किया है

संपादित लाइसेंस केवल भुगतान किए गए ऐप (बमर) के लिए ही होने की अनुमति देता है, इसलिए यदि आप एक नि: शुल्क संस्करण की पेशकश करना चाहते हैं तो यह न जाने वाला है। हालांकि , निशुल्क / भुगतान किए गए संस्करण को प्रबंधित करने के लिए इन-ऐप बिलिंग "सही" तरीका हो सकता है। ओपी के लिए शायद यह ठीक है लेकिन मुझे लगता है कि उपयोगकर्ता के डिवाइस पर हमेशा इंस्टॉल किए जाने वाले दो ऐप्स की आवश्यकता नहीं होती है। अगर कोई भुगतान करने वाला उपयोगकर्ता किसी नए डिवाइस पर ऐप इंस्टॉल करता है, तो पहले लेन-देन डाउनलोड करना संभवतः प्रतीत होता है, इसलिए उन्हें दो बार भुगतान नहीं करना पड़ता है।

बशर्ते दोनों ऐप एक ही डेवलपर से हैं और एक ही कुंजी द्वारा हस्ताक्षरित हैं, उन्हें निजी तौर पर जानकारी साझा करने में सक्षम होना चाहिए आप संभवतः एक फ़ाइल का उपयोग कर सकते हैं (MODE_PRIVATE के साथ संग्रहीत), लेकिन मुझे लगता है कि साझा मार्ग का उपयोग करने के लिए सबसे आसान मार्ग है – सशुल्क ऐप में ध्वज सेट करें, जिसे निःशुल्क एक द्वारा पढ़ा जाएगा http://developer.android.com/guide/topics/data/data-storage.html देखें। पता नहीं है कि यह मुश्किल हो सकता है, खासकर जड़ें उपकरणों पर …

एक अन्य तरीका यह देखना होगा कि भुगतान किए गए ऐप इंस्टॉल हो गया है या नहीं, उदाहरण के लिए, यह जांचने के लिए कि क्या वह किसी विशेष आशय को स्वीकार करता है। यह भी देखें: http://developer.android.com/resources/articles/can-i-use-this-intent.html ; उस उदाहरण में वे जांचते हैं कि ZXing का बारकोड स्कैनर उस तरफ उपलब्ध है या नहीं।

किसी भी मामले में, इस विचार पर एक और मोड़ होगा कि आप केवल एक भुगतान के साथ कई ऐप्लिकेशंस "सक्षम" कर सकते हैं, अगर आप चाहें तो। आपका सशुल्क ऐप एक सरल "इस डेवलपर का समर्थन" होगा, जो आपके सभी ऐप्स से विज्ञापन निकाल देगा। यह एक दिलचस्प भुगतान मॉडल IMHO है

यह एक उदाहरण है कि यह कैसे किया जा सकता है:

 Intent unlockerAppPresence = null; APP_LITE_VERSION = false; try { unlockerAppPresence = context.getPackageManager().getLaunchIntentForPackage("nameofthepackagethatunlockyoursoftware"); } catch (Exception e1) { APP_LITE_VERSION = true; } if (unlockerAppPresence == null) APP_LITE_VERSION = true; 

ऐप के डेवलपर हस्ताक्षर की जांच के साथ इसे जुडाइये (जैसा कि @ फैडर द्वारा नोट किया गया है) और आपको जाना अच्छा होगा।

क्या मुफ्त में केवल एक नि: शुल्क / डेमो ऐप का वितरण करता है और इन्हें इन-ऐप को कार्यान्वित करने में सहायता करता है? इसलिए केवल एक ही ऐप उपयोगकर्ता को इंस्टॉल करना होगा, वे बुनियादी फ़ंक्शन की जांच कर सकते हैं और ऐसे "$ 1,99 में नवीनीकृत" जैसे एक बटन होंगे जो इन-ऐप खरीदारी को कॉल करेंगे।

जाहिर है मैं 50 प्रतिष्ठा के बिना टिप्पणी नहीं कर सकता, इसलिए मैं इसे अपने जवाब में डालूंगा।

दूसरों द्वारा उद्धृत पैकेज मैनेजर पद्धति एक अच्छा और आसान तरीका है, लेकिन जैसा कि हैकबोड में उल्लेख किया गया है, दो संस्थापित अनुप्रयोग होने से उपयोगकर्ता के लिए परेशान (और थोड़ा भ्रमित) होता है

हालांकि – और मैंने इसे करने की कोशिश नहीं की है, क्योंकि मैंने अभी तक अपना ऐप प्रकाशित नहीं किया है – ऐसा लगता है कि आप ऐसे चर को रख सकते हैं जो झूठे के रूप में शुरू होता है और फिर सही पर अद्यतन करता है अगर प्रो संस्करण स्थापित होता है चर गलत पर वापस नहीं होगा क्योंकि प्रो संस्करण वहां नहीं है उसके बाद, आप उपयोगकर्ता को दोनों संस्करणों में बता सकते हैं कि उन्हें प्रो इंस्टॉल करने की आवश्यकता है, फिर परीक्षण को खोलें और अनलॉक पर क्लिक करें एक बार ऐसा किया जाता है, तो परीक्षण संस्करण एक पूर्ण संस्करण बन जाएगा और आपको सूचित करेगा (यदि यह प्रो संस्करण स्थापित है) कि आप अब प्रो संस्करण को अनइंस्टॉल कर सकते हैं और आपको पूर्ण पहुंच जारी रहेगी।

कुछ इस तरह से:

 String msg = ""; boolean sigMatch = isProInstalled(context); if (unlocked) { // If you get here by clicking a button that goes away once the app is unlocked, then you may never see this. Still, better safe than sorry. msg += "Thanks! You already have access to the full game."; } else { if (sigMatch) { unlocked = true; saveData(); // I assume you already know how to store variables. msg += "Unlock successful. You now have access to the full game." } else { msg += "You are using a Trial version of this game. (blah, blah). To unlock the full version, please purchase XYZ Pro. Install the application and then start this application again and go into this screen again. You should get a message letting you know that the app has been successfully unlocked, after which you may uninstall the Pro version. You do not have to keep it on your device after unlocking the game."; } } if (sigMatch) { msg += " If you like, you may now uninstall the Pro application. You will continue to have full access to XYZ."; } 

अब, यह आपको नहीं बता सकता है कि उपयोगकर्ता प्रो संस्करण के लिए भुगतान किया है या नहीं और फिर 24 घंटों के भीतर इसे वापस लाया है, क्योंकि हैकबोड का भी उल्लेख किया जा सकता है। ** लेकिन ऐसा लगता है कि यह परिदृश्य अक्सर नहीं हो सकता है अगर किसी ने भुगतान किया और फिर उसे लौटा दिया (विशेषकर यदि आप बहुत अधिक चार्ज नहीं कर रहे हैं), तो शायद उन्होंने ऐप का उपयोग करना बंद करने का फैसला किया … या वे इसे चोरी करने का प्रयास कर रहे हैं, इस स्थिति में ऐसा करने के लिए अन्य तरीकों से भी ऐसा किया जा सकता है। यदि यह संभावना आपको चिंतित करती है, तो इन-ऐप बिलिंग आपकी सर्वश्रेष्ठ पसंद हो सकती है लेकिन अगर आप केवल एक साधारण उपाय की तलाश कर रहे हैं जिसके द्वारा आप को आकस्मिक उपयोगकर्ता बाहर रख सकते हैं, और आप उन्हें दो आवेदन हमेशा के लिए स्थापित करने के लिए बाध्य नहीं करना चाहते हैं, तो यह एक विकल्प हो सकता है।

** मुझे लगता है कि आप एक अन्य चर के साथ एक टाइमस्टैम्प रख सकते हैं, और उस उपयोगकर्ता को प्रो संस्करण को उस टाइमस्टैम्प के कुछ घंटों तक स्थापित करने की आवश्यकता होती है, फिर उन्हें स्थापना रद्द करने की अनुमति देते हैं …

सबसे ऐप डेवलपर्स जिस मार्ग पर लेते हैं, वह केवल ऐप का एक संस्करण है, लेकिन "लाइसेंस कुंजी" की उपस्थिति के आधार पर फीचर्स सक्षम (अतिरिक्त) या अक्षम (विज्ञापन) हैं