सूचना के रनटाइम की अनुमति

Android 13 (एपीआई लेवल 33) और उसके बाद के वर्शन में, ऐप्लिकेशन से जिन सूचनाओं के लिए छूट नहीं है (इनमें फ़ोरग्राउंड सेवाएं (एफ़जीएस) भी शामिल हैं) उन्हें भेजने के लिए, रनटाइम की अनुमति की सुविधा काम करती है: POST_NOTIFICATIONS. इस बदलाव से, उपयोगकर्ता उन सूचनाओं पर फ़ोकस कर पाते हैं जो उनके लिए सबसे ज़्यादा अहम हैं.

हमारा सुझाव है कि आप जल्द से जल्द Android 13 या इसके बाद के वर्शन को टारगेट करें, ताकि इस सुविधा के ज़्यादा कंट्रोल और सुविधाओं का फ़ायदा लिया जा सके. अगर आपने 12L (एपीआई लेवल 32) या इससे पहले के वर्शन को टारगेट करना जारी रखा, तो अपने ऐप्लिकेशन की सुविधाओं के हिसाब से अनुमति का अनुरोध करने में आपको कुछ समस्याएं आ सकती हैं.

अनुमति का एलान करना

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

आपको अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में जिस अनुमति का एलान करना है वह इस कोड स्निपेट में दिखती है:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

ऐप्लिकेशन की सुविधाएं, अनुमतियों के डायलॉग में उपयोगकर्ता की पसंद पर निर्भर करती हैं

इस डायलॉग में, उपयोगकर्ताओं के पास ये कार्रवाइयां करने का विकल्प होता है:

नीचे दिए गए सेक्शन में बताया गया है कि उपयोगकर्ता की कार्रवाई के आधार पर, आपका ऐप्लिकेशन कैसे काम करता है.

उपयोगकर्ता, "अनुमति दें" को चुनता है

अगर उपयोगकर्ता अनुमति दें विकल्प चुनता है, तो आपका ऐप्लिकेशन ये काम कर सकता है:

उपयोगकर्ता, "अनुमति न दें" को चुनता है

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

चेतावनी: अगर आपका ऐप्लिकेशन 12L या उससे पहले के वर्शन को टारगेट करता है और उपयोगकर्ता अनुमति न दें पर सिर्फ़ एक बार टैप करता है, तो उसे फिर से तब तक अनुरोध नहीं किया जाएगा, जब तक कि इनमें से कोई एक काम न हो जाए:

  • उपयोगकर्ता आपका ऐप्लिकेशन अनइंस्टॉल करके फिर से इंस्टॉल करता है.
  • आपने अपने ऐप्लिकेशन को Android 13 या उसके बाद के वर्शन को टारगेट करने के लिए अपडेट किया हो.

उपयोगकर्ता, डायलॉग बॉक्स से स्वाइप करके बाहर निकलता है

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

नए इंस्टॉल किए गए ऐप्लिकेशन पर असर

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

अनुमतियों का डायलॉग दिखने का समय, आपके ऐप्लिकेशन के टारगेट किए गए SDK टूल के वर्शन पर निर्भर करता है:

  • अगर आपका ऐप्लिकेशन Android 13 या उसके बाद के वर्शन को टारगेट करता है, तो आपके ऐप्लिकेशन के पास यह कंट्रोल करने का पूरा अधिकार होता है कि अनुमति वाला डायलॉग बॉक्स कब दिखे. इस मौके का इस्तेमाल करके, उपयोगकर्ताओं को बताएं कि ऐप्लिकेशन को इस अनुमति की ज़रूरत क्यों है. साथ ही, उन्हें अनुमति देने के लिए बढ़ावा दें.
  • अगर आपका ऐप्लिकेशन 12L (एपीआई लेवल 32) या इससे पहले के वर्शन को टारगेट करता है, तो सूचना चैनल बनाने के बाद, जब आपका ऐप्लिकेशन पहली बार कोई गतिविधि शुरू करता है, तब सिस्टम अनुमति वाला डायलॉग बॉक्स दिखाता है. इसके अलावा, जब आपका ऐप्लिकेशन कोई गतिविधि शुरू करता है और फिर अपना पहला सूचना चैनल बनाता है, तब भी सिस्टम अनुमति वाला डायलॉग बॉक्स दिखाता है. आम तौर पर, यह ऐप्लिकेशन के स्टार्टअप पर होता है.

मौजूदा ऐप्लिकेशन के अपडेट पर असर

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

अनुमति पहले से देने की ज़रूरी शर्तें

आपका ऐप्लिकेशन, सूचनाएं अपने-आप भेजने की सुविधा के लिए ज़रूरी शर्तें पूरी करता है या नहीं, यह इस बात पर निर्भर करता है कि उसमें सूचनाओं का कोई मौजूदा चैनल है या नहीं. साथ ही, यह भी ज़रूरी है कि 12L या उससे पहले के वर्शन वाले डिवाइस पर, उपयोगकर्ता ने ऐप्लिकेशन की सूचनाएं साफ़ तौर पर बंद न की हों.

अगर उपयोगकर्ता ने Android 12L या उससे पहले के वर्शन वाले डिवाइस पर, आपके ऐप्लिकेशन के लिए सूचनाएं पाने की सुविधा बंद की है, तो डिवाइस को Android 13 या उसके बाद के वर्शन पर अपग्रेड करने पर भी यह सेटिंग लागू रहेगी.

