सूचना ट्रिगर करने वाला एपीआई

सूचना ट्रिगर करने की सुविधा की मदद से, ऐसी लोकल सूचनाओं को शेड्यूल किया जा सकता है जिन्हें इंटरनेट कनेक्शन की ज़रूरत नहीं होती. इस तरह, कैलेंडर ऐप्लिकेशन जैसे इस्तेमाल के लिए सूचनाएं पाना बेहतर होता है.

थॉमस स्टेनर
थॉमस स्टेनर

सूचना ट्रिगर करने वाले टूल क्या हैं?

वेब डेवलपर, Web Notifications API का इस्तेमाल करके, सूचनाएं दिखा सकते हैं. इस सुविधा का इस्तेमाल अक्सर Push API के साथ किया जाता है. इसका इस्तेमाल, उपयोगकर्ता को समय के हिसाब से ज़रूरी जानकारी देने के लिए किया जाता है. जैसे, ताज़ा खबर के इवेंट या मिलने वाले मैसेज. उपयोगकर्ता के डिवाइस पर JavaScript चलाकर सूचनाएं दिखाई जाती हैं.

Push API में समस्या यह है कि यह उन सूचनाओं के लिए भरोसेमंद नहीं है जो समय या जगह जैसी किसी खास शर्त के पूरा होने पर दिखाई चाहिए. समय पर आधारित शर्त का एक उदाहरण कैलेंडर नोटिफ़िकेशन है, जो आपको दोपहर 2 बजे अपने बॉस के साथ हुई एक ज़रूरी मीटिंग की याद दिलाता है. जगह के हिसाब से बताई गई स्थिति का एक उदाहरण ऐसी सूचना है जो आपको किराने की दुकान के आस-पास मौजूद होने पर दूध खरीदने की याद दिलाती है. नेटवर्क कनेक्टिविटी या बैटरी बचाने वाली सुविधाएं, जैसे कि बैटरी बचाने वाला मोड, पुश आधारित सूचनाओं की डिलीवरी में देरी कर सकता है.

नोटिफ़िकेशन ट्रिगर इस समस्या को हल करने के लिए आपको नोटिफ़िकेशन को उनके ट्रिगर करने की स्थिति के साथ पहले से शेड्यूल करने की सुविधा देते हैं, ताकि ऑपरेटिंग सिस्टम सही समय पर नोटिफ़िकेशन डिलीवर करे, चाहे नेटवर्क कनेक्टिविटी न भी हो या डिवाइस बैटरी सेवर मोड में हो.

इस्तेमाल के उदाहरण

उपयोगकर्ता को आने वाली मीटिंग के बारे में याद दिलाने के लिए, कैलेंडर ऐप्लिकेशन समय-आधारित सूचना ट्रिगर का इस्तेमाल कर सकते हैं. किसी कैलेंडर ऐप्लिकेशन की डिफ़ॉल्ट सूचना स्कीम यह हो सकती है कि वह मीटिंग से एक घंटे पहले हेड्स-अप सूचना दिखाए और पांच मिनट पहले दूसरी ज़रूरी सूचना दिखाए.

कोई टीवी नेटवर्क, उपयोगकर्ताओं को याद दिला सकता है कि उनका पसंदीदा टीवी शो शुरू होने वाला है या कॉन्फ़्रेंस की लाइव स्ट्रीम शुरू होने वाली है.

टाइम ज़ोन में बदलाव करने वाली साइटों में, समय पर आधारित सूचना ट्रिगर का इस्तेमाल किया जा सकता है. इससे उपयोगकर्ताओं को टेलीफ़ोन कॉन्फ़्रेंस या वीडियो कॉल के लिए अलार्म शेड्यूल करने की सुविधा मिलती है.

मौजूदा स्थिति

चरण स्थिति
1. जानकारी बनाएं पूरा हुआ
2. स्पेसिफ़िकेशन का शुरुआती ड्राफ़्ट बनाएं Not started
3. लोगों के सुझाव, शिकायत या राय इकट्ठा करके, उन्हें फिर से डिज़ाइन करें. प्रोसेस जारी है
4. ऑरिजिन ट्रायल पूरा जवाब
5. लॉन्च करें Not started

सूचना ट्रिगर का इस्तेमाल कैसे करें

about://flags से चालू करना

किसी ऑरिजिन ट्रायल टोकन के बिना, स्थानीय तौर पर Notification Triggers API की जांच करने के लिए, about://flags में #enable-experimental-web-platform-features फ़्लैग चालू करें.

सुविधा की पहचान

