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

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

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

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

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

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

पारदर्शिता

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

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

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

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

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

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

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

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

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

सहायक लिंक्स

स्वीकार की गई

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