Notification Permission হল একটি অনুমতি যা অ্যাপের জন্য ব্যবহারকারীকে পুশ বিজ্ঞপ্তি এবং স্থানীয় বিজ্ঞপ্তি পাঠানোর জন্য প্রয়োজন। Android 13 এবং iOS 12 থেকে শুরু করে, অ্যাপগুলিকে সিস্টেম ডায়ালগের মাধ্যমে রানটাইমে এই অনুমতি চাইতে হবে। Android Developers, 2024 অনুসারে, ব্যবহারকারীর স্পষ্ট সম্মতি ছাড়া, অ্যাপ Android 13 এবং তার উপরের ডিভাইসগুলিতে বিজ্ঞপ্তি প্রদর্শন করতে পারে না।
মুখ্য বিষয়
Notification Permission হল একটি সিস্টেম অনুমতি যা ব্যবহারকারীকে বিজ্ঞপ্তি পাঠানোর অ্যাপের ক্ষমতা নিয়ন্ত্রণ করে। Android 13-এর আগে, সমস্ত অ্যাপ অনুরোধ ছাড়াই বিজ্ঞপ্তি দেখাতে পারত — ম্যানিফেস্টে অনুমতি ঘোষণা করাই যথেষ্ট ছিল। তবে, স্প্যাম এবং বিরক্তিকর বিজ্ঞপ্তি বৃদ্ধির সাথে, Google iOS-এর মতো একটি বাধ্যতামূলক রানটাইম অনুরোধ চালু করেছে।
iOS-এ, বিজ্ঞপ্তি অনুমতি iOS 8 থেকে বাধ্যতামূলক, এবং iOS 12 থেকে শুরু করে অস্থায়ী বিজ্ঞপ্তি (প্রোভিশনাল নোটিফিকেশন) চালু হয়েছে — নীরব বিজ্ঞপ্তি যা শব্দ ছাড়া বিতরণ করা হয় এবং স্পষ্ট অনুরোধ ছাড়াই বিজ্ঞপ্তি কেন্দ্রে প্রদর্শিত হয়। অস্থায়ী বিজ্ঞপ্তি ডেভেলপারকে সম্পূর্ণ অনুমতি অনুরোধ করার আগে ব্যবহারকারীকে বিজ্ঞপ্তির মূল্য দেখাতে দেয়।
Localytics (2024) অনুসারে, 61% iOS ব্যবহারকারী এবং 55% Android ব্যবহারকারী অনুরোধের পরে পুশ বিজ্ঞপ্তি পেতে সম্মত হন। অনুমোদন রূপান্তর সরাসরি অনুরোধের প্রসঙ্গের উপর নির্ভর করে: যে অ্যাপগুলি প্রথম মূল্যবান মিথস্ক্রিয়ার পরে অনুমতি চায়, তারা প্রথম লঞ্চে চাওয়া অ্যাপগুলির তুলনায় 40% বেশি অনুমোদন পায়।
বিজ্ঞপ্তি অনুমতির বিবর্তন দেখায় যে কীভাবে প্ল্যাটফর্মগুলি ধীরে ধীরে এই যোগাযোগ চ্যানেলে অ্যাপের অ্যাক্সেস সীমাবদ্ধ করেছে। এই বিবর্তন বোঝা ডেভেলপারকে OS-এর বিভিন্ন সংস্করণ সঠিকভাবে পরিচালনা করতে সাহায্য করে।
Android 13 (2022)-এর আগে, যেকোনো অ্যাপ ব্যবহারকারীর সম্মতি ছাড়াই বিজ্ঞপ্তি দেখাতে পারত। Android 8.0 (2017) বিজ্ঞপ্তি চ্যানেল চালু করেছে, Android 12 (2021) বিরক্তিকর বিজ্ঞপ্তির স্বয়ংক্রিয় ব্লকিং যোগ করেছে, এবং শেষ পর্যন্ত Android 13 রানটাইমে POST_NOTIFICATIONS অনুরোধ করা বাধ্যতামূলক করেছে। যেসব অ্যাপের targetSdkVersion 33-এর নিচে, তাদের জন্য সিস্টেম স্বয়ংক্রিয়ভাবে অনুমতি প্রদান করে, কিন্তু Google Play-র জন্য আগস্ট 2023 থেকে targetSdkVersion 33+ এ আপডেট করা প্রয়োজন।
iOS 8 (2014) UIUserNotificationSettings-এর মাধ্যমে বাধ্যতামূলক অনুমতি অনুরোধ চালু করেছে। iOS 10 (2016) সমৃদ্ধ বিজ্ঞপ্তির সমর্থন সহ UNUserNotificationCenter উপস্থাপন করেছে। iOS 12 (2018) অস্থায়ী বিজ্ঞপ্তি এবং গ্রুপযুক্ত বিজ্ঞপ্তি যোগ করেছে। iOS 15 (2021) ফোকাস মোড চালু করেছে, যা অ্যাপের অনুমতি নির্বিশেষে বিজ্ঞপ্তি ব্লক করতে পারে। App Tracking Transparency (iOS 14.5) বিজ্ঞপ্তির সাথে সম্পর্কিত নয়, তবে এটি অনুমতি অনুরোধের সামগ্রিক সংস্কৃতিকেও প্রভাবিত করেছে।
বর্তমানে, উভয় প্ল্যাটফর্মেরই রানটাইম Notification Permission অনুরোধ প্রয়োজন। ডেভেলপার আর বিজ্ঞপ্তির স্বয়ংক্রিয় সক্রিয়করণের উপর নির্ভর করতে পারে না। ব্যবহারকারীর সম্পূর্ণ নিয়ন্ত্রণ রয়েছে যে কোন অ্যাপগুলি তাকে বিজ্ঞপ্তি দিতে পারে। Android-এ বিজ্ঞপ্তি চ্যানেল এবং iOS-এ বিজ্ঞপ্তি বিভাগগুলি ব্যবহারকারীকে প্রাপ্ত সতর্কতার ধরণগুলি সূক্ষ্মভাবে সামঞ্জস্য করতে দেয়।
Android-এ Notification Permission ম্যানিফেস্টে ঘোষিত POST_NOTIFICATIONS অনুমতির মাধ্যমে সক্ষম করা হয়, তারপরে Android 13+-এর জন্য রানটাইম অনুরোধ করা হয়।
Android 13+-এর জন্য, AndroidManifest.xml-এ POST_NOTIFICATIONS অনুমতি ঘোষণা করা প্রয়োজন। Android 12 এবং তার নিচের সাথে পশ্চাদগামী সামঞ্জস্যের জন্য, অনুমতি সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে প্রদান করা হয় — কোনও অতিরিক্ত পদক্ষেপের প্রয়োজন নেই।
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
POST_NOTIFICATIONS অনুমতির অনুরোধ Activity Result API-এর মাধ্যমে করা হয়। SDK সংস্করণ পরীক্ষা করা গুরুত্বপূর্ণ: Android 12 এবং তার নিচে, কোনও অনুরোধের প্রয়োজন নেই — অনুমতি স্বয়ংক্রিয়ভাবে প্রদান করা হয়েছে বলে গণ্য করা হয়।
private val notificationPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
if (granted) {
createNotificationChannel()
showPushNotification()
} else {
logPermissionDenied()
}
}
fun requestNotificationAccess() {
if (Build.version.SDK_INT <= Build.VERSION_CODES.S_V2) {
// Android 12 এবং তার নিচে — অনুমতি স্বয়ংক্রিয়ভাবে প্রদান করা হয়েছে
showNotification()
return
}
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
showNotification()
} else {
notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}
Android 8.0+-এ, অ্যাপকে প্রথম বিজ্ঞপ্তি পাঠানোর আগে NotificationChannel-এর মাধ্যমে একটি বিজ্ঞপ্তি চ্যানেল তৈরি করতে হবে। চ্যানেলের IMPORTANCE_NONE থেকে IMPORTANCE_HIGH পর্যন্ত একটি গুরুত্ব স্তর রয়েছে, যা নির্ধারণ করে যে বিজ্ঞপ্তিটি শব্দ এবং ব্যানার সহ প্রদর্শিত হবে কিনা। যদি ব্যবহারকারী অ্যাপের জন্য বিজ্ঞপ্তি নিষ্ক্রিয় করে থাকে, তবে সেটিংসে পুনরায় সক্রিয় না করা পর্যন্ত নতুন চ্যানেলগুলি কার্যকর হবে না। বিভিন্ন ধরণের সতর্কতার জন্য পৃথক চ্যানেল তৈরি করার পরামর্শ দেওয়া হয়: বার্তা, বিজ্ঞাপন, সিস্টেম ইভেন্ট।
private fun createNotificationChannel() {
val channel = NotificationChannel(
CHANNEL_ID_MESSAGES,
"বার্তা",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "নতুন বার্তা বিজ্ঞপ্তি"
enableVibration = true
}
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
iOS-এ Notification Permission UNUserNotificationCenter-এর মাধ্যমে অনুরোধ করা হয়। Apple একটি দ্বি-পদক্ষেপ পদ্ধতির পরামর্শ দেয়: প্রথমে অস্থায়ী বিজ্ঞপ্তির অনুরোধ করুন, তারপর, মূল্য প্রদর্শনের পরে, সম্পূর্ণ অনুমতি অনুরোধ করুন।
অস্থায়ী বিজ্ঞপ্তি হল নীরব বিজ্ঞপ্তি যা শব্দ বা ব্যানার ছাড়া বিজ্ঞপ্তি কেন্দ্রে উপস্থিত হয়। এগুলির জন্য ব্যবহারকারীর স্পষ্ট সম্মতির প্রয়োজন হয় না এবং অ্যাপকে সম্পূর্ণ অনুরোধের আগে বিজ্ঞপ্তির মূল্য প্রদর্শন করতে দেয়। বেশ কয়েকটি অস্থায়ী বিজ্ঞপ্তি পাওয়ার পরে, ব্যবহারকারী বিজ্ঞপ্তির ভিতরে মেনুর মাধ্যমে সম্পূর্ণ বিজ্ঞপ্তি সক্রিয় করতে পারে।
import UserNotifications
func requestNotificationPermission() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if let error = error {
print("Notification error: \(error.localizedDescription)")
return
}
if granted {
registerForRemoteNotifications()
} else {
handleDeniedPermission()
}
}
}
func requestProvisionalOnly() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.provisional, .alert, .badge, .sound]) { granted, error in
// অস্থায়ী — ব্যবহারকারী ডায়ালগ দেখে না
// বিজ্ঞপ্তি কেন্দ্রে নীরবে বিজ্ঞপ্তি আসে
registerForRemoteNotifications()
}
}
iOS-এ বর্তমান Notification Permission স্থিতি UNUserNotificationCenter.current().getNotificationSettings-এর মাধ্যমে পাওয়া যেতে পারে। স্থিতি .authorized, .denied, .provisional বা .notDetermined অ্যাপকে সঠিক আচরণ বেছে নিতে দেয়। প্রথম অস্বীকারের পরে, সিস্টেম ডায়ালগ আর দেখানো হয় না — ব্যবহারকারীকে UIApplication.openSettingsURLString-এর মাধ্যমে সেটিংসে রিডাইরেক্ট করতে হবে। Apple নির্দিষ্ট পরিস্থিতির জন্য অস্থায়ী বিজ্ঞপ্তি প্রদানকারী .ephemeral স্থিতি (iOS 17+) পরিচালনা করারও পরামর্শ দেয়।
সর্বোত্তম অভ্যাস Notification Permission অনুরোধের জন্য অনুমোদন রূপান্তর বাড়ানো এবং ব্যবহারকারী হ্রাস কমানোর লক্ষ্যে। ভুল অনুরোধ কেবল অ্যাপকে বিজ্ঞপ্তি পাঠানোর ক্ষমতা থেকে বঞ্চিত করতে পারে না, বরং অ্যাপ আনইনস্টল করার কারণও হতে পারে।
সবচেয়ে সাধারণ অ্যান্টিপ্যাটার্ন হল প্রথম লঞ্চে Notification Permission অনুরোধ করা। ব্যবহারকারী এখনও অ্যাপের মূল্য বোঝেন না এবং তার অস্বীকার করার অত্যন্ত সম্ভাবনা রয়েছে। সর্বোত্তম মুহূর্ত হল ব্যবহারকারী প্রথম মূল্যবান কাজ করার পরে: অর্ডার দেওয়া, বার্তা পাঠানো, আপডেটের সাবস্ক্রাইব করা। একটি পোস্ট-ভ্যালু প্রম্পট অনুমোদন রূপান্তর 65-75% পর্যন্ত বাড়িয়ে দেয়।
সিস্টেম ডায়ালগের আগে, ব্যবহারকারী যে বিজ্ঞপ্তিগুলি পাবে তার উদাহরণ সহ নিজের স্ক্রিন দেখান। টেক্সট এবং আইকন সহ ভবিষ্যতের বিজ্ঞপ্তির একটি মকআপ দেখান। যদি ব্যবহারকারী দেখে যে বিজ্ঞপ্তিগুলি উপযোগী এবং অনুপ্রবেশকারী নয়, তবে তার সম্মত হওয়ার সম্ভাবনা বেশি। প্রি-পারমিশন স্ক্রিনে একটি বিজ্ঞপ্তি পূর্বরূপ একটি কার্যকর কৌশল যা রূপান্তর 35-50% বাড়িয়ে দেয়।
iOS-এ সক্রিয়ভাবে অস্থায়ী বিজ্ঞপ্তির অনুরোধ করা ব্যবহারকারীর স্পষ্ট সম্মতি ছাড়াই বিজ্ঞপ্তি বিতরণের অনুমতি দেয়। যদি ব্যবহারকারী এই বিজ্ঞপ্তিগুলিতে মূল্য দেখে, তবে সে বিজ্ঞপ্তির প্রসঙ্গ মেনুর মাধ্যমে সম্পূর্ণ বিজ্ঞপ্তি সক্রিয় করতে পারে। Apple পরামর্শ দেয় এই পদ্ধতি সংবাদ অ্যাপ, আবহাওয়া অ্যাপ এবং অন্যান্য পরিষেবার জন্য যেখানে বিজ্ঞপ্তিগুলি তথ্যমূলক, লেনদেনমূলক নয়। Apple WWDC 2024 অনুসারে, এই পদ্ধতি সম্পূর্ণ অনুমোদন রূপান্তর 20-30% বাড়িয়ে দেয়।
সচরাচর জিজ্ঞাসিত প্রশ্ন
অস্বীকারের পরে, সিস্টেম ডায়ালগ আর দেখানো হয় না। বিজ্ঞপ্তি সক্রিয় করার একমাত্র উপায় হল Android-এ Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) বা iOS-এ UIApplication.openSettingsURLString-এর মাধ্যমে ব্যবহারকারীকে সিস্টেম সেটিংসে রিডাইরেক্ট করা। নির্দেশনা এবং এগিয়ে যাওয়ার বোতাম সহ একটি স্ক্রিন দেখান।
Android 12 এবং তার নিচে, Notification Permission প্রয়োজন হয় না — সমস্ত অ্যাপ অনুরোধ ছাড়াই বিজ্ঞপ্তি পাঠাতে পারে। তবে, ব্যবহারকারী যেকোনো সময় সিস্টেম সেটিংসের মাধ্যমে বিজ্ঞপ্তি নিষ্ক্রিয় করতে পারে। Android 13 থেকে শুরু করে, targetSdkVersion 33+-এর জন্য রানটাইম অনুরোধ বাধ্যতামূলক।
NotificationChannel হল একটি বিজ্ঞপ্তি বিভাগ যা Android 8.0-এ চালু করা হয়েছে। প্রতিটি চ্যানেলের একটি নাম, বিবরণ, গুরুত্ব স্তর এবং গ্রুপ থাকে। ব্যবহারকারী অ্যাপের সমস্ত বিজ্ঞপ্তি নিষ্ক্রিয় না করে পৃথক চ্যানেল নিষ্ক্রিয় করতে পারে। উদাহরণস্বরূপ, “নতুন বার্তা” চ্যানেল এবং “প্রচারমূলক মেইলিং” চ্যানেল আলাদাভাবে কনফিগার করা যেতে পারে।
Android 13+-এ, POST_NOTIFICATIONS ছাড়া, NotificationManager.notify-এর যেকোনো কল সিস্টেম দ্বারা উপেক্ষা করা হবে। iOS-এ, UNUserNotificationCenter অনুমতি ছাড়া, বিজ্ঞপ্তি বিতরণ করা হয় না। ব্যতিক্রম: iOS-এ Provisional (শব্দ নেই, শুধুমাত্র বিজ্ঞপ্তি কেন্দ্রে) এবং Android 12- (অনুমতি প্রয়োজন নেই)।
Android-এ, NotificationManagerCompat.areNotificationsEnabled() ব্যবহার করুন। iOS-এ, UNUserNotificationCenter.current().getNotificationSettings কল করুন এবং authorizationStatus প্রপার্টি পরীক্ষা করুন। Android-এর জন্য, অতিরিক্তভাবে চ্যানেলের গুরুত্ব পরীক্ষা করুন: NotificationChannel.getImportance() IMPORTANCE_NONE হওয়া উচিত নয়।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন