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

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

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

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

ऐप्लिकेशन पर उपयोगकर्ताओं के कंट्रोल की जानकारी

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

पारदर्शिता

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

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

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

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

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

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

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

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

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

सहायक लिंक्स

धन्यवाद

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