ऑप्ट-इन करने पर सूचनाएं पाने की अनुमति

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

इस पेज पर बताया गया है कि इस बदलाव के लिए, ओईएम को क्या लागू करना होगा. साथ ही, यह भी बताया गया है कि लागू किए गए बदलाव की पुष्टि कैसे करें.

ऑप्ट-इन करने की सूचनाओं के लिए बदलाव लागू करना

Android 13 से, ऐप्लिकेशन को सूचनाएं भेजने के लिए, सिस्टम से रनटाइम की अनुमति का अनुरोध करके, सूचनाएं भेजने का अपना इरादा ज़ाहिर करना होगा. इसके बाद ही, वे सूचनाएं भेज पाएंगे.android.permission.POST_NOTIFICATION

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

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

ऑप्ट-इन मॉडल में उपयोगकर्ता को मिलने वाली सूचनाओं का व्यवहार

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

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

ऐप्लिकेशन यह तय करते हैं कि अनुमति कब मांगी जाए.

सूचनाएं तब तक ब्लॉक रहेंगी, जब तक ओएस से ऐसा करने के लिए कहा नहीं जाता.

ऐप्लिकेशन को पहली बार चलाने पर अनुमति मांगी जाती है.

मौजूदा ऐप्लिकेशन (अपग्रेड) ऐप्लिकेशन के अनुरोध करने तक सूचनाएं पाने की अनुमति दी जाती है.

यह अनुमति तब तक के लिए दी जाती है, जब तक ऐप्लिकेशन पहली बार अनुमति का अनुरोध नहीं करता.

सूचनाएं तब तक भेजी जा सकती हैं, जब तक ओएस से सूचना भेजने का अनुरोध नहीं किया जाता.

कुछ समय के लिए अनुमति, ऐप्लिकेशन के पहली बार चलने तक के लिए दी जाती है.

लागू करने के लिए दिशा-निर्देश

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

लागू करने के दौरान, Android 13 या इससे पहले के SDK टूल को टारगेट करने वाले ऐप्लिकेशन के लिए, उपयोगकर्ता सूचना से जुड़े इन दिशा-निर्देशों का पालन करें:

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

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

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

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

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

  • बैक अप लेने और डेटा वापस पाने की सुविधा, Android 13 वाले डिवाइस और ओएस के पुराने वर्शन वाले डिवाइस के बीच, आगे और पीछे की ओर काम करनी चाहिए. Android 13 वाले डिवाइस से जनरेट किए गए बैकअप डेटा को, ओएस के पुराने वर्शन वाले डिवाइस पर वापस लाना होगा. साथ ही, ओएस के पुराने वर्शन वाले डिवाइस से जनरेट किए गए बैकअप डेटा को, Android 13 वाले डिवाइस पर वापस लाना होगा.

  • चालू मीडिया सत्रों के लिए दिख रही सूचनाओं को, सूचना की अनुमति से छूट मिलनी चाहिए.

सूचना और अनुमति से जुड़े सिस्टम में किए गए बदलावों की पुष्टि करना

लागू करने की पुष्टि करने के लिए, ये जांचें चलाएं:

  • यूनिट टेस्ट, जैसा कि PreferencesHelperTest, NotificationManagerServiceTest में बताया गया है.

  • अपग्रेड, बैकअप, और रीस्टोर करने की सुविधा की जांच करने वाला कोई भी मैन्युअल टेस्ट.

  • सीटीएस की अनुमति और सूचना सिस्टम की कोई भी ऐसी जांच जो सूचनाएं भेजती है. इनमें से कुछ टेस्ट, cts/tests/tests/permission/, NotificationManagerTest.java, और cts/tests/tests/notificationlegacy/ में मौजूद हैं.