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

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

यह पृष्ठ बताता है कि इस परिवर्तन का समर्थन करने के लिए ओईएम को क्या लागू करना चाहिए और कार्यान्वयन को कैसे मान्य करना चाहिए।

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

एंड्रॉइड 13 से शुरू होकर, ऐप्स को सूचनाएं भेजने से पहले सिस्टम से android.permission.POST_NOTIFICATION रनटाइम अनुमति का अनुरोध करके सूचनाएं भेजने के अपने इरादे की घोषणा करनी चाहिए।

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

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

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

निम्न तालिका Android 13 चलाने वाले डिवाइस पर विभिन्न ऐप संस्करणों के लिए अधिसूचना व्यवहार को दर्शाती है:

Android 13 . पर डिवाइस Android 13 या उच्चतर को लक्षित करने वाले ऐप्स Android 13 या उससे पहले के वर्शन को लक्षित करने वाले ऐप्स
नई स्थापना ऐप द्वारा संकेत दिए जाने तक सूचनाएं अवरुद्ध हैं।

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

ओएस द्वारा संकेत दिए जाने तक सूचनाएं अवरुद्ध हैं।

ऐप के फर्स्ट रन पर परमिशन मांगी जाती है।

मौजूदा ऐप (अपग्रेड) ऐप द्वारा संकेत दिए जाने तक सूचनाओं की अनुमति है।

अस्थायी अनुमति तब तक दी जाती है जब तक ऐप पहले क्वालीफाइंग रन पर नहीं पूछता।

ओएस द्वारा संकेत दिए जाने तक अधिसूचनाओं की अनुमति है।

ऐप के पहले रन तक अस्थायी अनुमति दी जाती है।

कार्यान्वयन के लिए दिशानिर्देश

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

क्रियान्वयन के दौरान, Android 13 या इससे पहले के SDK को लक्षित करने वाले ऐप्स के लिए उपयोगकर्ता सूचना व्यवहार पर निम्नलिखित दिशानिर्देशों का उपयोग करें:

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

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

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

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

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

  • बैकअप और पुनर्स्थापना एक Android 13 डिवाइस और पुराने OS संस्करण के डिवाइस के बीच बैकवर्ड और फ़ॉरवर्ड संगत होना चाहिए। Android 13 डिवाइस से उत्पन्न बैकअप डेटा को पुराने OS संस्करण पर पुनर्स्थापित करना होगा, और पुराने OS संस्करण से बैकअप डेटा को Android 13 डिवाइस पर पुनर्स्थापित करना होगा।

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

अधिसूचना और अनुमति प्रणाली में परिवर्तन मान्य करें

कार्यान्वयन को मान्य करने के लिए, निम्नलिखित परीक्षण चलाएँ:

  • PreferencesHelperTest , NotificationManagerServiceTest में निर्दिष्ट इकाई परीक्षण।

  • कोई भी मैनुअल परीक्षण जो उन्नयन और बैकअप का परीक्षण करता है और पुनर्स्थापित करता है।

  • कोई भी सीटीएस अनुमति और अधिसूचना प्रणाली परीक्षण जो सूचनाएं भेजता है। इनमें से कुछ परीक्षण cts/tests/tests/permission/ , NotificationManagerTest.java , और cts/tests/tests/notificationlegacy/ में स्थित हैं।