অপ্ট-ইন বিজ্ঞপ্তির জন্য বিজ্ঞপ্তি অনুমতি

অ্যান্ড্রয়েড ১৩-এর নোটিফিকেশনগুলো একটি অপ্ট-ইন মডেল ব্যবহার করে, যা পূর্ববর্তী অ্যান্ড্রয়েড সংস্করণগুলো থেকে একটি পরিবর্তন, কারণ সেগুলোতে অপ্ট-আউট মডেল ব্যবহৃত হতো। অ্যান্ড্রয়েড ১৩-এ, সমস্ত অ্যাপকে নোটিফিকেশন পাঠানোর আগে ব্যবহারকারীদের কাছে অনুমতি চাইতে হয়। এই মডেলটি নোটিফিকেশনের কারণে সৃষ্ট বাধা কমাতে, তথ্যের আধিক্য হ্রাস করতে এবং ব্যবহারকারীদের কাছে গুরুত্বপূর্ণ বিষয়গুলোর ওপর ভিত্তি করে কোন নোটিফিকেশনগুলো প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে সাহায্য করে। অপ্ট-ইন মডেলটি সমর্থন করার জন্য, OEM-দের অবশ্যই নোটিফিকেশন এবং রানটাইম পারমিশন সিস্টেমে পরিবর্তন আনতে হবে।

এই পৃষ্ঠায় বর্ণনা করা হয়েছে যে, এই পরিবর্তনকে সমর্থন করার জন্য OEM-দের কী কী বাস্তবায়ন করতে হবে এবং সেই বাস্তবায়নকে কীভাবে যাচাই করতে হবে।

অপ্ট-ইন বিজ্ঞপ্তির জন্য পরিবর্তনগুলি বাস্তবায়ন করুন

অ্যান্ড্রয়েড ১৩ থেকে শুরু করে, অ্যাপগুলোকে নোটিফিকেশন পাঠানোর আগে সিস্টেমের কাছে android.permission.POST_NOTIFICATION রানটাইম পারমিশন চেয়ে তাদের অভিপ্রায় ঘোষণা করতে হবে।

অ্যান্ড্রয়েড ১৩ এবং এর পরবর্তী সংস্করণগুলোতে, কোনো অ্যাপ ব্যবহারকারীকে নোটিফিকেশন পাঠাতে পারবে কি না, সেই সেটিংটি পারমিশন সিস্টেমে সংরক্ষিত থাকে। অ্যান্ড্রয়েড ১৩-এর আগে, এই সেটিংটি নোটিফিকেশন সিস্টেমে সংরক্ষিত থাকত। তাই, কোনো অ্যাপ নোটিফিকেশন পাঠানোর অনুমতিপ্রাপ্ত কি না, সেই সংক্রান্ত বিদ্যমান ডেটা OEM-দের অবশ্যই নোটিফিকেশন সিস্টেম থেকে রানটাইম পারমিশন সিস্টেমে স্থানান্তর করতে হবে। এছাড়াও, অ্যাপ ডেভেলপারদের কাছে সেই ডেটা পৌঁছে দেওয়ার জন্য নোটিফিকেশন সিস্টেমে থাকা বিদ্যমান API-গুলোও OEM-দের রক্ষণাবেক্ষণ করতে হবে।

নোটিফিকেশন এবং পারমিশন সিস্টেমের পরিবর্তনগুলো ব্যবহারকারীর নোটিফিকেশন আচরণের অপ্ট-ইন মডেলের উপর ভিত্তি করে করা হয়েছে এবং এগুলো 'বাস্তবায়ন নির্দেশিকা' বিভাগে বর্ণনা করা হয়েছে।

অপ্ট-ইন মডেলে ব্যবহারকারী বিজ্ঞপ্তির আচরণ

নিচের সারণিতে অ্যান্ড্রয়েড ১৩ চালিত একটি ডিভাইসে বিভিন্ন অ্যাপ সংস্করণের নোটিফিকেশন আচরণ তুলে ধরা হলো:

অ্যান্ড্রয়েড ১৩ চালিত ডিভাইস অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে লক্ষ্য করে তৈরি অ্যাপ অ্যান্ড্রয়েড ১৩ এর চেয়ে নিম্ন সংস্করণকে লক্ষ্য করে তৈরি অ্যাপগুলি
নতুন ইনস্টল অ্যাপ থেকে নির্দেশ না দেওয়া পর্যন্ত নোটিফিকেশন ব্লক করা থাকবে।

