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

पब्लिश होने की तारीख: 24 अक्टूबर, 2019

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

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

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

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

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

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

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

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

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

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

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

ऑरिजिन ट्रायल टोकन के बिना, 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 के सूचनाएं पैनल में लॉग किया गया था.
दिखाई गई सूचना.

डेमो

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

सूचना ट्रिगर करने वाले इवेंट का डेमो वेब ऐप्लिकेशन.

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

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

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

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

पारदर्शिता

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

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

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

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

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

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

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

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

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

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

सहायक लिंक्स

Acknowledgements

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