30

से जुड़ी खाता जानकारी उन लोगों के बीच व्यापक रूप से मांगी गई समस्या है जो एंड्रॉइड में इन-ऐप बिलिंग लागू करते हैं, कि कितने खातों का सामना किया जाता है। यदि किसी उपयोगकर्ता के पास एकाधिक खाते कॉन्फ़िगर किए गए हैं, तो इन-ऐप बिलिंग के लिए किस का उपयोग किया जाएगा (क्योंकि उपयोगकर्ता को खाता चुनने का कोई विकल्प नहीं है)? , एक बहुत खुदाई पैरा here पालन करने के बाद यह समझाने के लिए लगता है ..एप्लिकेशन स्थापना

नोट: परीक्षण खरीदारी करने के लिए, लाइसेंस परीक्षण खाता उपयोगकर्ता की Android डिवाइस पर होना चाहिए। यदि डिवाइस में एक से अधिक खाते हैं, तो ऐप डाउनलोड करने वाले खाते से खरीदारी की जाएगी। यदि किसी भी खाते ने ऐप डाउनलोड नहीं किया है, तो खरीद पहले खाते के साथ किया जाता है। उपयोगकर्ता खरीद खाते का विस्तार करके खरीदारी कर रहे खाते की पुष्टि कर सकते हैं।

मैं ऐप बिलिंग में शामिल खाते का उपयोग करके एक डेवलपर पेलोड बनाता हूं, ताकि इसे समय के बाद या किसी अन्य डिवाइस पर ठीक से पुनर्स्थापित किया जा सके। लेकिन हनीकॉम के बाद, प्राथमिक खाते जैसी कोई चीज़ नहीं है। कोई उपयोगकर्ता किसी भी खाते को हटा सकता है, वह ऐप खरीदा जा सकता है, इस मामले में, खातों की सूची से पहला खाता बिलिंग के लिए उपयोग किया जाएगा। अब, अगर मुझे पता है कि कौन सा खाता इस्तेमाल किया गया था और यदि ऐसा नहीं होता है कि 'वह खाता नहीं है जिसके साथ ऐप इंस्टॉल किया गया था', तो मैं कम से कम उपयोगकर्ता को सूचित कर सकता हूं कि निम्नलिखित खरीद बाद में पुनर्स्थापित नहीं की जाएंगी।

तो, मेरे सवाल है ..

वहाँ कौन-सा खाता एप्लिकेशन डाउनलोड करने के लिए इस्तेमाल किया गया था खोजने के लिए एक तरीका है?

Google Play इस जानकारी का उपयोग करने लगता है। वैसे भी हम इस स्तर तक Google Play के साथ बातचीत कर सकते हैं?

नोट: पैकेज प्रबंधक इस से निपटने के लिए प्रतीत नहीं होता है।

+0

एक ही बात – Greg

+1

में रुचि रखते प्राप्त कर सकते हैं पहली खरीद या पहली बार खुला? (यह निश्चित रूप से प्ले स्टोर स्तर सटीकता के समान नहीं है) – Edison

उत्तर

0

मेरा आंत महसूस मुझे अपने AccountManager और SyncAdapter कॉम्बो बनाने के लिए कहता है। ऐप बिलिंग में जुड़े खाते को नियंत्रित करने के लिए। आप संभावित रूप से अपने सर्वर पर खातों के विलय का समर्थन कर सकते हैं (यदि उपयोगकर्ता कार्रवाई करता है और खातों को मर्ज करने का निर्णय लेता है) और उसी व्यक्ति को बिलिंग या उनके खातों के आधार पर संभाल सकता है। साथ ही यदि आप उसे अनुमति देना चाहते हैं तो उसी डिवाइस पर खरीदारी को पुनर्स्थापित करें। आप Google Play Licensing और उदाहरण के साथ डिवाइस नीतियों आदि को लागू कर सकते हैं। DeviceLimiter

उपयोगकर्ता पुराने खाते अपने AccountManager और SyncAdapter कॉम्बो एक नया खाता और उपयोगकर्ता बन जाएगा तो आदेश की खरीदारी पहले बहाल करने के लिए अपने सर्वर पर खातों का विलय लिए मजबूर किया जाएगा हट जाता है और आप नए "प्राथमिक खाता होता है तो "वहां संग्रहीत जानकारी।

एडिसन की तरह आपकी टिप्पणियों में कहा गया। पहली खरीद से जुड़े खाते को रिकॉर्ड करने और वहां से जाने का एक तरीका होना चाहिए।

ये सिर्फ मेरे विचार हैं और मुझे उम्मीद है कि हम इस पर कुछ प्रकाश डाल सकते हैं और इसका समर्थन करने के लिए "सर्वोत्तम अभ्यास" का पता लगा सकते हैं।

+0

यह समग्र समस्या को हल नहीं करता है। उदाहरण के लिए, हमारे ऐप में हमने खाता प्रबंधक और सिंक एडाप्टर को हमारे सर्वर पर उपयोगकर्ताओं से जुड़े खातों को कार्यान्वित किया है। हमारे ऐप पर प्रत्येक उपयोगकर्ता सदस्यता खरीद सकता है। समस्या यह है कि हम डिवाइस पर एकाधिक उपयोगकर्ताओं का भी समर्थन करना चाहते हैं (जैसे Google अपने अधिकांश ऐप्स पर करता है)। तो उपयोगकर्ता के पास एक ही डिवाइस पर हमारे ऐप पर 2 खाते कैसे हो सकते हैं, दोनों में सदस्यता के साथ? वर्तमान में यह Google Play द्वारा उपयोगकर्ता खातों के संबंध में लागू बिलिंग प्रणाली के कारण लागू करने के लिए बहुत जटिल है। –

+0

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

2

यदि आप खाता मेल आईडी का नाम प्राप्त करना चाहते हैं जो वर्तमान में स्टोर खाता चलाने के लिए कॉन्फ़िगर किया गया है। कृपया इसका इस्तेमाल करें। मैं यहाँ केवल ईमेल नाम के लिए डाल रहा हूँ, लेकिन आप आप खाते है कि पहले ऐसा करने के लिए इस्तेमाल किया गया था रिकॉर्ड कर सकते हैं खाते वस्तु से प्रकार, descriptin की तरह खाते की सभी जानकारी

Pattern emailPattern = Patterns.EMAIL_ADDRESS; 
      Account[] accounts =  AccountManager.get(this).getAccountsByType("com.google"); 
      for (Account account : accounts) { 
       if (emailPattern.matcher(account.name).matches()) { 
        primaryEmailID = account.name; 

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