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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • PreferencesHelperTest, NotificationManagerServiceTest में बताई गई यूनिट टेस्ट.

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

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