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 से पहले के वर्शन के SDK को टारगेट करने वाले ऐप्लिकेशन के लिए, अनुमति का अनुरोध दिखाने के लिए, ऐप्लिकेशन के कम से कम एक
NotificationChannelबनाने के बाद, पहली गतिविधि के लॉन्च को इंटरसेप्ट करें. इस अनुरोध में, उपयोगकर्ता से यह पूछा जाता है कि क्या वह ऐप्लिकेशन से सूचनाएं पाना चाहता है.अगर किसी उपयोगकर्ता ने अपग्रेड किए जा रहे डिवाइस पर मौजूद किसी ऐप्लिकेशन या डिवाइस पर रीस्टोर किए जा रहे बैकअप में मौजूद किसी ऐप्लिकेशन के लिए, ऐप्लिकेशन या
NotificationChannelलेवल पर सूचना सेटिंग को पहले ही पसंद के मुताबिक बनाया है, तो ऐप्लिकेशन लेवल की सेटिंग को अनुमति वाले सिस्टम मेंFLAG_PERMISSION_USER_SETफ़्लैग के साथ माइग्रेट करना होगा. उपयोगकर्ता को सूचना की अनुमति का कोई और अनुरोध नहीं दिखाया जाना चाहिए, जब तक कि ऐप्लिकेशन खास तौर पर ऐसा करने के लिए न कहे.
Android 13 वाले डिवाइस और ओएस के पुराने वर्शन वाले डिवाइस के बीच, बैकअप और रीस्टोर की सुविधा, आगे और पीछे, दोनों के साथ काम करनी चाहिए. Android 13 वाले डिवाइस से जनरेट किया गया बैकअप डेटा, ओएस के पुराने वर्शन पर रीस्टोर होना चाहिए. साथ ही, ओएस के पुराने वर्शन से लिया गया बैकअप डेटा, Android 13 वाले डिवाइस पर रीस्टोर होना चाहिए.
मीडिया चलाने के दौरान मिलने वाली मीडिया सूचनाओं को, सूचना की अनुमति से छूट मिलनी चाहिए.
सूचना और अनुमति वाले सिस्टम में किए गए बदलावों की पुष्टि करना
लागू किए गए बदलाव की पुष्टि करने के लिए, ये टेस्ट चलाएं:
PreferencesHelperTest,NotificationManagerServiceTestमें बताई गई यूनिट टेस्ट.अपग्रेड और बैकअप और रीस्टोर की जांच करने वाला कोई भी मैन्युअल टेस्ट.
सीटीएस अनुमति और सूचना वाले सिस्टम से जुड़ी जांच का कोई भी ऐसा टेस्ट जो सूचनाएं भेजता है. इनमें से कुछ टेस्ट, cts/tests/tests/permission/, NotificationManagerTest.java, और cts/tests/tests/notificationlegacy/ में मौजूद हैं.