অ্যাপগুলো নিয়ন্ত্রণ করে কখন অনুমতি চাইতে হবে।

অপারেটিং সিস্টেম থেকে নির্দেশ না দেওয়া পর্যন্ত নোটিফিকেশন ব্লক করা থাকে।

অ্যাপটি প্রথমবার চালু করার সময় অনুমতি চাওয়া হয়।

বিদ্যমান অ্যাপ (আপগ্রেড) অ্যাপের পক্ষ থেকে নির্দেশ না দেওয়া পর্যন্ত নোটিফিকেশন চালু থাকবে।

প্রথম বাছাইপর্বে অ্যাপটি অনুমতি না চাওয়া পর্যন্ত অস্থায়ী অনুমতি দেওয়া হয়।

অপারেটিং সিস্টেম থেকে নির্দেশ না দেওয়া পর্যন্ত নোটিফিকেশন পাঠানোর অনুমতি রয়েছে।

অ্যাপটি প্রথমবার চালু করা পর্যন্ত অস্থায়ী অনুমতি দেওয়া হয়।

বাস্তবায়নের জন্য নির্দেশিকা

রেফারেন্স বাস্তবায়নের জন্য নোটিফিকেশন সার্ভিস , পারমিশন সার্ভিস এবং পলিসি সার্ভিস দেখুন। ডিফল্ট পারমিশন হ্যান্ডলারগুলির জন্য ব্যতিক্রম প্রয়োগ করতে রানটাইম পারমিশন দেখুন।