showTrigger प्रॉपर्टी की मौजूदगी की जांच करके, यह पता लगाया जा सकता है कि ब्राउज़र, सूचना ट्रिगर करने की सुविधा के साथ काम करता है या नहीं:

if ('showTrigger' in Notification.prototype) {
  /* Notification Triggers supported */
}

सूचना शेड्यूल की जा रही है

किसी सूचना को शेड्यूल करना, एक सामान्य पुश नोटिफ़िकेशन दिखाने जैसा ही है. इसमें आपको सिर्फ़ सूचना के options ऑब्जेक्ट के लिए, वैल्यू के तौर पर TimestampTrigger ऑब्जेक्ट वाली showTrigger शर्त वाली प्रॉपर्टी पास करनी होगी.

const createScheduledNotification = async (tag, title, timestamp) => {
  const registration = await navigator.serviceWorker.getRegistration();
  registration.showNotification(title, {
    tag: tag,
    body: 'This notification was scheduled 30 seconds ago',
    showTrigger: new TimestampTrigger(timestamp + 30 * 1000),
  });
};

शेड्यूल की गई सूचना रद्द की जा रही है

शेड्यूल की गई सूचनाओं को रद्द करने के लिए, ServiceWorkerRegistration.getNotifications() के ज़रिए पहले उन सभी सूचनाओं की सूची का अनुरोध करें जो किसी खास टैग से मिलती-जुलती हैं. ध्यान दें कि शेड्यूल की गई सूचनाओं को सूची में शामिल करने के लिए, आपको includeTriggered फ़्लैग पास करना होगा:

const cancelScheduledNotification = async (tag) => {
  const registration = await navigator.serviceWorker.getRegistration();
  const notifications = await registration.getNotifications({
    tag: tag,
    includeTriggered: true,
  });
  notifications.forEach((notification) => notification.close());
};

डीबग करना

सूचनाओं को डीबग करने के लिए, Chrome DevTools के सूचना पैनल का इस्तेमाल किया जा सकता है. डीबग करना शुरू करने के लिए, इवेंट रिकॉर्ड करना शुरू करें इवेंट रिकॉर्ड करना शुरू करें या Control+E (Mac पर Command+E) दबाएं. Chrome DevTools, सभी सूचनाओं से जुड़े इवेंट को तीन दिनों तक रिकॉर्ड करता है. इनमें, शेड्यूल की गई, डिसप्ले की गई, और बंद की गई सूचनाएं शामिल हैं. यह इवेंट, DevTools बंद होने पर भी रिकॉर्ड किया जाता है.

शेड्यूल किए गए एक नोटिफ़िकेशन इवेंट को Chrome DevTools के सूचना पैनल में लॉग किया गया, जो ऐप्लिकेशन पैनल में मौजूद है.
शेड्यूल की गई सूचना.
दिखाए गए एक सूचना इवेंट को Chrome DevTools के सूचना पैनल में लॉग किया गया था.
दिखने वाली सूचना.

डेमो

डेमो में सूचना ट्रिगर करने की सुविधा देखी जा सकती है. इससे आपको सूचनाएं शेड्यूल करने, शेड्यूल की गई सूचनाओं की सूची बनाने, और उन्हें रद्द करने की सुविधा मिलती है. सोर्स कोड Glitch पर उपलब्ध है.

सूचना को ट्रिगर करने वाले डेमो वेब ऐप्लिकेशन का स्क्रीनशॉट.
सूचना, डेमो को ट्रिगर करती है.

सुरक्षा और अनुमतियां

Chrome टीम ने शक्तिशाली वेब प्लैटफ़ॉर्म सुविधाओं का ऐक्सेस कंट्रोल करना में बताए गए मुख्य सिद्धांतों का इस्तेमाल करके, Notification ट्रिगर API को डिज़ाइन और लागू किया है. इन सिद्धांतों में उपयोगकर्ता कंट्रोल, पारदर्शिता, और अर्गोनॉमिक्स शामिल हैं. इस एपीआई को सर्विस वर्कर की ज़रूरत होती है, इसलिए इसे सुरक्षित कॉन्टेक्स्ट की भी ज़रूरत होती है. एपीआई का इस्तेमाल करने के लिए वही अनुमति ज़रूरी है जो सामान्य पुश नोटिफ़िकेशन की है.

उपयोगकर्ता नियंत्रण

