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

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

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

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

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

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

उपयोग के उदाहरण

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

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

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

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

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

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

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 Triggers API को डिज़ाइन और लागू किया है. इसके लिए, वेब प्लैटफ़ॉर्म की बेहतर सुविधाओं के ऐक्सेस को कंट्रोल करना में बताए गए मुख्य सिद्धांतों का इस्तेमाल किया गया है. इनमें उपयोगकर्ता कंट्रोल, पारदर्शिता, और काम करने के तरीके से जुड़े सिद्धांत शामिल हैं. इस एपीआई के लिए, सेवा वर्कर की ज़रूरत होती है. साथ ही, इसके लिए सुरक्षित कॉन्टेक्स्ट की भी ज़रूरत होती है. API का इस्तेमाल करने के लिए, वही अनुमति चाहिए जो सामान्य पुश नोटिफ़िकेशन के लिए चाहिए.

उपयोगकर्ता कंट्रोल

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

पारदर्शिता

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

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

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

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

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

क्या लागू करने में समस्या आ रही है?

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

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

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

सहायक लिंक्स

आभार

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