मुझे Android AccountManager का उपयोग किस लिए करना चाहिए?


154

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


ध्यान दें, मैं 2.1 और उससे अधिक का लक्ष्य बना रहा हूं, इसलिए मैं खाता प्रबंधक का उपयोग कर सकता हूं यदि यह एक समझदार विकल्प है
फिल

7
इस पोस्ट में इस प्रश्न के बारे में एक अनुभाग है: udinic.wordpress.com/2013/04/24/…
Udinic

@ यूडिक - धन्यवाद। मदद के बहुत सारे!
चाड बिंघम

इस विषय को इस साइट पर निपटाया गया है: www.digigene.com/android/accounts-in-android/
अली नेम

यहाँ Android में खाता प्रबंधन के लिए एक पुस्तकालय भी है
अली नेम

जवाबों:


94

यह सवाल थोड़ा पुराना है, लेकिन मुझे लगता है कि यह अभी भी अच्छा है।

AccountManager, SyncAdapterऔर ContentProviderसाथ चलते हैं।

पर तुम कर सकते हो:

AccountManager/ SyncAdapter/ के साथ ContentProvider:

  • AccountManager उपयोगकर्ताओं को उनकी साख को परिभाषित करने के लिए एक केंद्रीय बिंदु (सेटिंग्स> लेखा) देता है
  • एंड्रॉइड यह तय करता है कि कब सिंक्रोनाइज़ेशन के जरिए किया जा सकता है SyncAdapter। यह बैटरी को अनुकूलित करने के लिए अच्छा हो सकता है (उदाहरण के लिए, नेटवर्क डाउन होने पर कोई सिंक नहीं किया जाता है)
  • ContentProviderअनुप्रयोगों में डेटा साझा करने का एक सुविधाजनक तरीका है नोट: एंड्रॉइड पर अंतर-प्रक्रिया संचार के अन्य तरीके हैं ।
  • ContentProviderएक बैकग्राउंड थ्रेड में डेटाबेस ऐक्सेस को शेड्यूलAsyncQueryHanlder करता है । बैकग्राउंड थ्रेड को क्वेरी करने ContentProviderमें मदद करता है , जिससे एप्लीकेशन नॉट रिस्पॉन्सिव (ANR) एरर को रोकता है जबकि आपको थ्रेडिंग को स्पष्ट रूप से हैंडल करने की आवश्यकता नहीं होती है।
  • ContentProviderसंबंध में ContentResolverपर्यवेक्षक: इसका मतलब यह है कि सामग्री को बदलने पर विचारों को सूचित करना आसान है

नीचे पंक्ति : यदि आप किसी वेब संसाधन से डेटा सिंक्रनाइज़ करना चाहते हैं तो फ्रेमवर्क AccountManager/ SyncAdapter/ ContentProviderमदद करता है। एपीआई 7 पर नकली / डंबल कार्यान्वयन आवश्यक है

  • यदि आप केवल डेटा संग्रहीत करना चाहते हैं, तो आपको डेटा संग्रहण के लिए एक सरल तंत्र पर विचार करना चाहिए
  • यदि आपको केवल एक ही संसाधन लाने की आवश्यकता है, तो आप एक का उपयोग कर सकते हैं AsyncTaskLoader
  • यदि आप छवियों को अतुल्यकालिक रूप से लोड करना चाहते हैं, तो आप स्क्वायर पिकासो जैसे विशेष पुस्तकालयों का उपयोग कर सकते हैं
  • यदि आप किसी निश्चित समय पर केवल कुछ कोड निष्पादित करना चाहते हैं, तो आप एक सेवा / अलार्म पर विचार कर सकते हैं
  • केवल API> = 7 से उपलब्ध (यह अब और मायने नहीं रखता)

अंत में, यदि आप फायरबस क्लाउड मैसेजिंग (पहले Google क्लाउड मैसेजिंग) उर्फ ​​"पुश नोटिफिकेशन" पर SyncAdapterगंभीरता से विचार करते हैं , तो नए सिरे से अपडेट और अनुकूलित बैटरी उपयोग के लिए।


1
SDK नमूने में, AccountAuthentificatorActivity एकमात्र वैकल्पिक टुकड़ा है।
आरडीएस

मैं अभी तक इन कक्षाओं से परिचित नहीं हूं, लेकिन क्या इन वर्गों के लिए उपयोगकर्ता संपर्क के बिना फ़ंक्शन कॉल के साथ खाता जोड़ना संभव है? उदाहरण के लिए एक Microsoft विनिमय खाता, Google खाता, POP3 / IMAP खाता जोड़ना। धन्यवाद।
dackyD

@dackyD हाँ, आप प्रोग्राम
rds

धन्यवाद @rds, लेकिन आपके स्पष्टीकरण के आधार पर ऐसा नहीं लगता कि नमूना कोड पर्याप्त है। ऐसा लगता है कि मुझे अपने लक्ष्यों तक पहुँचने के लिए एक सिंक एडेप्टर और एक कंटेंटप्रोवाइडर को लागू करने की आवश्यकता है। मुझे सुधारो अगर मैं गलत हूँ :)
dackyD

बिलकुल सही। यह मेरे पहले पैराग्राफ का अर्थ था, वे एक साथ चलते हैं और दूसरों के बिना एक का उपयोग करना असंभव है।
आरडीएस

23

खाता प्रबंधक वर्ग आपके फ़ोन खातों के साथ एकीकृत है। इसलिए यदि आप सभी गाइडों का पालन करते हैं और इसे सही ढंग से काम कर रहे हैं, तो आप मेनू "सेटिंग्स-> खाते और सिंक" के तहत अपने खाते देखेंगे। वहां से आप उन्हें कस्टमाइज़ कर सकते हैं या उन्हें हटा भी सकते हैं। इसके अलावा खाता प्रबंधक के पास आपके खातों के प्रमाणीकरण टिकटों का कैश है। इसका उपयोग तब भी किया जा सकता है जब आप अपने खाते को सिंक्रनाइज़ करने की योजना नहीं बनाते हैं (जहां तक ​​मुझे पता है)।

यदि आप नहीं चाहते कि आपके खाते उस मेनू के अंतर्गत दिखाई दें, तो आपको AccountManager का उपयोग नहीं करना चाहिए और खातों के डेटा को कहीं और संग्रहीत करना चाहिए (शायद साझा प्राथमिकताओं में) http://developer.android.com/guide/topics/data/data -storage.html


14

से http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/ :

पहेली का पहला टुकड़ा एक खाता प्रमाणक कहलाता है, जो परिभाषित करता है कि उपयोगकर्ता का खाता "खाता और सिंक" सेटिंग में कैसे दिखाई देगा। खाता प्रमाणक को लागू करने के लिए 3 टुकड़ों की आवश्यकता होती है: एक सेवा जो ऑनबाइंड विधि से AbstractAccountAuthenticator का उपवर्ग लौटाती है, उपयोगकर्ता को उनकी साख दर्ज करने के लिए प्रेरित करने के लिए एक गतिविधि, और उपयोगकर्ता द्वारा प्रदर्शित होने पर आपका खाता कैसा दिखना चाहिए यह बताते हुए एक xml फ़ाइल। आपको अपने AndroidManifest.xml पर android.permission.AUTHENTICATE_ACCOUNTS अनुमति भी डालनी होगी।


3
यह एक अच्छा लेख है, लेकिन क्या आपको लगता है कि खाता प्रबंधक केवल उन खातों के लिए है जो संपर्क और ईमेल को सिंक करते हैं, या हमें उपयोगकर्ता आईडी और पासवर्ड वाली किसी भी चीज़ के लिए इसका उपयोग करना चाहिए / कर सकते हैं?
फिल

@Phil: मैंने कभी खाता प्रबंधक का उपयोग नहीं किया है इसलिए मैं आपको नहीं बता सकता। याद रखें कि यह 2.0 के साथ आता है इसलिए यदि आप कम एसडीके वाले उपकरणों पर चलने के इच्छुक हैं तो आपको लॉगिन को संभालने का एक और तरीका खोजना होगा।
मैकरस

6
आप किसी भी तरह के डेटा को सिंक करके किसी भी तरह के खाते के लिए खाता प्रबंधक का उपयोग कर सकते हैं। किसी साइटलाइट डेटाबेस में बुकमार्क को सिंक करने के लिए इसका उपयोग करने के उदाहरण के लिए github.com/maxpower47/PinDroid देखें ।
मैक्सपावर 47

7