यह एपीआई सिर्फ़ ServiceWorkerRegistration के संदर्भ में उपलब्ध है. इसका मतलब है कि सारा ज़रूरी डेटा एक ही कॉन्टेक्स्ट में सेव किया जाता है और सर्विस वर्कर को मिटाने या उपयोगकर्ता के ऑरिजिन का सारा साइट डेटा मिटाने पर, डेटा अपने-आप मिट जाता है. कुकी ब्लॉक करने से, सेवा देने वाले लोगों को Chrome में इंस्टॉल होने से भी रोका जा सकता है. इससे इस एपीआई का इस्तेमाल नहीं किया जा सकता. साइट की सेटिंग में जाकर, उपयोगकर्ता इस साइट के लिए सूचनाएं हमेशा बंद कर सकता है.

पारदर्शिता

Push API के उलट, यह एपीआई नेटवर्क पर निर्भर नहीं करता है. इसका मतलब है कि शेड्यूल की गई सूचनाओं के लिए पहले से सभी ज़रूरी डेटा की ज़रूरत होती है. इसमें badge, icon, और image एट्रिब्यूट के ज़रिए बताए गए इमेज रिसॉर्स भी शामिल हैं. इसका मतलब है कि शेड्यूल की गई सूचना दिखाने की जानकारी डेवलपर नहीं देख सकता है और इसमें सर्विस वर्कर को तब तक सक्रिय नहीं करना होता है, जब तक उपयोगकर्ता सूचना के साथ इंटरैक्ट नहीं करता. ऐसे में, फ़िलहाल ऐसा कोई तरीका नहीं है जिससे डेवलपर, आईपी पता जियोलोकेशन लुकअप जैसे निजता पर असर डालने वाले तरीकों के ज़रिए, उपयोगकर्ता के बारे में जानकारी पा सकें. इस डिज़ाइन से यह सुविधा, ऑपरेटिंग सिस्टम से मिले शेड्यूल करने के तरीके का इस्तेमाल कर पाती है. जैसे, Android का AlarmManager, जिससे बैटरी बचाई जा सकती है.

सुझाव/राय दें या शिकायत करें

Chrome टीम, सूचना ट्रिगर करने वाले टूल के साथ आपके अनुभवों के बारे में जानना चाहती है.

हमें इस एपीआई के डिज़ाइन के बारे में बताएं

क्या एपीआई में कुछ ऐसा है जो आपकी उम्मीद के मुताबिक काम नहीं करता? इसके अलावा, क्या अपने आइडिया को लागू करने के लिए कोई तरीका या प्रॉपर्टी मौजूद नहीं है? सुरक्षा मॉडल के बारे में आपका कोई सवाल या टिप्पणी है? सूचना ट्रिगर करने वाला GitHub रेपो पर कोई खास समस्या फ़ाइल करें या किसी मौजूदा समस्या में अपने विचार जोड़ें.

क्या लागू करने में कोई समस्या हुई?

क्या आपको Chrome के सही तरीके से काम करने में कोई गड़बड़ी मिली? या फिर लागू किया जाने वाला तरीका खास जानकारी से अलग है? new.crbug.com पर गड़बड़ी दर्ज करें. ज़्यादा से ज़्यादा जानकारी शामिल करें, कॉन्टेंट फिर से बनाने के आसान निर्देश दें और कॉम्पोनेंट को UI>Notifications पर सेट करें. गड़बड़ी को तुरंत और आसानी से दोबारा जनरेट करने की सुविधा को शेयर करने के लिए, Glitch बेहतरीन तरीके से काम करता है.

क्या आपको एपीआई इस्तेमाल करना है?

क्या आपको अपनी साइट पर सूचना ट्रिगर करने वाले टूल इस्तेमाल करने हैं? आपकी सार्वजनिक सहायता से, हमें सुविधाओं को प्राथमिकता देने में मदद मिलती है. साथ ही, अन्य ब्राउज़र वेंडर को पता चलता है कि उनकी मदद करना कितना ज़रूरी है. हैशटैग का इस्तेमाल करके, @ChromiumDev को एक ट्वीट भेजें #NotificationTriggers और हमें बताएं कि आपने इसका इस्तेमाल कहां और कैसे किया है.

सहायक लिंक्स

स्वीकार हैं

सूचना ट्रिगर करने की सुविधा, रिचर्ड नॉल ने लागू की थी. जानकारी देने वाले इस टूल को पीटर बेवरलू ने लिखा था. इसमें रिचर्ड का योगदान भी था. इन लोगों ने यह लेख पढ़ा है: जो मेडली, पीट लीपेज, रिचर्ड और पीटर. Unस्प्लैश पर लुकस ब्लेज़ेक की हीरो इमेज.