Android 13 में सूचनाएं पाने के लिए, ऑप्ट-इन मॉडल का इस्तेमाल किया जाता है. यह 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/ में मौजूद हैं.