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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें