Wear OS पर अनुमतियों का अनुरोध करें

keywords: wear, permissions, collection_guideslandingwear image_path: images/training/wear/multiple_permissions.png

Wear OS पर अनुमतियों का अनुरोध करने का तरीका, मोबाइल ऐप्लिकेशन में अनुमतियों का अनुरोध करने के तरीके जैसा ही होता है. हालांकि, इसमें इस्तेमाल के कुछ और उदाहरण भी शामिल हैं. इस दस्तावेज़ में यह मान लिया गया है कि आपको Android की अनुमतियों के काम करने के तरीके के बारे में जानकारी है. अगर ऐसा नहीं है, तो Android पर अनुमतियां किस तरह काम करती हैं, यह देखें.

मोबाइल ऐप्लिकेशन की तरह ही, Wear ऐप्लिकेशन को भी कुछ सुविधाओं को ऐक्सेस करने के लिए, उपयोगकर्ता से अनुमतियां लेनी होती हैं. Wear ऐप्लिकेशन में, काम की सुविधाएं उपलब्ध कराएं. इसके लिए, किसी भी तरह की अनुमति का अनुरोध न करें.

अनुमति से जुड़े उदाहरण

Wear OS पर नुकसान पहुंचाने वाली अनुमतियों का अनुरोध करते समय, आपको कई तरह की समस्याएं आ सकती हैं:

  • Wear ऐप्लिकेशन, पहनने लायक डिवाइस पर चल रहे ऐप्लिकेशन के लिए अनुमतियों का अनुरोध करता है.

  • Wear ऐप्लिकेशन, फ़ोन पर चल रहे ऐप्लिकेशन के लिए अनुमतियों का अनुरोध करता है.

  • फ़ोन ऐप्लिकेशन, पहने जाने वाले डिवाइस पर चल रहे ऐप्लिकेशन के लिए अनुमतियों का अनुरोध करता है.

  • फ़ोन ऐप्लिकेशन, कई अनुमतियों का अनुरोध करता है. इनका इस्तेमाल सिर्फ़ तब किया जा सकता है, जब पहनने लायक डिवाइस कनेक्ट हो.

इन सभी स्थितियों को काम करने वाले ऐप्लिकेशन में देखने के लिए, GitHub पर ExerciseSampleCompose सैंपल देखें.

यहां दिए गए सेक्शन में, इन सभी स्थितियों के बारे में बताया गया है. अनुमतियों का अनुरोध करने के बारे में ज़्यादा जानकारी पाने के लिए, अनुमति के अनुरोध के पैटर्न सेक्शन देखें.

Wear ऐप्लिकेशन, पहनने लायक डिवाइस के लिए अनुमति का अनुरोध करता है

जब Wear ऐप्लिकेशन, पहनने योग्य डिवाइस पर चल रहे किसी ऐप्लिकेशन के लिए अनुमति का अनुरोध करता है, तो सिस्टम एक डायलॉग बॉक्स दिखाता है. इससे उपयोगकर्ता को उस अनुमति के लिए प्रॉम्प्ट किया जाता है. अपने ऐप्लिकेशन में, अनुमतियों का अनुरोध सिर्फ़ तब करें, जब उपयोगकर्ता को यह साफ़ तौर पर पता हो कि किसी कार्रवाई को पूरा करने के लिए, अनुमतियों की ज़रूरत क्यों है.

अनुमति के सिद्धांतों को पढ़ें, ताकि यह पक्का किया जा सके कि उपयोगकर्ताओं को सबसे अच्छा अनुभव मिले. साथ ही, ज़रूरत के मुताबिक shouldShowRequestPermissionRationale() को देखें और अतिरिक्त जानकारी दें.

अगर किसी ऐप्लिकेशन या स्मार्टवॉच की होम स्क्रीन को एक साथ एक से ज़्यादा अनुमतियों की ज़रूरत होती है, तो अनुमति के अनुरोध एक के बाद एक दिखते हैं.

अनुमति मांगने वाली कई स्क्रीन, एक के बाद एक दिखती हैं.
पहली इमेज. अनुमति मांगने वाली स्क्रीन एक के बाद एक दिखती हैं.

Wear ऐप्लिकेशन, फ़ोन ऐक्सेस करने की अनुमति मांगता है

जब Wear ऐप्लिकेशन, फ़ोन से जुड़ी किसी अनुमति का अनुरोध करता है, तब उसे उपयोगकर्ता को फ़ोन पर भेजना होगा. उदाहरण के लिए, अगर Wearable ऐप्लिकेशन को ऐप्लिकेशन के मोबाइल वर्शन पर मौजूद फ़ोटो या अन्य संवेदनशील डेटा को ऐक्सेस करना है, तो उसे उपयोगकर्ता को फ़ोन पर भेजना होगा, ताकि वह अनुमति दे सके. यहां फ़ोन ऐप्लिकेशन, गतिविधि का इस्तेमाल करके उपयोगकर्ता को अतिरिक्त जानकारी दे सकता है. गतिविधि में दो बटन शामिल करें: एक अनुमति देने के लिए और दूसरा अनुमति न देने के लिए.

Wear ऐप्लिकेशन, उपयोगकर्ता को अनुमति देने के लिए फ़ोन पर भेजता है.
दूसरी इमेज. उपयोगकर्ता को फ़ोन पर भेजें, ताकि वह अनुमति दे सके.

फ़ोन ऐप्लिकेशन, स्मार्टवॉच को ऐक्सेस करने की अनुमति मांगता है

अगर उपयोगकर्ता फ़ोन ऐप्लिकेशन में है और ऐप्लिकेशन को स्मार्टवॉच से जुड़ी अनुमति की ज़रूरत है, तो फ़ोन ऐप्लिकेशन उपयोगकर्ता को स्मार्टवॉच पर भेजता है, ताकि वह अनुमति स्वीकार कर सके. उदाहरण के लिए, अगर फ़ोन के डिसकनेक्ट होने पर संगीत को पहले से लोड करना है, तो स्मार्टवॉच से जुड़ी अनुमति की ज़रूरत होगी. ऐप्लिकेशन का Wearable वर्शन, सिस्टम की अनुमतियों वाले डायलॉग को ट्रिगर करने के लिए, requestPermissions() तरीके का इस्तेमाल करता है.

फ़ोन ऐप्लिकेशन, उपयोगकर्ता को अनुमति देने के लिए स्मार्टवॉच पर भेजता है.
तीसरी इमेज. उपयोगकर्ता को अनुमति देने के लिए, उसे वियरेबल डिवाइस पर भेजें.

फ़ोन ऐप्लिकेशन एक साथ कई अनुमतियों का अनुरोध करता है

चौथी इमेज. अनुमतियों वाला डायलॉग, जो कंपैनियन डिवाइस की प्रोफ़ाइल का इस्तेमाल करके, एक ही अनुरोध में कई अनुमतियों का अनुरोध करता है.

Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन पर काम करने वाले पार्टनर ऐप्लिकेशन, स्मार्टवॉच से कनेक्ट होने पर कंपैनियन डिवाइस की प्रोफ़ाइलों का इस्तेमाल कर सकते हैं. प्रोफ़ाइल का इस्तेमाल करने से, डिवाइस के टाइप के हिसाब से अनुमतियों के सेट को एक ही चरण में बंडल करके, रजिस्ट्रेशन की प्रोसेस को आसान बनाया जा सकता है.

डिवाइस कनेक्ट होने के बाद, बंडल की गई अनुमतियां, कंपैनियन ऐप्लिकेशन को दी जाती हैं. ये अनुमतियां सिर्फ़ तब तक मान्य रहती हैं, जब तक डिवाइस कनेक्ट रहता है. ऐप्लिकेशन को मिटाने या उसे हटाने से, अनुमतियां हट जाती हैं. ज़्यादा जानकारी के लिए, AssociationRequest.Builder.setDeviceProfile() देखें.

अनुमति के अनुरोध के पैटर्न

उपयोगकर्ताओं से अनुमतियां मांगने के अलग-अलग पैटर्न होते हैं. प्राथमिकता के क्रम में, ये हैं:

  • अनुमति तब मांगें, जब किसी सुविधा के लिए अनुमति ज़रूरी हो, लेकिन ऐप्लिकेशन को चलाने के लिए अनुमति ज़रूरी न हो.

  • जब अनुमति मांगने की वजह साफ़ तौर पर न बताई गई हो और ऐप्लिकेशन को चलाने के लिए अनुमति ज़रूरी न हो, तो कॉन्टेक्स्ट के हिसाब से जानकारी दें.

इन पैटर्न के बारे में यहां बताया गया है.

कॉन्टेक्स्ट के हिसाब से सवाल पूछना

अनुमतियों का अनुरोध तब करें, जब उपयोगकर्ता को साफ़ तौर पर पता हो कि किसी कार्रवाई को पूरा करने के लिए अनुमति क्यों ज़रूरी है. उपयोगकर्ता किसी सुविधा के लिए अनुमति तब देते हैं, जब उन्हें पता होता है कि यह अनुमति उस सुविधा से जुड़ी है जिसका उन्हें इस्तेमाल करना है.

उदाहरण के लिए, किसी ऐप्लिकेशन को आस-पास की दिलचस्पी वाली जगहों को दिखाने के लिए, उपयोगकर्ता की जगह की जानकारी की ज़रूरत पड़ सकती है. जब उपयोगकर्ता आस-पास की जगहें खोजने के लिए टैप करता है, तो ऐप्लिकेशन तुरंत जगह की जानकारी के इस्तेमाल की अनुमति मांग सकता है. ऐसा इसलिए, क्योंकि आस-पास की जगहें खोजने और जगह की जानकारी के इस्तेमाल की अनुमति के बीच साफ़ तौर पर संबंध है. इस रिश्ते के बारे में साफ़ तौर पर पता होने की वजह से, ऐप्लिकेशन को शिक्षा से जुड़ी अतिरिक्त स्क्रीन दिखाने की ज़रूरत नहीं होती.

ऐप्लिकेशन, अनुमति का अनुरोध तब करता है, जब यह साफ़ तौर पर ज़रूरी हो.
पांचवीं इमेज. कॉन्टेक्स्ट के हिसाब से अनुमति मांगें.

कॉन्टेक्स्ट के हिसाब से जानकारी देना

छठी इमेज में, कॉन्टेक्स्ट के हिसाब से शिक्षा देने का उदाहरण दिखाया गया है. ऐप्लिकेशन को टाइमर शुरू करने के लिए अनुमतियों की ज़रूरत नहीं होती. हालांकि, इनलाइन एजुकेशनल क्यू से पता चलता है कि गतिविधि का कुछ हिस्सा—जगह की जानकारी का पता लगाना—लॉक है. जब उपयोगकर्ता क्यू पर टैप करता है, तो अनुमति का अनुरोध करने वाली स्क्रीन दिखती है. इससे उपयोगकर्ता को जगह की जानकारी का पता लगाने की सुविधा को अनलॉक करने का विकल्प मिलता है.

shouldShowRequestPermissionRationale() तरीके का इस्तेमाल करें, ताकि आपका ऐप्लिकेशन यह तय कर सके कि ज़्यादा जानकारी देनी है या नहीं. ज़्यादा जानकारी के लिए, ऐप्लिकेशन की अनुमतियों का अनुरोध करना लेख पढ़ें. इसके अलावा, यह भी देखा जा सकता है कि GitHub पर मौजूद स्पीकर के सैंपल ऐप्लिकेशन में, जानकारी कैसे दिखाई जाती है.

जब ऐप्लिकेशन को अनुमति की ज़रूरत होती है, तब वह बताता है कि अनुमति क्यों ज़रूरी है.
छठी इमेज. कॉन्टेक्स्ट के हिसाब से जानकारी दें.

अनुरोध अस्वीकार होने पर कार्रवाई करना