AccountManagerनिम्नलिखित कारणों के लिए अच्छा है:

  • सबसे पहले एक खाता प्रकार के तहत ऐप की सुविधाओं तक पहुंच के विभिन्न स्तरों के साथ कई खाता नामों को संग्रहीत करना है। उदाहरण के लिए, वीडियो स्ट्रीमिंग ऐप में, किसी के पास दो खाता नाम हो सकते हैं: एक जिसमें डेमो की एक सीमित संख्या में वीडियो और दूसरे में सभी वीडियो के लिए पूरे महीने की पहुंच होती है। यह उपयोग करने का मुख्य कारण नहीं है Accounts, हालांकि, चूंकि आप इस फैंसी-दिखने वाली Accountsचीज़ की आवश्यकता के बिना अपने ऐप में आसानी से प्रबंधित कर सकते हैं …
  • उपयोग Accountsकरने का अन्य लाभ उपयोगकर्ता द्वारा उपयोगकर्ता द्वारा अनुरोध किए जाने पर हर बार उपयोगकर्ता नाम और पासवर्ड के साथ पारंपरिक प्राधिकरण से छुटकारा पाने के लिए होता है, क्योंकि पृष्ठभूमि में प्रमाणीकरण होता है और उपयोगकर्ता को केवल कुछ विशेष स्थिति में उनके पासवर्ड के लिए कहा जाता है, जो मुझे बाद में मिल जाएगा।
  • Accountsएंड्रॉइड में फीचर का उपयोग करने से अपने स्वयं के खाता प्रकार को परिभाषित करने की आवश्यकता भी दूर हो जाती है। आप संभवतः Google खाते का उपयोग करके प्राधिकरणों के लिए आ गए हैं, जो एक नया खाता बनाने और उपयोगकर्ता के लिए इसकी साख को याद रखने की परेशानी से बचाता है।
  • Accounts सेटिंग्स → खातों के माध्यम से स्वतंत्र रूप से जोड़ा जा सकता है
  • क्रॉस-प्लेटफ़ॉर्म उपयोगकर्ता प्राधिकरण का उपयोग करके आसानी से प्रबंधित किया जा सकता है Accounts। उदाहरण के लिए, ग्राहक अपने एंड्रॉइड डिवाइस और पीसी में एक ही समय में संरक्षित सामग्री का उपयोग कर सकते हैं, बिना आवर्ती लॉगिन की आवश्यकता के।
  • सुरक्षा के दृष्टिकोण से, सर्वर से प्रत्येक अनुरोध में एक ही पासवर्ड का उपयोग करने से गैर-सुरक्षित कनेक्शनों में संभावित ईवेर्सड्रॉपिंग की अनुमति मिलती है। पासवर्ड चोरी रोकने के लिए यहां पासवर्ड एन्क्रिप्शन पर्याप्त नहीं है।
  • अंत में, Accountsएंड्रॉइड में फ़ीचर का उपयोग करने का एक महत्वपूर्ण कारण किसी भी व्यवसाय से जुड़े दो पक्षों को अलग करना है Accounts, जिन्हें ग्राहक (उपयोगकर्ता) की साख से समझौता किए बिना, प्रमाणक और संसाधन स्वामी कहा जाता है। शब्द बल्कि अस्पष्ट लग सकते हैं, लेकिन तब तक हार न मानें जब तक आप निम्नलिखित पैराग्राफ को नहीं पढ़ते ... v

मुझे वीडियो स्ट्रीमिंग ऐप के एक उदाहरण के साथ उत्तरार्द्ध पर विस्तृत करें। कंपनी A, कंपनी के B के साथ अनुबंध में वीडियो स्ट्रीमिंग व्यवसाय का धारक है, जो अपने कुछ सदस्यों को प्रीमियम स्ट्रीमिंग सेवाएं प्रदान करता है। कंपनी बी अपने उपयोगकर्ता को पहचानने के लिए एक उपयोगकर्ता नाम और पासवर्ड विधि नियुक्त करती है। कंपनी ए के लिए बी के प्रीमियम सदस्यों को पहचानने के लिए, एक तरीका यह होगा कि बी से उनमें से सूची प्राप्त करें और समान उपयोगकर्ता नाम / पासवर्ड मिलान तंत्र का उपयोग करें। इस तरह, प्रमाणक और संसाधन स्वामी एक ही हैं (कंपनी ए)। दूसरे पासवर्ड को याद रखने के लिए उपयोगकर्ताओं के दायित्व के अलावा, यह बहुत संभावना है कि वे ए से सेवाओं का उपयोग करने के लिए अपनी कंपनी बी की प्रोफाइल के समान पासवर्ड सेट करें। यह स्पष्ट रूप से अनुकूल नहीं है।

उपरोक्त कमियों को दूर करने के लिए, OAuth पेश किया गया था। प्राधिकरण के लिए एक खुले मानक के रूप में, ऊपर दिए गए उदाहरण में, OAuth यह मांग करता है कि कंपनी बी (प्रमाणीकरणकर्ता) द्वारा प्राधिकृत किया जाए, जो योग्य उपयोगकर्ताओं (तृतीय पक्ष) के लिए एक्सेस टोकन नामक कुछ टोकन जारी करके और फिर कंपनी ए (संसाधन स्वामी) प्रदान करता है। एक टोकन। तो कोई टोकन का मतलब कोई पात्रता नहीं है।

मैंने AccountManagerअपनी वेबसाइट पर इस पर और अधिक जानकारी दी है।

यह खाता प्रबंधक का उपयोग करके एक सरल ऐप है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.