Android 13 (API লেভেল ৩৩) এবং তার পরবর্তী ভার্সনে কোনও অ্যাপ থেকে ছাড়প্রাপ্ত নয় (ফোরগ্রাউন্ড সার্ভিস (FGS) সহ) বিজ্ঞপ্তি পাঠানোর জন্য রানটাইম অনুমতির সুবিধা আছে: POST_NOTIFICATIONS। এই পরিবর্তন ব্যবহারকারীদের সেইসব বিজ্ঞপ্তিতে ফোকাস করতে সাহায্য করে
যেগুলি তাদের জন্য সবচেয়ে গুরুত্বপূর্ণ।
আমরা সাজেস্ট করি যে আপনি যত তাড়াতাড়ি সম্ভব Android 13 বা তার পরবর্তী ভার্সন টার্গেট করুন যাতে এই ফিচারের অতিরিক্ত কন্ট্রোল ও নমনীয়তার সুবিধা নিতে পারেন। আপনি 12L (API লেভেল ৩২) বা তার নিচের ভার্সন টার্গেট করা চালিয়ে গেলে, আপনার অ্যাপের কার্যকারিতার প্রসঙ্গে অনুমতি চাওয়ার ক্ষেত্রে কিছুটা নমনীয়তা হারাবেন।
অনুমতি ঘোষণা করা
আপনার অ্যাপ থেকে নতুন বিজ্ঞপ্তির অনুমতি চাওয়ার জন্য, Android ১৩-কে টার্গেট করতে আপনার অ্যাপ আপডেট করুন এবং অন্যান্য রানটাইম অনুমতি চাওয়ার মতো একই ধরনের প্রসেস সম্পূর্ণ করুন, যেমনটি নিম্নলিখিত বিভাগে দেখানো হয়েছে।
আপনার অ্যাপের ম্যানিফেস্ট ফাইলে যে অনুমতি ঘোষণা করতে হবে তা নিম্নলিখিত কোড স্নিপেটে দেখা যাবে:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
অ্যাপের ক্ষমতা নির্ভর করে ব্যবহারকারী অনুমতির ডায়ালগে কী বেছে নিয়েছেন তার উপর
এই ডায়ালগে, ব্যবহারকারীদের জন্য নিম্নলিখিত অ্যাকশন উপলভ্য:
- অনুমতি দিন বিকল্প বেছে নিন
- অনুমতি দেবেন না বিকল্প বেছে নিন
- কোনও বোতাম প্রেস না করেই ডায়ালগ থেকে দূরে সোয়াইপ করুন
ব্যবহারকারী কোন অ্যাকশন নিচ্ছেন তার উপর ভিত্তি করে আপনার অ্যাপ কীভাবে কাজ করে তা নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।
"অনুমতি দিন" বিকল্প ব্যবহারকারী বেছে নেন
ব্যবহারকারী অনুমতি দিন বিকল্প বেছে নিলে, আপনার অ্যাপ নিম্নলিখিত কাজ করতে পারবে:
- বিজ্ঞপ্তি পাঠান। সব বিজ্ঞপ্তি চ্যানেল অনুমোদিত।
- ফোরগ্রাউন্ড সার্ভিস সম্পর্কিত বিজ্ঞপ্তি পোস্ট করা। এইসব বিজ্ঞপ্তি বিজ্ঞপ্তি ড্রয়ারে দেখা যায়।
ব্যবহারকারী "অনুমতি দেবেন না" বিকল্প বেছে নিয়েছেন
ব্যবহারকারী অনুমতি দেবেন না বিকল্প বেছে নিলে, আপনার অ্যাপ ছাড় পাওয়ার উপযুক্ত না হলে বিজ্ঞপ্তি পাঠাতে পারবে না। কিছু নির্দিষ্ট ভূমিকা ছাড়া, সব বিজ্ঞপ্তি চ্যানেল ব্লক করা হয়েছে। এটি সেই আচরণের মতো যা ব্যবহারকারী সিস্টেম সেটিংসে আপনার অ্যাপের জন্য সব বিজ্ঞপ্তি ম্যানুয়ালি বন্ধ করলে ঘটে।
ব্যবহারকারী ডায়ালগ থেকে সোয়াইপ করে বেরিয়ে যান
ব্যবহারকারী সোয়াইপ করে ডায়ালগ থেকে বেরিয়ে গেলে—অর্থাৎ, তিনি অনুমতি দিন বা অনুমতি দেবেন না—বিকল্পের মধ্যে কোনওটিই বেছে না নিলে, বিজ্ঞপ্তির অনুমতির স্ট্যাটাস পরিবর্তন হয় না।
নতুন ইনস্টল করা অ্যাপের উপর প্রভাব
কোনও ব্যবহারকারী Android ১৩ বা তার পরবর্তী ভার্সন চলে এমন ডিভাইসে আপনার অ্যাপ ইনস্টল করলে, আপনার অ্যাপের বিজ্ঞপ্তি ডিফল্ট হিসেবে বন্ধ থাকে। আপনার অ্যাপকে বিজ্ঞপ্তি পাঠানোর জন্য অপেক্ষা করতে হবে, যতক্ষণ না আপনি নতুন অনুমতির জন্য অনুরোধ করছেন এবং ব্যবহারকারী আপনার অ্যাপকে সেই অনুমতি দিচ্ছেন।
আপনার অ্যাপের টার্গেট SDK ভার্সনের উপর ভিত্তি করে অনুমতির ডায়ালগ দেখানোর সময় নির্ধারণ করা হয়:
- আপনার অ্যাপ Android 13 বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করলে, অনুমতি ডায়ালগ কখন দেখানো হবে তার সম্পূর্ণ কন্ট্রোল আপনার অ্যাপের কাছে থাকে। এই সুযোগ ব্যবহার করে ব্যবহারকারীদের ব্যাখ্যা করুন যে অ্যাপটির কেন এই অনুমতি প্রয়োজন, তাদের এটি মঞ্জুর করতে উৎসাহিত করুন।
- আপনার অ্যাপ 12L (API লেভেল ৩২) বা তার নিচের ভার্সনকে টার্গেট করলে, আপনি বিজ্ঞপ্তি চ্যানেল তৈরি করার পরে আপনার অ্যাপ প্রথমবার কোনও অ্যাক্টিভিটি শুরু করলে
অথবা আপনার অ্যাপ কোনও অ্যাক্টিভিটি শুরু করে এবং তারপরে প্রথম বিজ্ঞপ্তি চ্যানেল তৈরি করলে, সিস্টেম অনুমতির ডায়ালগ দেখায়। এটি সাধারণত অ্যাপ চালু করার সময় হয়।
সিঙ্গেল-অ্যাক্টিভিটি অ্যাপে, যেমন বেশিরভাগ Compose অ্যাপে,
MainActivityশুরু হলে সিস্টেম ডায়ালগ দেখায়।
আগে থেকে থাকা অ্যাপের আপডেটের উপর প্রভাব
বিজ্ঞপ্তির অনুমতি সংক্রান্ত বিঘ্ন কমাতে, ব্যবহারকারী তার ডিভাইস Android ১৩ বা তার পরবর্তী কোনও ভার্সনে আপগ্রেড করলে, সিস্টেম অটোমেটিক সব উপযুক্ত অ্যাপকে আগে থেকেই অনুমতি দিয়ে দেয়। অন্যভাবে বলতে গেলে, এইসব অ্যাপ ব্যবহারকারীদের বিজ্ঞপ্তি পাঠানো চালিয়ে যেতে পারে এবং ব্যবহারকারীরা রানটাইম অনুমতি সংক্রান্ত কোনও প্রম্পট দেখতে পান না।
প্রি-গ্র্যান্ট অনুমতির জন্য উপযুক্ততা
আপনার অ্যাপ অটোমেটিক প্রি-গ্র্যান্টের জন্য উপযুক্ত হতে হলে, সেটিতে আগে থেকেই বিজ্ঞপ্তি চ্যানেল থাকতে হবে এবং 12L বা তার আগের ভার্সন চলে এমন ডিভাইসে ব্যবহারকারী যেন সেটির বিজ্ঞপ্তি স্পষ্টভাবে বন্ধ না করে দেন।
ব্যবহারকারী যদি 12L বা তার আগের ভার্সন চলে এমন ডিভাইসে আপনার অ্যাপের জন্য বিজ্ঞপ্তি বন্ধ করে দেন, তাহলে ডিভাইসটি Android 13 বা তার পরের ভার্সনে আপগ্রেড করার পরেও সেই বিজ্ঞপ্তি বন্ধই থাকবে।
ছাড়
এই বিভাগে বিজ্ঞপ্তি ও অ্যাপের সেট রয়েছে যেগুলি বিজ্ঞপ্তির অনুমতি সংক্রান্ত আচরণ পরিবর্তনের ক্ষেত্রে প্রযোজ্য নয়। Android ১৩ (API লেভেল ৩৩) বা তার পরবর্তী যেকোনও ভার্সনে, ব্যবহারকারী বিজ্ঞপ্তির অনুমতি না দিলেও, তিনি টাস্ক ম্যানেজার-এ ফোরগ্রাউন্ড সার্ভিস সম্পর্কিত বিজ্ঞপ্তি দেখতে পাবেন, তবে বিজ্ঞপ্তি ড্রয়ার-এ দেখতে পাবেন না।
মিডিয়া সেশন
মিডিয়া সেশন সম্পর্কিত বিজ্ঞপ্তি এই আচরণগত পরিবর্তনের আওতাভুক্ত নয়।
ফোন কল নিজে থেকে ম্যানেজ করার জন্য কনফিগার করা অ্যাপ
আপনার অ্যাপ যদি ফোন কল নিজে থেকে ম্যানেজ করার জন্য নিজেকে কনফিগার করে, তাহলে আপনার অ্যাপের জন্য POST_NOTIFICATIONS অনুমতির প্রয়োজন নেই যাতে এটি Notification.CallStyle বিজ্ঞপ্তি স্টাইল ব্যবহার করে বিজ্ঞপ্তি পাঠাতে পারে।
সিস্টেম আপনার অ্যাপকে সেল্ফ-ম্যানেজিং ফোন কলের জন্য কনফিগার করা হয়েছে বলে বিবেচনা করে যদি এটি নিম্নলিখিত প্রতিটি কাজ করে:
MANAGE_OWN_CALLSঅনুমতি ঘোষণা করে।ConnectionServiceইন্টারফেস প্রয়োগ করে।registerPhoneAccount()নম্বরে কল করে ডিভাইসের টেলিকম পরিষেবা প্রদানকারীর সাথে রেজিস্টার করে।
আপনার অ্যাপ টেস্ট করুন
Android 13 বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসে প্রথমবার ব্যবহার করার সময়, বিজ্ঞপ্তির অনুমতি আপনার অ্যাপকে কীভাবে প্রভাবিত করে তা আপনি মূল্যায়ন করতে পারবেন। নিম্নলিখিত Android ডিবাগ ব্রিজ (ADB) কমান্ডের সেট আপনাকে টেস্ট ডিভাইস রিসেট না করেই ব্যবহারকারীর পছন্দ এবং ডিভাইস আপগ্রেডের সবচেয়ে সাধারণ ক্রম সিমুলেট করতে দেয়:
Android ১৩ বা তার পরবর্তী ভার্সন চলে এমন ডিভাইসে অ্যাপ নতুন ইনস্টল করা হয়েছে:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixedব্যবহারকারী 12L বা তার আগের ভার্সন চলে এমন ডিভাইসে অ্যাপ ইনস্টল করার সময় বিজ্ঞপ্তি চালু রাখেন, তারপর ডিভাইসটি Android 13 বা তার পরের ভার্সনে আপগ্রেড করা হয়:
adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed12L বা তার আগের ভার্সনে চলে এমন ডিভাইসে অ্যাপ ইনস্টল করার সময় ব্যবহারকারী ম্যানুয়ালি বিজ্ঞপ্তি বন্ধ করে দেন, তারপর ডিভাইসটি Android 13 বা তার পরের ভার্সনে আপগ্রেড করা হয়:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
পেশাদার পদ্ধতি
এই বিভাগে এমন কয়েকটি উপায় বর্ণনা করা হয়েছে যার মাধ্যমে আপনি নিজের অ্যাপে নতুন বিজ্ঞপ্তির অনুমতি সবচেয়ে কার্যকরভাবে ব্যবহার করতে পারবেন।
আপনার অ্যাপের টার্গেট SDK ভার্সন আপডেট করুন
অনুমতির ডায়ালগ কখন দেখানো হবে সেই ব্যাপারে আপনার অ্যাপকে আরও নমনীয়তা দিতে, আপনার অ্যাপ আপডেট করুন যাতে এটি Android ১৩ বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করে।
বিজ্ঞপ্তির অনুমতি সংক্রান্ত প্রম্পট দেখানোর জন্য অপেক্ষা করুন
ব্যবহারকারীদের কাছে কোনও অনুমতি চাওয়ার আগে, তাদের আপনার অ্যাপের সাথে পরিচিত হতে দিন।
নতুন ব্যবহারকারীরা অ্যাপটি এক্সপ্লোর করতে এবং প্রতিটি বিজ্ঞপ্তি অনুরোধের সুবিধাগুলি সরাসরি বুঝতে চাইতে পারেন। আপনি ব্যবহারকারীর অ্যাকশন থেকে অনুমতির প্রম্পট ট্রিগার করতে পারবেন। বিজ্ঞপ্তির অনুমতি সংক্রান্ত প্রম্পট দেখানোর জন্য কখন উপযুক্ত সময়, তার কয়েকটি উদাহরণ নিচে দেওয়া হল:
- ব্যবহারকারী "সতর্কতা বেল" বোতামে ট্যাপ করেন।
- ব্যবহারকারী কারও সোশ্যাল মিডিয়া অ্যাকাউন্ট ফলো করার সিদ্ধান্ত নেন।
- ব্যবহারকারী খাবার ডেলিভারির জন্য অর্ডার জমা দেন।
বিজ্ঞপ্তির অনুমতি চাওয়ার জন্য সাজেস্ট করা ওয়ার্কফ্লো চিত্র ১-এ দেখানো হয়েছে। shouldShowRequestPermissionRationale() true রিটার্ন না করলে, আপনার অ্যাপকে মাঝের স্ক্রিনটি দেখাতে হবে না—যেটিতে
"বিজ্ঞপ্তি পান!" শীর্ষক টেক্সট আছে। Compose-এ, আপনি LocalContext.current অ্যাক্সেস করে এবং এটিকে একটি Activity-এ কাস্ট করে বর্তমান Activity খুঁজে পেতে পারেন।
বিকল্প হিসেবে, ব্যবহারকারীকে আপনার অ্যাপের সাথে পরিচিত হওয়ার সুযোগ দেওয়ার পরে আপনি অনুরোধ দেখানোর জন্য সেট করতে পারেন। যেমন, ব্যবহারকারী তৃতীয় বা চতুর্থবার আপনার অ্যাপ চালু করা পর্যন্ত আপনি অপেক্ষা করতে পারেন।
shouldShowRequestPermissionRationale() থেকে true রিটার্ন করা হয়।
অনুমতির জন্য অনুরোধ করুন
আপনার Compose UI-এর মধ্যে অনুমতি সংক্রান্ত অনুরোধ করতে, ActivityResultContracts.RequestPermission() কন্ট্র্যাক্ট সহ
rememberLauncherForActivityResult() API ব্যবহার করুন।
ব্যবহারকারীর ইন্টার্যাকশনের উত্তরে কীভাবে বিজ্ঞপ্তির অনুমতি চাওয়া যায় তা নিম্নলিখিত স্নিপেট থেকে বোঝা যায়:
Kotlin
val context = LocalContext.current
val permissionLauncher = rememberLauncherForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted ->
if (isGranted) {
// Permission granted, you can now send notifications.
} else {
// Permission denied, handle accordingly.
}
}
// ... in your UI ...
Button(onClick = {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}) {
Text("Enable Notifications")
}
প্রাসঙ্গিক অনুমতি পাওয়ার জন্য অনুরোধ করুন
আপনার অ্যাপের মধ্যে বিজ্ঞপ্তির অনুমতি চাওয়ার সময়, সঠিক প্রসঙ্গে তা করুন, যাতে বিজ্ঞপ্তিগুলি কীসের জন্য ব্যবহার করা হয় এবং ব্যবহারকারীর কেন অপ্ট-ইন করা উচিত তা স্পষ্টভাবে বোঝা যায়। যেমন, কোনও ইমেল অ্যাপে প্রতিটি নতুন ইমেলের জন্য বিজ্ঞপ্তি পাঠানোর বিকল্প থাকতে পারে অথবা শুধুমাত্র সেইসব ইমেলের জন্য বিজ্ঞপ্তি পাঠানোর বিকল্প থাকতে পারে যেখানে ব্যবহারকারীই একমাত্র প্রাপক।
আপনার উদ্দেশ্য সম্পর্কে স্বচ্ছতা প্রদান করার জন্য এই সুযোগটি ব্যবহার করুন এবং ব্যবহারকারীরা আপনার অ্যাপকে বিজ্ঞপ্তির অনুমতি দেওয়ার সম্ভাবনা বেশি।
আপনার অ্যাপ বিজ্ঞপ্তি পাঠাতে পারে কিনা তা চেক করুন
আপনার অ্যাপ কোনও বিজ্ঞপ্তি পাঠানোর আগে, ব্যবহারকারী আপনার অ্যাপের জন্য বিজ্ঞপ্তি চালু করেছেন কিনা তা কনফার্ম করুন। এটি করতে, areNotificationsEnabled() কল করুন।
দায়িত্ব সহকারে অনুমতি ব্যবহার করুন
বিজ্ঞপ্তি পাঠানোর অনুমোদন পাওয়ার পরে, দায়িত্ব সহকারে অনুমতি ব্যবহার করার কথা মনে রাখবেন। আপনার অ্যাপ প্রতিদিন কতগুলি বিজ্ঞপ্তি পাঠায় তা ব্যবহারকারীরা দেখতে পাবেন এবং তারা যেকোনও সময় অনুমতি প্রত্যাহার করতে পারবেন।