छूट

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

मीडिया सेशन

मीडिया सेशन से जुड़ी सूचनाओं पर, इस बदलाव का असर नहीं पड़ेगा.

ऐसे ऐप्लिकेशन जिन्हें फ़ोन कॉल को खुद मैनेज करने के लिए कॉन्फ़िगर किया गया है

अगर आपका ऐप्लिकेशन, फ़ोन कॉल को खुद मैनेज करने के लिए कॉन्फ़िगर किया गया है, तो आपको POST_NOTIFICATIONS अनुमति की ज़रूरत नहीं है. इससे आपके ऐप्लिकेशन को Notification.CallStyle सूचना स्टाइल का इस्तेमाल करके सूचनाएं भेजने में मदद मिलेगी.

अगर आपका ऐप्लिकेशन इन सभी कामों को करता है, तो सिस्टम यह मान लेता है कि आपने ऐप्लिकेशन को फ़ोन कॉल मैनेज करने के लिए कॉन्फ़िगर किया है:

  1. MANAGE_OWN_CALLS की अनुमति का एलान करता है.
  2. ConnectionService इंटरफ़ेस को लागू करता है.
  3. registerPhoneAccount() को कॉल करके, डिवाइस की टेलीकॉम सेवा देने वाली कंपनी के साथ रजिस्टर करता है.

अपने ऐप्लिकेशन का परीक्षण करें

यह पता लगाया जा सकता है कि Android 13 या उसके बाद के वर्शन वाले डिवाइस पर, सूचना की अनुमति का इस्तेमाल करने पर आपके ऐप्लिकेशन पर क्या असर पड़ता है. Android डीबग ब्रिज (ADB) कमांड के इन सेट की मदद से, जांच के लिए इस्तेमाल किए जा रहे डिवाइस को रीसेट किए बिना, उपयोगकर्ता की पसंद और डिवाइस के अपग्रेड के सबसे सामान्य क्रम को सिम्युलेट किया जा सकता है:

  • ऐप्लिकेशन को हाल ही में, Android 13 या इसके बाद के वर्शन पर चलने वाले डिवाइस पर इंस्टॉल किया गया हो:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • उपयोगकर्ता ने सूचनाएं चालू रखी हैं और ऐप्लिकेशन को 12L या इससे पहले के वर्शन पर इंस्टॉल किया है. इसके बाद, डिवाइस को Android 13 या इसके बाद के वर्शन पर अपग्रेड किया जाता है, तो:

    adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • जब ऐप्लिकेशन को 12L या इससे पहले के वर्शन पर इंस्टॉल किया जाता है, तो उपयोगकर्ता मैन्युअल तरीके से सूचनाएं बंद कर देता है. इसके बाद, डिवाइस को Android 13 या इसके बाद के वर्शन पर अपग्रेड किया जाता है, तो:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed

सबसे सही तरीके

इस सेक्शन में, सूचना पाने की नई अनुमति को अपने ऐप्लिकेशन में सबसे असरदार तरीके से इस्तेमाल करने के कई तरीके बताए गए हैं.

अपने ऐप्लिकेशन के टारगेट SDK टूल का वर्शन अपडेट करना

अनुमति का डायलॉग बॉक्स कब दिखे, इस बारे में अपने ऐप्लिकेशन को ज़्यादा सुविधाएं देने के लिए, ऐप्लिकेशन को अपडेट करें, ताकि वह Android 13 या उसके बाद के वर्शन को टारगेट कर सके.

सूचना की अनुमति का अनुरोध दिखाने के लिए इंतज़ार करना

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

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

  • उपयोगकर्ता, "सूचना वाली घंटी" बटन पर टैप करता है.
  • उपयोगकर्ता किसी व्यक्ति के सोशल मीडिया खाते को फ़ॉलो करने का विकल्प चुनता है.
  • उपयोगकर्ता, खाने की डिलीवरी के लिए ऑर्डर सबमिट करता है.

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

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

उपयोगकर्ता के साइन इन करने के बाद, उसे यात्रा के अपडेट पाने के लिए एक न्योता मिलता है. उपयोगकर्ता के &#39;मैं तैयार हूं&#39; बटन दबाने के बाद, ऐप्लिकेशन नई अनुमति का अनुरोध करता है. इस वजह से, सिस्टम डायलॉग दिखता है
पहला डायग्राम. सूचना की अनुमति का अनुरोध करने के लिए, उपयोगकर्ता के हिसाब से सुझाया गया वर्कफ़्लो. मिडल स्क्रीन सिर्फ़ तब ज़रूरी है, जब shouldShowRequestPermissionRationale() true दिखाता है.

संदर्भ के हिसाब से अनुमति का अनुरोध करना

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

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

यह देखना कि आपका ऐप्लिकेशन सूचनाएं भेज सकता है या नहीं

आपका ऐप्लिकेशन कोई सूचना भेजने से पहले, पुष्टि करें कि उपयोगकर्ता ने आपके ऐप्लिकेशन के लिए सूचनाएं चालू की हैं या नहीं. ऐसा करने के लिए, areNotificationsEnabled() को कॉल करें.

अनुमति का इस्तेमाल ज़िम्मेदारी से करना

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