বাস্তবায়নের সময়, অ্যান্ড্রয়েড ১৩ বা তার নিম্নতর এসডিকে-কে লক্ষ্য করে তৈরি অ্যাপগুলির ব্যবহারকারী নোটিফিকেশন আচরণের জন্য নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করুন:

  • অ্যান্ড্রয়েড ১৩ ডিভাইসে নতুন ইনস্টল করা অ্যাপগুলো ব্যবহারকারীর অনুমতি ছাড়া কোনো নোটিফিকেশন পাঠাতে পারবে না।
    • যদি অ্যাপটি অ্যান্ড্রয়েড ১৩ এবং তার পরবর্তী সংস্করণগুলোকে লক্ষ্য করে তৈরি করা হয়, তবে অ্যাপটি নিজে থেকে অনুমতি না চাওয়া পর্যন্ত নোটিফিকেশন ব্লক করে রাখতে হবে, কারণ কখন এবং আদৌ ব্যবহারকারীর অনুমতি চাওয়া হবে কিনা, তা অ্যাপটিই নিয়ন্ত্রণ করে।
    • অ্যাপটি যদি অ্যান্ড্রয়েড ১৩-এর চেয়ে নিম্নতর সংস্করণকে লক্ষ্য করে তৈরি করা হয়, তবে অপারেটিং সিস্টেমের অনুমতি না পাওয়া পর্যন্ত নোটিফিকেশন অবশ্যই ব্লক করে রাখতে হবে। অ্যাপটি প্রথমবার চালু করার সময় অপারেটিং সিস্টেমকে অবশ্যই অনুমতির জন্য অনুরোধ জানাতে হবে।
  • অ্যান্ড্রয়েড ১৩-এ আপগ্রেড করার আগে ডিভাইসে থাকা যেকোনো অ্যাপ, অথবা ব্যাকআপ ও রিস্টোরের মাধ্যমে পুনরুদ্ধার করা যেকোনো অ্যাপকে, ব্যবহারকারী প্রথমবার সেই অ্যাপ থেকে কোনো অ্যাক্টিভিটি চালু না করা পর্যন্ত নোটিফিকেশন পাঠানোর অনুমতি দিতে হবে।

    • যেসব অ্যাপ অ্যান্ড্রয়েড ১৩ এবং তার উচ্চতর সংস্করণের এসডিকে টার্গেট করে, সেগুলোর ক্ষেত্রে যদি ব্যবহারকারী পূর্বে অ্যাপ বা NotificationChannel পর্যায়ে অ্যাপটির জন্য নোটিফিকেশন সেটিংস কাস্টমাইজ না করে থাকেন, তবে অস্থায়ী অনুমতিটি প্রত্যাহার করা হবে। এরপর থেকে নোটিফিকেশন পাঠানো চালিয়ে যাওয়ার অনুমতি পাওয়ার আগে অ্যাপগুলোকে অবশ্যই ব্যবহারকারীর কাছে অনুমতি চাইতে হবে।

      যদি অ্যান্ড্রয়েড ১৩-এর জন্য আপগ্রেড করা কোনো অ্যাপের কাছে টেম্পোরারি আপগ্রেড গ্রান্টের মাধ্যমে নোটিফিকেশন পারমিশন না থাকে এবং ব্যবহারকারী অ্যাপটি অন্তত একবার চালু করে থাকেন, তবে পরবর্তীতে যেকোনো ফোরগ্রাউন্ড সার্ভিস চালানোর অনুমতি পাওয়ার আগে অ্যাপটিকে অবশ্যই একটি নোটিফিকেশন পারমিশন প্রম্পট দেখাতে হবে।

    • যেসব অ্যাপের টার্গেট SDK ভার্সন Android 13-এর চেয়ে কম, সেগুলোর ক্ষেত্রে অ্যাপটি অন্তত একটি NotificationChannel তৈরি করার পর প্রথম অ্যাক্টিভিটি চালু হওয়ার মুহূর্তটি ইন্টারসেপ্ট করুন । এতে ব্যবহারকারীকে জিজ্ঞাসা করা হবে যে তিনি অ্যাপটি থেকে নোটিফিকেশন পেতে চান কিনা, এবং একটি অনুমতির প্রম্পট দেখান।

      যদি কোনো ব্যবহারকারী পূর্বে আপগ্রেড করা ডিভাইসে বা ডিভাইসে পুনরুদ্ধার করা হচ্ছে এমন কোনো ব্যাকআপে কোনো অ্যাপের জন্য অ্যাপ বা NotificationChannel স্তরে নোটিফিকেশন সেটিংস কাস্টমাইজ করে থাকেন, তাহলে অ্যাপ স্তরের সেটিংটি অবশ্যই FLAG_PERMISSION_USER_SET ফ্ল্যাগ ব্যবহার করে পারমিশন সিস্টেমে স্থানান্তর করতে হবে। অ্যাপটি বিশেষভাবে অনুরোধ না করলে, ব্যবহারকারীকে আর কোনো নোটিফিকেশন পারমিশনের প্রম্পট দেখানো যাবে না।

  • একটি অ্যান্ড্রয়েড ১৩ ডিভাইস এবং এর পূর্ববর্তী ওএস সংস্করণের ডিভাইসের মধ্যে ব্যাকআপ ও রিস্টোর অবশ্যই ব্যাকওয়ার্ড এবং ফরোয়ার্ড কম্প্যাটিবল হতে হবে। অ্যান্ড্রয়েড ১৩ ডিভাইস থেকে তৈরি করা ব্যাকআপ ডেটা অবশ্যই পূর্ববর্তী ওএস সংস্করণে রিস্টোর করতে হবে, এবং পূর্ববর্তী ওএস সংস্করণের ব্যাকআপ ডেটা অবশ্যই অ্যান্ড্রয়েড ১৩ ডিভাইসে রিস্টোর করতে হবে।

  • চলমান মিডিয়া প্লেব্যাকের সাথে সম্পর্কিত মিডিয়া নোটিফিকেশন অবশ্যই নোটিফিকেশন অনুমতির আওতামুক্ত থাকতে হবে।

বিজ্ঞপ্তি এবং অনুমতি সিস্টেমে পরিবর্তনগুলি যাচাই করুন

বাস্তবায়ন যাচাই করতে, নিম্নলিখিত পরীক্ষাগুলো চালান:

  • PreferencesHelperTest এবং NotificationManagerServiceTest এ নির্দিষ্ট করা ইউনিট টেস্টগুলো।

  • যেকোনো ম্যানুয়াল পরীক্ষা যা আপগ্রেড এবং ব্যাকআপ ও রিস্টোর পরীক্ষা করে।

  • যেকোনো CTS পারমিশন এবং নোটিফিকেশন সিস্টেম টেস্ট যা নোটিফিকেশন পাঠায়। এই টেস্টগুলোর কয়েকটি cts/tests/tests/permission/ , NotificationManagerTest.java , এবং cts/tests/tests/notificationlegacy/ -এ অবস্থিত।