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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • कोई भी मैन्युअल परीक्षण जो अपग्रेड, बैकअप और रीस्टोर का परीक्षण करता है।

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