Notification Category (नोटिफिकेशन श्रेणी) एक iOS तंत्र है जो पुश नोटिफिकेशन को प्रकार के अनुसार समूहित करने और उनमें कस्टम क्रियाएँ जोड़ने के लिए है। श्रेणी यह निर्धारित करती है कि नोटिफिकेशन पर 3D Touch या लॉन्ग-प्रेस करने पर कौन से बटन दिखाए जाएँ, साथ ही सिस्टम इस प्रकार के आने वाले नोटिफिकेशन को कैसे प्रोसेस करता है। Apple डेवलपर दस्तावेज़ के अनुसार, UNNotificationCategory को UNUserNotificationCenter में रजिस्टर किया जाता है और APNS पेलोड में category फ़ील्ड के माध्यम से नोटिफिकेशन से जोड़ा जाता है।
मुख्य बातें
Notification Category एक iOS सुविधा है (संस्करण 8.0 से) जो डेवलपर्स को पुश नोटिफिकेशन को वर्गीकृत करने और उनमें इंटरैक्टिव क्रियाएँ जोड़ने की अनुमति देती है। जब उपयोगकर्ता कोई नोटिफिकेशन प्राप्त करता है और ज़ोर से दबाता है (3D Touch) या लॉन्ग-प्रेस करता है, तो श्रेणी द्वारा परिभाषित बटन दिखाई देते हैं। यह नोटिफिकेशन को इंटरैक्टिव बनाता है और उपयोगकर्ताओं को ऐप खोले बिना कार्रवाई करने की अनुमति देता है।
एक श्रेणी UNNotificationCategory ऑब्जेक्ट के माध्यम से रजिस्टर की जाती है, जिसमें एक पहचानकर्ता, क्रियाओं की एक सरणी और वैकल्पिक प्रदर्शन पैरामीटर होते हैं। सिस्टम APNS पेलोड से श्रेणी पहचानकर्ता का उपयोग रजिस्टर की गई श्रेणी खोजने और संबंधित बटन प्रदर्शित करने के लिए करता है।
Android Notification Channel के विपरीत, iOS Category महत्व, ध्वनि या कंपन का प्रबंधन नहीं करती है। इसका एकमात्र उद्देश्य नोटिफिकेशन के लिए इंटरैक्टिव क्षमताएँ प्रदान करना है: उत्तर, पुष्टि, रद्द या टेक्स्ट इनपुट बटन।
iOS पर पुश नोटिफिकेशन प्रदर्शित करने के लिए श्रेणियाँ अनिवार्य नहीं हैं। नोटिफिकेशन वैसे भी दिखाई देगा — श्रेणी रजिस्टर होने पर बटन के साथ, या उनके बिना। श्रेणियाँ केवल नोटिफिकेशन में इंटरैक्टिविटी जोड़ने के लिए आवश्यक हैं।
श्रेणी तंत्र में चार चरण होते हैं: क्लाइंट पर श्रेणी रजिस्टर करना, श्रेणी के साथ APNS पेलोड भेजना, सिस्टम द्वारा श्रेणी पहचानना, और उपयोगकर्ता क्रिया को संभालना।
श्रेणी में क्रियाएँ दो प्रकार की हो सकती हैं: foreground (ऐप खोलती हैं) और background (पृष्ठभूमि में निष्पादित होती हैं)। पृष्ठभूमि क्रियाओं के लिए, ऐप को UNNotificationActionHandler में प्रोसेस करने के लिए सीमित समय (लगभग 30 सेकंड) मिलता है।
UNNotificationCategory options पैरामीटर के माध्यम से कई विकल्पों का समर्थन करता है: customDismissAction — नोटिफिकेशन को स्वाइप करने पर ईवेंट प्राप्त करना, allowInCarPlay — CarPlay में क्रियाएँ दिखाना, hiddenPreviewsBodyPlaceholder — छिपे हुए प्रीव्यू के लिए कस्टम प्लेसहोल्डर टेक्स्ट।
iOS नोटिफिकेशन श्रेणियों के लिए दो प्रकार की क्रियाएँ प्रदान करता है। प्रत्येक प्रकार का अपना उद्देश्य और उपयोगकर्ता के साथ बातचीत करने का तरीका होता है।
| प्रकार | क्लास | विवरण | उदाहरण |
|---|---|---|---|
| सरल क्रिया | UNNotificationAction | शीर्षक और विकल्पों (destructive, foreground, authenticationRequired) वाला बटन | “हटाएँ”, “देखें” |
| टेक्स्ट इनपुट | UNTextInputAction | एक बटन जो प्लेसहोल्डर के साथ टेक्स्ट इनपुट फ़ील्ड खोलता है | “उत्तर दें”, “टिप्पणी करें” |
UNTextInputAction एक अनूठी iOS सुविधा है। जब उपयोगकर्ता “उत्तर दें” बटन दबाता है, तो सिस्टम एक टेक्स्ट फ़ील्ड दिखाता है जहाँ उपयोगकर्ता अपना उत्तर टाइप करता है। दर्ज किया गया टेक्स्ट क्रिया पहचानकर्ता के साथ डेलिगेट को भेजा जाता है। यह ऐप खोले बिना त्वरित उत्तर लागू करने की अनुमति देता है।
क्रिया विकल्प: options.authenticationRequired — डिवाइस अनलॉक करना आवश्यक है, options.destructive — बटन को लाल रंग में हाइलाइट करता है (खतरनाक क्रियाओं के लिए), options.foreground — दबाने के बाद ऐप खोलता है।
श्रेणियाँ ऐप लॉन्च पर रजिस्टर की जाती हैं, आमतौर पर didFinishLaunchingWithOptions विधि में। रजिस्ट्रेशन UNUserNotificationCenter के माध्यम से, नोटिफिकेशन अनुमति का अनुरोध करने के बाद किया जाता है। श्रेणियाँ प्रत्येक लॉन्च पर अपडेट की जा सकती हैं — पुराने संस्करण नए से बदल दिए जाते हैं।
import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
func registerNotificationCategories() {
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "उत्तर दें",
options: [.foreground],
textInputButtonTitle: "भेजें",
textInputPlaceholder: "संदेश लिखें..."
)
let deleteAction = UNNotificationAction(
identifier: "delete",
title: "हटाएँ",
options: [.destructive]
)
let messageCategory = UNNotificationCategory(
identifier: "message",
actions: [replyAction, deleteAction],
intentIdentifiers: [],
options: [.customDismissAction]
)
UNUserNotificationCenter.current()
.setNotificationCategories([messageCategory])
}
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
UNUserNotificationCenter.current().delegate = self
registerNotificationCategories()
return true
}
}
श्रेणी रजिस्टर करने के बाद, APNS पेलोड में category = “message” वाला कोई भी नोटिफिकेशन “उत्तर दें” और “हटाएँ” बटन दिखाएगा। टैप संभालना userNotificationCenter:didReceive response में होता है, जहाँ actionIdentifier यह निर्धारित करता है कि कौन सा बटन दबाया गया था।
जब उपयोगकर्ता श्रेणी बटन दबाता है, iOS UNNotificationResponse ऑब्जेक्ट के साथ UNUserNotificationCenterDelegate को कॉल करता है। response.actionIdentifier में दबाए गए बटन का पहचानकर्ता होता है, और response.notification.request.content.userInfo में पेलोड से कस्टम डेटा होता है।
Android Notification Channels से परिचित डेवलपर्स अक्सर उन्हें iOS Notification Categories के साथ भ्रमित करते हैं। समान नाम के बावजूद, ये तंत्र अलग-अलग कार्यों को हल करते हैं और अलग-अलग तरीके से काम करते हैं।
दोनों प्लेटफ़ॉर्म दोनों तंत्रों को जोड़ सकते हैं: Android पर, एक नोटिफिकेशन NotificationCompat की क्रियाओं वाले चैनल से संबंधित हो सकता है, जबकि iOS पर, एक श्रेणी चैनलों की पूरक होती है, जिन्हें iOS में thread-id कहा जाता है और नोटिफिकेशन सेंटर में नोटिफिकेशन समूहित करने के लिए उपयोग किया जाता है।
नोटिफिकेशन को श्रेणी बटन के साथ प्रदर्शित करने के लिए, सर्वर को APNS पेलोड में category की शामिल करनी होगी। इस की के बिना, सिस्टम को पता नहीं चलेगा कि नोटिफिकेशन पर कौन सी श्रेणी लागू करनी है।
{
"aps": {
"alert": {
"title": "नया संदेश",
"body": "अन्ना: नमस्ते! कैसे हो?"
},
"category": "message",
"thread-id": "chat_123",
"badge": 5,
"sound": "default"
}
}
category की को क्लाइंट पर setNotificationCategories के माध्यम से रजिस्टर किए गए पहचानकर्ता से बिल्कुल मेल खाना चाहिए। केस मायने रखता है — “message” और “Message” अलग-अलग श्रेणियाँ मानी जाती हैं। यदि श्रेणी नहीं मिलती है, तो नोटिफिकेशन बटन के बिना दिखाई देता है, लॉग में कोई त्रुटि नहीं होती।
यदि सर्वर ऐसी श्रेणी वाला नोटिफिकेशन भेजता है जो क्लाइंट पर रजिस्टर नहीं है, तो iOS श्रेणी को अनदेखा करता है और नोटिफिकेशन को बटन के बिना दिखाता है। त्रुटि लॉग नहीं होती, और ऐप को बेमेल के बारे में पता नहीं चलता। सर्वर और क्लाइंट के बीच श्रेणियों की सूची को सिंक्रोनाइज़ करने की अनुशंसा की जाती है।
iOS में नोटिफिकेशन श्रेणियाँ डिज़ाइन करते समय, एक श्रेणी — एक परिदृश्य के सिद्धांत का पालन करें। प्रत्येक श्रेणी एक विशिष्ट प्रकार की बातचीत के अनुरूप होनी चाहिए: संदेश का उत्तर देना, क्रिया की पुष्टि करना, या अनुरोध को अस्वीकार करना। एक ही श्रेणी में विभिन्न परिदृश्यों को न मिलाएँ।
उन परिदृश्यों के लिए UNTextInputAction का उपयोग करें जहाँ उपयोगकर्ता को ऐप खोले बिना टेक्स्ट दर्ज करना है: मैसेजिंग उत्तर, टिप्पणियाँ, त्वरित नोट्स। टेक्स्ट क्रियाएँ जुड़ाव बढ़ाती हैं — उपयोगकर्ता ऐप में 5+ के बजाय 2 टैप में एक सार्थक क्रिया करता है।
खतरनाक क्रियाओं (हटाना, ब्लॉक करना) के लिए destructive विकल्प का उपयोग करें। iOS इन बटनों को लाल रंग में हाइलाइट करेगा, उपयोगकर्ता को क्रिया की अपरिवर्तनीयता के बारे में चेतावनी देगा। उन क्रियाओं के लिए जिनमें डिवाइस अनलॉक करना आवश्यक है (व्यक्तिगत डेटा देखना), authenticationRequired निर्दिष्ट करें।
विभिन्न उपकरणों पर श्रेणियों का परीक्षण करें: 3D Touch वाले iPhone पर, 3D Touch के बिना iPhone (लॉन्ग-प्रेस) पर, iPad पर और Mac पर। Apple प्लेटफ़ॉर्म पर श्रेणियों का व्यवहार थोड़ा भिन्न हो सकता है। CarPlay पर विशेष ध्यान दें: श्रेणी बटन कार स्क्रीन पर दिखाई देते हैं और ड्राइवर सुरक्षा के लिए न्यूनतम टेक्स्ट के साथ डिज़ाइन किए जाने चाहिए।
अक्सर पूछे जाने वाले प्रश्न
कोई सीमा नहीं है — iOS UNNotificationCategory की संख्या पर कोई सीमा नहीं लगाता है। हालाँकि, व्यवहार में, डेलिगेट हैंडलिंग को जटिल न करने के लिए 10–15 से अधिक श्रेणियों का उपयोग न करने की अनुशंसा की जाती है। प्रत्येक श्रेणी में अधिकतम 4 क्रियाएँ (बटन) हो सकती हैं। 4 से अधिक क्रियाओं को सिस्टम द्वारा अनदेखा कर दिया जाता है।
UNUserNotificationCenterDelegate प्रोटोकॉल और didReceive विधि लागू करें। response.actionIdentifier जाँचें: UNNotificationDismissActionIdentifier — खारिज करने के लिए स्वाइप, UNNotificationDefaultActionIdentifier — बॉडी पर टैप, या आपका कस्टम बटन पहचानकर्ता। टेक्स्ट इनपुट बटन के लिए, टेक्स्ट response.userText के माध्यम से उपलब्ध है।
Category — नोटिफिकेशन के लिए इंटरैक्टिव क्रियाएँ (बटन) परिभाषित करती है। Thread-id — नोटिफिकेशन सेंटर में नोटिफिकेशन को विषय के अनुसार समूहित करता है। दोनों कुंजियाँ APNS पेलोड में निर्दिष्ट की जाती हैं। Category और thread-id संबंधित नहीं हैं: एक नोटिफिकेशन में श्रेणी हो सकती है लेकिन thread-id नहीं, और इसके विपरीत।
हाँ, UNNotificationCategory macOS 10.14+ (Mojave) पर UserNotifications फ्रेमवर्क का उपयोग करने वाले ऐप्स में समर्थित है। macOS पर श्रेणियों का व्यवहार iOS के समान है: नोटिफिकेशन पर क्लिक करने पर बटन दिखाए जाते हैं, और हैंडलिंग UNUserNotificationCenterDelegate के माध्यम से होती है।
अनुशंसित है कि setNotificationCategories के माध्यम से प्रत्येक ऐप लॉन्च पर श्रेणियाँ रजिस्टर करें। सिस्टम पुराने श्रेणी सेट को प्रत्येक कॉल पर नए से बदल देता है। यदि आप अपडेट नहीं करते हैं, तो श्रेणियाँ लॉन्च के बीच बनी रहती हैं, लेकिन जब कोड बदलता है, तो पुरानी श्रेणियाँ अप्रत्याशित व्यवहार का कारण बन सकती हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें