मैं वेब पुश एपीआई here के क्रोम के कार्यान्वयन के लिए दस्तावेज़ों के माध्यम से पढ़ रहा हूं, और मैंने देखा कि एपीआई कहता है, "जब भी आपको पुश प्राप्त होता है तो आप अधिसूचना दिखाने का वादा करते हैं" और इसके तहत बताए गए सीमाओं के तहत "आपको पुश संदेश प्राप्त होने पर अधिसूचना दिखाने के लिए में है"।Google क्रोम साइलेंट पुश नोटिफिकेशन
मेरे लोकहोस्ट पर उदाहरण लागू करने के बाद, मैंने पुल अधिसूचना सफलतापूर्वक भेजने के लिए curl का उपयोग किया। मैं उत्सुक था, इसलिए मैंने उन पंक्तियों पर टिप्पणी की जो वास्तव में शो नोटिफिकेशन फ़ंक्शन को कॉल करते हैं, और इसके बजाय एक console.log में डालते हैं और पाते हैं कि मैं वास्तव में, पुश अधिसूचना भेज सकता हूं, प्राप्त कर सकता हूं और पूरी तरह से अनदेखा कर सकता हूं। मैंने यह भी नियंत्रित करने के लिए एक if-statement का उपयोग करने का प्रयास किया कि वैश्विक बूलियन के आधार पर उन्हें दिखाने के लिए या नहीं, जिसे मैंने अपने मुख्य पृष्ठ से नियंत्रित किया था, और यह काम किया। तो मैं सोच रहा था कि क्या किसी को पता था कि उन्हें एक अधिसूचना दिखाने की ज़रूरत है, और यह कि चुप पुश सूचनाएं उपलब्ध नहीं थीं?
यह सिर्फ इसके लिए नहीं था, मुझे वैध रूप से यह नियंत्रित करने की आवश्यकता हो सकती है कि इन सूचनाओं को मेरे वेब ऐप में दिखाना है या नहीं, इसलिए यह वास्तव में संभव होगा यदि यह वास्तव में संभव हो। यदि आप उत्सुक हैं तो नीचे दिए गए कोड।
self.addEventListener('push', function(event) {
var title = 'New Message';
var body = 'You have received a new message!';
var icon = '/img/favicon.png';
var tag = 'well-notification';
console.log("DID RECEIVE NOTIFICATION")
if(settingsShowNotification) {
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
})
);
}
});
संपादित करें: क्रोम 47 पर, यदि यह प्रासंगिक है।
अद्यतन: आगे प्रयोग करने के बाद, मुझे स्पष्ट मुद्दा मिला कि उपयोगकर्ता मूल वैश्विक चर अद्यतन नहीं कर सकता है जब उपयोगकर्ता नेविगेट हो जाता है और फिर उसी पृष्ठ पर फिर से नेविगेट करता है। हालांकि, मैं सेवा कार्यकर्ता पर एक चर का उपयोग करके इसे रोकने में सक्षम था और शो नोटिफिकेशन बूलियन टॉगल करने के लिए here वर्णित एपीआई का उपयोग कर सेवा कार्यकर्ता को एक संदेश भेज रहा था।
वाह! इस उत्तर के लिए धन्यवाद। महान खोज! –
अधिसूचना प्राप्त करने के बाद हमारे मामले में हम सर्वर पर राज्य की जांच करते हैं और केवल एक शर्त मिलने पर अधिसूचना दिखाते हैं। एक जबरन अधिसूचना को रोकने के लिए हम कभी भी पूरा नहीं करेंगे जैसे 'event.waitUntil (नया वादा (कार्य() {}))। –
टिप्पणियों का जोड़ा। यदि आप यह जानना चाहते हैं कि आपको कोई सूचना दिखाने की आवश्यकता है, तो वर्तमान में विंडो विंडो को खोलें और देखें कि उनमें से कोई भी दृश्यता === 'दृश्यमान' है। बजट एपीआई नामक एक नया नमूना है जो डेवलपर्स को यह जांचने की अनुमति देगा कि क्या वे अधिसूचना नहीं दिखा सकते हैं (यानी मौन धक्का देने की अनुमति है) लेकिन यह एक निश्चित राशि तक ही सीमित होगा। –