अगर उपयोगकर्ता, किसी ऐसी अनुमति के लिए अनुरोध को अस्वीकार करता है जो किसी गतिविधि के लिए ज़रूरी नहीं है, तो उसे गतिविधि जारी रखने से न रोकें. अगर अनुमति न देने की वजह से, गतिविधि के कुछ हिस्से बंद कर दिए गए हैं, तो विज़ुअल और कार्रवाई करने लायक फ़ीडबैक दें.

सातवीं इमेज में, लॉक आइकॉन का इस्तेमाल करके यह दिखाया गया है कि कोई सुविधा लॉक है. ऐसा इसलिए है, क्योंकि उपयोगकर्ता ने इस सुविधा को इस्तेमाल करने की अनुमति नहीं दी है.

जब उपयोगकर्ता अनुमति नहीं देता है, तो उससे जुड़ी सुविधा के बगल में लॉक आइकॉन दिखता है.
सातवीं इमेज. लॉक आइकॉन में दिखाया गया है कि अनुमति न मिलने की वजह से कोई सुविधा लॉक है.

जब पहने जाने वाले डिवाइस के लिए अनुमति मांगने वाला डायलॉग बॉक्स, दूसरी बार दिखता है, तो इसमें अस्वीकार करें, फिर से न दिखाएं विकल्प शामिल होता है. अगर उपयोगकर्ता यह विकल्प चुनता है, तो आने वाले समय में इस अनुमति को देने का सिर्फ़ एक तरीका है. इसके लिए, उसे पहने जाने वाले डिवाइस के Settings ऐप्लिकेशन में जाना होगा.

सिस्टम, अनुमति का अनुरोध बंद करने का विकल्प देता है.
आठवीं इमेज. उपयोगकर्ता, अनुमति के उस अनुरोध को ऐक्सेस कर सकता है जिसे Settings में जाकर पहले दो बार अस्वीकार किया गया था.

अनुमति न मिलने की समस्या को हल करने के बारे में ज़्यादा जानें.

सेवाओं के लिए अनुमतियां

सिर्फ़ कोई गतिविधि, requestPermissions() तरीके को कॉल कर सकती है. इसलिए, अगर उपयोगकर्ता किसी सेवा का इस्तेमाल करके आपके ऐप्लिकेशन से इंटरैक्ट करता है, तो सेवा को अनुमति का अनुरोध करने से पहले एक गतिविधि खोलनी होगी. उदाहरण के लिए, वॉच फ़ेस के ज़रिए. इस गतिविधि में, इस बारे में ज़्यादा जानकारी दें कि अनुमति क्यों ज़रूरी है.

आम तौर पर, वॉच फ़ेस के लिए अनुमतियों का अनुरोध न करें. इसके बजाय, कॉम्प्लिकेशन लागू करें और उपयोगकर्ता को यह चुनने दें कि उसे कॉम्प्लिकेशन के ज़रिए कौनसा डेटा दिखाना है.

सेटिंग

कोई भी व्यक्ति, Wear ऐप्लिकेशन की अनुमतियों को सेटिंग में जाकर कभी भी बदल सकता है. जब उपयोगकर्ता कोई ऐसी कार्रवाई करने की कोशिश करता है जिसके लिए अनुमति की ज़रूरत होती है, तो सबसे पहले checkSelfPermission() तरीके को कॉल करें. इससे यह पता चलेगा कि ऐप्लिकेशन के पास कार्रवाई करने की अनुमति है या नहीं.

यह जांच तब भी करें, जब उपयोगकर्ता ने पहले अनुमति दी हो. ऐसा इसलिए, क्योंकि हो सकता है कि उपयोगकर्ता ने बाद में अनुमति वापस ले ली हो.

उपयोगकर्ता, सेटिंग ऐप्लिकेशन की मदद से अनुमतियां बदल सकता है.
नौवीं इमेज. उपयोगकर्ता, सेटिंग ऐप्लिकेशन का इस्तेमाल करके अनुमतियों में बदलाव कर सकता है.