Notification Permission وہ اجازت ہے جو کسی ایپ کو صارف کو پش اطلاعیں اور مقامی اطلاعیں بھیجنے کے لیے درکار ہوتی ہے۔ Android 13 اور iOS 12 سے شروع کرتے ہوئے، ایپس کو سسٹم ڈائیلاگ کے ذریعے رن ٹائم پر اس اجازت کی درخواست کرنی ہوتی ہے۔ Android Developers، 2024 کے مطابق، صارف کی واضح رضامندی کے بغیر، ایپ Android 13 اور اس سے اوپر کے آلات پر اطلاعیں نہیں دکھا سکتی۔
اہم نکات
Notification Permission ایک سسٹم اجازت ہے جو صارف کو اطلاعیں بھیجنے کی ایپ کی صلاحیت کو کنٹرول کرتی ہے۔ Android 13 سے پہلے، تمام ایپس درخواست کے بغیر اطلاعیں دکھا سکتی تھیں — مینی فیسٹ میں اجازت کا اعلان کرنا کافی تھا۔ تاہم، سپیم اور پریشان کن اطلاعوں میں اضافے کے ساتھ، Google نے iOS کی طرح ایک لازمی رن ٹائم درخواست متعارف کرائی۔
iOS پر، اطلاع کی اجازت iOS 8 سے لازمی رہی ہے، اور iOS 12 سے عارضی اطلاعیں (Provisional Notifications) ظاہر ہوئیں — خاموش اطلاعیں جو بغیر آواز کے پہنچائی جاتی ہیں اور واضح درخواست کے بغیر اطلاع مرکز میں دکھائی جاتی ہیں۔ عارضی اطلاعیں ڈویلپر کو مکمل اجازت کی درخواست کرنے سے پہلے صارف کو اطلاعوں کی اہمیت دکھانے کی اجازت دیتی ہیں۔
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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں