2013-02-25 32 views
13

में प्रति खाता एप इंस्टॉलेशन (अद्वितीय डिवाइस द्वारा निर्धारित) सीमित करें (प्रतिबंधित करें) मैंने एक एंड्रॉइड ऐप प्रकाशित किया है।एंड्रॉइड

समस्या यह है कि अगर कोई मेरा ऐप खरीदता है, तो वह इसे उसी खाते का उपयोग करके कई डिवाइसों पर इंस्टॉल कर सकता है।

क्या मैं स्थापना को कुछ खातों में सीमित कर सकता हूं (मान लें 2) प्रति खाता अद्वितीय डिवाइस?

यदि उपयोगकर्ता इसे उसी खाते के साथ किसी अन्य डिवाइस पर उपयोग करना चाहता है, तो उसे पहले किसी अन्य से अनइंस्टॉल करना होगा।

उदाहरण के लिए, MyBackup Pro only allows two unique devices.

मैं अपने अनुप्रयोग में यह कैसे प्राप्त कर सकते हैं?

+1

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

उत्तर

2

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

+0

मैं इसके लिए सर्वर को बनाए रखना नहीं चाहता हूं। मैं यह जांचना पसंद करूंगा कि क्या Google इसे अपने मैनिफेस्ट या सर्वर (जैसे Google Licsensing करता है) – Programer

+0

आपके ऐप की एक इंस्टॉलेशन को कैसे पता चलेगा कि किसी अन्य डिवाइस पर ऐप की पहले से ही एक इंस्टॉलेशन है? Google ऐसी सुविधा प्रदान कर सकता है लेकिन मुझे नहीं लगता कि वे करते हैं। – FWeigl

+0

मैंने पहले से ही Google Licsencing का उपयोग किया है। वे एक सर्वर प्रदान करते हैं, और प्रोग्राम जांचता है कि फ़ाइल को एक मशीन से दूसरी मशीन में कॉपी किया गया है, और यह Google सर्वर सेवाओं के साथ ऐसा करता है (यह जांचता है कि यह मशीन या खाता इस ऐप को खरीदा है)। मैं चाहता हूं कि यह सर्वर कानूनी खरीद को सीमित करे और न केवल – Programer

10

Google helps you do this

This page helps you set it up.

अधिक विशेष रूप से, it looks like you want to add a DeviceLimiter:

कुछ मामलों में, आप वास्तविक उपकरणों है कि एक ही लाइसेंस का उपयोग करने की अनुमति है की संख्या को सीमित करने के लिए अपने नीति चाहते हो सकता है। यह उपयोगकर्ता को डिवाइस पर लाइसेंस प्राप्त एप्लिकेशन को स्थानांतरित करने और उसी खाता आईडी के अंतर्गत उन डिवाइसों पर एप्लिकेशन का उपयोग करने से रोक देगा। यह किसी उपयोगकर्ता को एप्लिकेशन को से संबंधित खाता जानकारी प्रदान करके अन्य व्यक्तियों को लाइसेंस प्रदान करने से रोक देगा, जो उसके खाते पर उस खाते में साइन इन कर सकते हैं और एप्लिकेशन के लाइसेंस तक पहुंच सकते हैं।

एलवीएल डिवाइस डिवाइसमीटर इंटरफ़ेस प्रदान करके प्रति-डिवाइस लाइसेंसिंग का समर्थन करता है, जो एक ही विधि घोषित करता है, अनुमति दें DeviceAccess()। जब लाइसेंस वैलिडेटर लाइसेंसिंग सर्वर से प्रतिक्रिया का संचालन कर रहा है, तो कॉल को अनुमति देता है DeviceAccess(), प्रतिक्रिया से निकाली गई उपयोगकर्ता आईडी स्ट्रिंग को पास करता है।

आप डिवाइस सीमा का समर्थन नहीं करना चाहते हैं, तो कोई काम की आवश्यकता है - LicenseChecker वर्ग स्वचालित रूप से एक डिफ़ॉल्ट कार्यान्वयन NullDeviceLimiter कहा जाता है का उपयोग करता है। जैसा कि नाम से पता चलता है, NullDeviceLimiter एक "नो-ऑप" श्रेणी है जिसका allowDeviceAccess() विधि सभी उपयोगकर्ताओं और उपकरणों के लिए LICENSED प्रतिक्रिया देता है।

सावधानी: प्रति डिवाइस लाइसेंस सबसे अनुप्रयोगों लिए अनुशंसित नहीं है क्योंकि:

यह जरूरी है कि आप एक उपयोगकर्ता और उपकरणों मानचित्रण प्रबंधन के लिए एक बैकएंड सर्वर प्रदान करते हैं और यह अनजाने में एक उपयोगकर्ता किया जा रहा में परिणाम सकता है किसी अन्य डिवाइस पर वैध रूप से खरीदे गए एप्लिकेशन तक पहुंच से इंकार कर दिया।

के लिए DeviceLimitercan be found here.

स्रोत स्रोत कोड काफी बताते हैं कि कैसे आप आप क्या चाहते हैं लागू करने के लिए DeviceLimiter उपयोग के बारे में जाना चाहते हैं:

/* The LICENSED response from the server contains a user identifier unique to 
* the <application, user> pair. The developer can send this identifier 
* to their own server along with some device identifier (a random number 
* generated and stored once per application installation, 
* {@link android.telephony.TelephonyManager#getDeviceId getDeviceId}, 
* {@link android.provider.Settings.Secure#ANDROID_ID ANDROID_ID}, etc). 
* 
* The more sources used to identify the device, the harder it will be for an 
* attacker to spoof. 
3

दोनों Ascorbin और Yarian उत्तर देने के लिए अच्छे हैं समझाने।

मेरे ज्ञान के अनुसार इसे दो तरीकों से प्रबंधित किया जा सकता है।

1. गूगल यह आत्म

2. करके अपने खुद के कार्यान्वयन

तक की सुविधा देता है एक के बाद एक जांच,

1. गूगल यह स्वयं के द्वारा

एस्कोरबिन का जवाब अच्छी तरह से समझता है कि इसे कैसे कार्यान्वित किया जाए और Google इसे कैसे प्रबंधित करें। तो आशा है कि आपको यह मिल जाएगा। यदि नहीं तो मुझे बताएं।

2. अपने स्वयं के कार्यान्वयन से

आप अपने खुद के सर्वर है तो आप कोड जो स्थापित एप्लिकेशन उपकरणों के लिए जाँच कर सकते हैं। प्रत्येक डिवाइस में अद्वितीय आईएमईआई नंबर होता है ताकि आप आसानी से उसी आईएमईआई नंबर को ट्रैक कर सकें और ऐप की स्थापना या ऐप के काम की अनुमति दे सकें।

नोट: Google डिवाइस को उसी खाते को कॉन्फ़िगर करने पर किसी अन्य डिवाइस में एक ही ऐप का उपयोग करने की अनुमति देता है। इसलिए उस स्थिति में अलग-अलग आईएमईआई या मैक पते के साथ एक ही खाते का पता लगाना संभव हो सकता है।

आशा है कि आपको बिंदु मिल जाएगा।

टिप्पणी करने के लिए स्वतंत्र महसूस करें। :)