स्थानीय सूचना एक संदेश है जो ऐप रिमोट सर्वर की भागीदारी के बिना उपयोगकर्ता को भेजता है। सभी डेटा प्राप्तकर्ता के डिवाइस पर सीधे संसाधित और प्रदर्शित किया जाता है। यह तंत्र रिमाइंडर, टाइमर और अलार्म के लिए उपयुक्त है जब ऐप बैकग्राउंड में हो या बंद हो। Apple Developer Documentation के अनुसार, UNUserNotificationCenter iOS पर स्थानीय सूचनाओं का केंद्रीकृत प्रबंधन प्रदान करता है।
मुख्य बिंदु
स्थानीय सूचना एक ट्रिगर संदेश है जो ऑपरेटिंग सिस्टम द्वारा उसी डिवाइस पर उत्पन्न और प्रदर्शित किया जाता है जहाँ ऐप इंस्टॉल है। पुश सूचनाओं के विपरीत, स्थानीय सूचनाएँ बाहरी सर्वर से नहीं गुज़रतीं — सारा निर्धारण लॉजिक क्लाइंट पर चलता है।
ऐसी सूचनाएँ ऐप की स्थिति की परवाह किए बिना काम करती हैं: सक्रिय, छोटा किया हुआ या पूरी तरह से बंद। ऑपरेटिंग सिस्टम निर्धारित समय पर वितरण का ध्यान रखता है, जबकि डेवलपर केवल सामग्री और ट्रिगर निर्दिष्ट करता है।
सिस्टम नेटवर्क के बिना भी स्थानीय सूचना के वितरण की गारंटी देता है। यह पुश सूचनाओं पर एक महत्वपूर्ण लाभ है, जिन्हें स्थिर इंटरनेट कनेक्शन और कार्यशील सर्वर की आवश्यकता होती है।
प्रत्येक स्थानीय सूचना में तीन भाग होते हैं: सामग्री (शीर्षक, मुख्य भाग, ध्वनि), ट्रिगर (समय या स्थान की शर्त) और अनुरोध पहचानकर्ता। पहचानकर्ता वितरण से पहले सूचना को रद्द या अपडेट करने की अनुमति देता है।
एक डेवलपर iOS पर प्रति ऐप 64 स्थानीय सूचनाएँ और Android पर असीमित संख्या निर्धारित कर सकता है। यह अंतर ऑपरेटिंग सिस्टम की आर्किटेक्चरल सीमाओं के कारण है।
दोनों प्लेटफ़ॉर्म स्थानीय सूचनाओं के साथ काम करने के लिए अपने स्वयं के API प्रदान करते हैं। iOS पर, केंद्रीय घटक UNUserNotificationCenter है, Android पर — NotificationManager। विभिन्न इंटरफ़ेस के बावजूद, लॉजिक समान है: ऐप एक अनुरोध बनाता है, इसे सिस्टम में पंजीकृत करता है, और OS निर्धारित समय पर सूचना वितरित करता है।
iOS कैलेंडर इवेंट के लिए UNCalendarNotificationTrigger, अंतराल के लिए UNTimeIntervalNotificationTrigger और स्थान के लिए UNLocationNotificationTrigger का उपयोग करता है। Android AlarmManager, WorkManager और setExact के माध्यम से सटीक निर्धारण प्रदान करता है।
Android 12 से — SCHEDULE_EXACT_ALARM के लिए उपयोगकर्ता से विशेष अनुमति आवश्यक है। iOS पर, अनुमति एक बार UNUserNotificationCenter.requestAuthorization के माध्यम से माँगी जाती है, और उपयोगकर्ता पहुंच स्तर चुनता है: बैनर, ध्वनियाँ, बैज।
स्थानीय सूचनाओं को सामग्री के बजाय ट्रिगर प्रकार के अनुसार वर्गीकृत किया जाता है। प्रत्येक प्रकार यह निर्धारित करता है कि सूचना उपयोगकर्ता को कब और किन शर्तों पर दिखाई जाएगी।
iOS और Android पर, ट्रिगर प्रकार अलग-अलग तरीके से लागू किए जाते हैं, हालाँकि तार्किक वर्गीकरण समान है। iOS तिथियों के लिए UNCalendarNotificationTrigger, अंतराल के लिए UNTimeIntervalNotificationTrigger और स्थान के लिए UNLocationNotificationTrigger का उपयोग करता है। Android setExact और setRepeating के साथ AlarmManager, साथ ही विलंबित कार्यों के लिए WorkManager प्रदान करता है।
| ट्रिगर प्रकार | विवरण | उदाहरण |
|---|---|---|
| समय अंतराल | शुरू होने के N सेकंड बाद सूचना | उलटी गिनती टाइमर |
| कैलेंडर तिथि | विशिष्ट समय और तिथि पर सूचना | मीटिंग रिमाइंडर |
| स्थान | क्षेत्र में प्रवेश/निकास पर सूचना | दुकान पर रिमाइंडर |
| तत्काल | API कॉल पर तत्काल वितरण | डाउनलोड सूचना |
iOS UNNotificationAttachment का भी समर्थन करता है — सूचना के मुख्य भाग में एक छवि, ऑडियो या वीडियो संलग्न करना। Android NotificationCompat.Style के माध्यम से बटन और बड़ी छवियों वाले कस्टम टेम्पलेट का समर्थन करता है।
ट्रिगर का चुनाव परिदृश्य पर निर्भर करता है: कैलेंडर रिमाइंडर कैलेंडर ट्रिगर के साथ सबसे अच्छा काम करते हैं, स्थान रिमाइंडर स्थान के साथ। अंतराल ट्रिगर निश्चित अवधि वाली आवर्ती घटनाओं के लिए उपयुक्त हैं।
iOS पर, स्थानीय सूचनाएँ सिस्टम द्वारा तब भी वितरित की जाती हैं जब ऐप बंद हो — UNUserNotificationCenter स्वतंत्र रूप से कतार का प्रबंधन करता है। Android पर, वितरण चुने गए तंत्र पर निर्भर करता है: AlarmManager स्क्रीन बंद होने पर भी काम करता है, जबकि WorkManager ऊर्जा बचत को ध्यान में रखता है।
स्थानीय सूचनाएँ उन कार्यों को हल करती हैं जहाँ बाहरी बुनियादी ढाँचा अत्यधिक या अनुपलब्ध है। मुख्य परिदृश्य: रिमाइंडर, टाइमर, ऑनबोर्डिंग टिप्स और विलंबित कार्रवाइयाँ।
Localytics के शोध से पता चलता है कि स्थानीय रिमाइंडर का उपयोग करने वाले ऐप इंस्टॉलेशन के बाद पहले सप्ताह में 35% अधिक उपयोगकर्ताओं को बनाए रखते हैं। यह स्थानीय सूचनाओं को एक शक्तिशाली ऑनबोर्डिंग टूल बनाता है।
आवृत्ति का दुरुपयोग न करना महत्वपूर्ण है — सिस्टम स्वयं एक ही ऐप से सूचनाओं को समूहित करता है, और यदि वे कष्टप्रद हो जाती हैं तो उपयोगकर्ता सभी स्थानीय सूचनाओं को अक्षम कर सकता है। गैर-महत्वपूर्ण घटनाओं के लिए इष्टतम आवृत्ति प्रति दिन 2–3 सूचनाओं से अधिक नहीं है।
Android पर स्थानीय सूचना निर्धारित करने के लिए, AlarmManager के साथ NotificationManager का उपयोग करें। Android 8+ पर, आपको पहले एक सूचना चैनल बनाना होगा, अन्यथा सूचना प्रदर्शित नहीं होगी।
val channelId = "reminder_channel"
val notificationId = "task_reminder_42"
val channel = NotificationChannel(
channelId,
"रिमाइंडर",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "कार्य रिमाइंडर के लिए चैनल"
}
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
val intent = Intent(this, ReminderReceiver::class.java).apply {
putExtra("notification_id", notificationId)
putExtra("channel_id", channelId)
}
val pendingIntent = PendingIntent.getBroadcast(
this, notificationId.hashCode(),
intent, PendingIntent.FLAG_UPDATE_CURRENT
)
val alarmManager = getSystemService(AlarmManager::class.java)
alarmManager.setExact(
AlarmManager.RTC_WAKEUP,
triggerTimeMillis,
pendingIntent
)
Android 12+ पर, setExact कॉल करने से पहले SCHEDULE_EXACT_ALARM अनुमति की जाँच करें। यदि अनुमति नहीं दी गई है — setWindow का उपयोग करें, जो समय विंडो के भीतर वितरण सुनिश्चित करता है।
जब AlarmManager चालू होता है, सिस्टम एक ब्रॉडकास्ट Intent भेजता है जिसे BroadcastReceiver प्राप्त करता है। इसके अंदर, आपको NotificationManager के माध्यम से सूचना बनानी और दिखानी होती है। सुनिश्चित करें कि PendingIntent FLAG_UPDATE_CURRENT का उपयोग करता है, अन्यथा डेटा बदलने पर पुरानी सूचनाएँ पुराने Intent का उपयोग करती रहेंगी।
iOS पर, स्थानीय सूचनाएँ UNUserNotificationCenter के माध्यम से UNMutableNotificationContent और एक ट्रिगर का उपयोग करके बनाई जाती हैं। निर्धारण से पहले, आपको उपयोगकर्ता से अनुमति लेनी होगी।
import UserNotifications
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
guard granted else { return }
}
let content = UNMutableNotificationContent()
content.title = "कार्य रिमाइंडर"
content.body = "18:00 बजे तक रिपोर्ट पूरी करना न भूलें"
content.sound = .default
content.userInfo = ["task_id": "42"]
let trigger = UNTimeIntervalNotificationTrigger(
timeInterval: 3600,
repeats: false
)
let request = UNNotificationRequest(
identifier: "task_reminder_42",
content: content,
trigger: trigger
)
center.add(request)
iOS एक साथ 64 स्थानीय सूचना अनुरोधों का समर्थन करता है। यदि सीमा पार हो जाती है, तो सिस्टम नए अनुरोधों को तब तक अस्वीकार करता है जब तक सक्रिय अनुरोध वितरित या रद्द नहीं हो जाते। वर्तमान कतार की जाँच करने के लिए getPendingNotificationRequests का उपयोग करें।
जब उपयोगकर्ता iOS पर स्थानीय सूचना के साथ इंटरैक्ट करता है, तो UNUserNotificationCenterDelegate की userNotificationCenter:didReceive response विधि कॉल की जाती है। यह विधि अनुरोध पहचानकर्ता, actionIdentifier (कौन सा बटन दबाया गया) और कस्टम userInfo प्रदान करती है। यह एक साधारण सूचना खोलने और किसी विशिष्ट क्रिया बटन को दबाने के बीच अंतर करने की अनुमति देता है।
स्थानीय सूचनाओं को उपयोगी बनाने के लिए न कि कष्टप्रद, कई प्रमुख नियमों का पालन करें। पहला: आवृत्ति को नियंत्रित करें — गैर-महत्वपूर्ण घटनाओं के लिए प्रति दिन 2–3 सूचनाओं से अधिक नहीं, अन्यथा उपयोगकर्ता सभी ऐप सूचनाओं को अक्षम कर देगा।
दूसरा: उपयोगकर्ता को विकल्प दें। इंटरफ़ेस में कुछ प्रकार की स्थानीय सूचनाओं को अक्षम करने की क्षमता जोड़ें। Android पर, इसके लिए कम महत्व वाले अलग NotificationChannel का उपयोग करें; iOS पर, ऐप सेटिंग्स में एक अलग श्रेणी का उपयोग करें।
तीसरा: प्रासंगिक प्रासंगिकता — सूचना तब दिखनी चाहिए जब उपयोगकर्ता को इसकी आवश्यकता हो। स्थान ट्रिगर घर के पास रिमाइंडर के लिए आदर्श हैं, कैलेंडर ट्रिगर मीटिंग के लिए, अंतराल ट्रिगर नियमित गतिविधियों जैसे पानी पीना या स्ट्रेचिंग के लिए। बिना आवश्यकता के प्रकारों को न मिलाएँ।
चौथा: वास्तविक उपकरणों पर परीक्षण करें। iOS सिम्युलेटर स्थानीय सूचना वितरण के सभी परिदृश्यों का अनुकरण नहीं करता, विशेष रूप से बैकग्राउंड में। Android पर, निर्धारित सूचनाओं की कतार और उनके मापदंडों की जाँच करने के लिए adb shell dumpsys notification का उपयोग करें। पाँचवाँ: हमेशा उपयोगकर्ता को ऐप इंटरफ़ेस के माध्यम से सूचनाओं को अक्षम करने की क्षमता प्रदान करें — यह UX और App Store Review Guidelines की अनिवार्य आवश्यकता है।
अक्सर पूछे जाने वाले प्रश्न
स्थानीय सूचना सर्वर की भागीदारी के बिना डिवाइस द्वारा निर्धारित और वितरित की जाती है। पुश सूचना के लिए बाहरी सेवा (FCM, APNS) और इंटरनेट कनेक्शन की आवश्यकता होती है। स्थानीय ऑफ़लाइन काम करती हैं, पुश केवल नेटवर्क पहुँच के साथ।
iOS एक साथ 64 निर्धारित अनुरोधों तक सीमित करता है। Android की कोई सख्त सीमा नहीं है, लेकिन 500 से अधिक सूचनाएँ सिस्टम प्रदर्शन को कम कर सकती हैं और वितरण समय को प्रभावित कर सकती हैं।
हाँ, iOS पर अनुरोध पहचानकर्ता के साथ removePendingNotificationRequests का उपयोग करें। Android पर, NotificationManager.cancel कॉल करें या AlarmManager के माध्यम से PendingIntent रद्द करें। रद्द करने के लिए एक अद्वितीय पहचानकर्ता अनिवार्य है।
iOS पर, requestAuthorization के माध्यम से अनुमति अनिवार्य है। Android 13+ (Tiramisu) पर, POST_NOTIFICATIONS अनुमति भी आवश्यक है। पुराने Android संस्करणों को स्थानीय सूचनाओं के लिए स्पष्ट अनुमति की आवश्यकता नहीं है।
iOS पर, UNNotificationAction बनाएँ और इसे UNNotificationCategory में जोड़ें। Android पर, BroadcastReceiver को लक्षित करने वाले PendingIntent के साथ NotificationCompat.Builder.addAction का उपयोग करें। प्रत्येक बटन ऐप में एक अलग कार्रवाई ट्रिगर करता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें