2017-02-17 13 views
19

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

Here पुश API के बारे में अच्छा लेख है और अच्छा example प्रदान की लेकिन यह सर्वर और web-push घटक के रूप में NodeJS का उपयोग करता अधिसूचना सेवाओं के लिए अनुरोध भेजने के लिए।

कोई भी .NET उदाहरण नहीं मिल रहा है। मैं दो कामकाज के बारे में सोचता हूं।

जब आप डेटा के बिना एक धक्का संदेश भेजते हैं, आप बस इसे endpoint यूआरएल एक HTTP POST अनुरोध का उपयोग करने के लिए भेजें:

पहले, सर्वर के बारे में पुश एपीआई लेख note के आधार पर खरोंच से सब कुछ लिखने के लिए है। हालांकि, जब पुश संदेश में डेटा होता है, तो आपको इसे एन्क्रिप्ट करना होगा, जो कि एक जटिल प्रक्रिया है।

दूसरा, AspNetCore.NodeServices (इसके बारे में article) का उपयोग करने Node.js स्क्रिप्ट फ़ाइल को कार्यान्वित करने के लिए

वहाँ अधिक समाधान कर रहे हैं? शायद इसके लिए तैयार समाधान मौजूद है?

3 मामलों पर शोध विषय के बाद:

  1. HTTP + पुराने ब्राउज़र + आईई सभी संस्करणों - उपयोग SignalR + एचटीएमएल का उपयोग कर रेंडर अधिसूचना + js
  2. HTTP + आधुनिक ब्राउज़रों (क्रोम, फ़ायरफ़ॉक्स, सफारी, ओपेरा ?, एज) अधिसूचना एपीआई के समर्थन के साथ। - सिग्नलआर का उपयोग करें और new Notification('Message')
  3. एचटीटीपीएस + क्रोम (मोबाइल) पुश एपीआई के समर्थन के साथ सेवा-श्रमिकों का उपयोग कर बंद साइट के लिए मूल अधिसूचना को ट्रिगर करने के लिए जेएस के साथ मूल ब्राउज़र अधिसूचना को ट्रिगर करें। क्रोम का मोबाइल संस्करण सेवा-कार्यकर्ता का उपयोग करके केवल सूचनाएं बना सकता है।

यह जटिल हो गया है। गलत क्या है?

संभावित समाधान:

1 और 2 मामलों के लिए this भंडार पाया। लगता है कि यह एक अच्छा फॉलबैक समर्थन के साथ एक अच्छा फ्रंटेंड समाधान है। 3 मामले के लिए अभी भी नहीं पता कि क्या करना है।

वर्तमान समाधान। जोड़ा गया: 2017-11-22

  • कोई ऑफ़लाइन ग्राहकों सूचनाओं का समर्थन
  • कोई मोबाइल समर्थन
  • क्रोम v62 + सभी परियोजना आगे बढ़ के लिए https के लिए - link
  • SignalR (0.2 का उपयोग करना।0) ऑनलाइन ग्राहकों को धक्का भेजने के लिए
  • देशी desctop या html अधिसूचनाओं को दिखाने के लिए pnotify v3 + का उपयोग करना।
  • pnotify v4.0.0 के लिए प्रतीक्षारत (लेखक वादों मोबाइल समर्थन क्रोम। Issue)
  • SignalR 1.0 के साथ नेट कोर 2.1 के लिए प्रतीक्षा कर रहा है इसे करने के लिए पूरी परियोजना के पुनर्लेखन के लिए।
+4

SignalR का उपयोग नहीं करने के लिए अपने कारण क्या है - यह बैकएंड, जहाँ आप तो साथ कॉलबैक में प्रतिक्रिया से अपने ग्राहक को सूचित करने में सक्षम हो जाएगा एचटीएमएल 5 पुश एपीआई। –

+0

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

+0

आप [पुष्पैड] (https://pushpad.xyz/docs/pushpad_pro_getting_started) और इसकी [REST API] (https://pushpad.xyz/docs/rest_api) का उपयोग कर सकते हैं (देखें 'POST/Project/PROJECT_ID/सूचनाएं')। – collimarco

उत्तर

3

आपके द्वारा उल्लेखित नोड लाइब्रेरी को सी #: web-push-csharp पर पोर्ट किया गया है।

यहाँ एक सरल उपयोग अपनी साइट से सीधे ले जाया उदाहरण है:

var pushEndpoint = @"https://fcm.googleapis.com/fcm/send/efz_TLX_rLU:APA91bE6U0iybLYvv0F3mf6uDLB6...."; 
var p256dh = @"BKK18ZjtENC4jdhAAg9OfJacySQiDVcXMamy3SKKy7FwJcI5E0DKO9v4V2Pb8NnAPN4EVdmhO............"; 
var auth = @"fkJatBBEl..............."; 

var subject = @"mailto:[email protected]"; 
var publicKey = @"BDjASz8kkVBQJgWcD05uX3VxIs_gSHyuS023jnBoHBgUbg8zIJvTSQytR8MP4Z3-kzcGNVnM..............."; 
var privateKey = @"mryM-krWj_6IsIMGsd8wNFXGBxnx..............."; 

var subscription = new PushSubscription(pushEndpoint, p256dh, auth); 
var vapidDetails = new VapidDetails(subject, publicKey, privateKey); 

var webPushClient = new WebPushClient(); 
try 
{ 
    webPushClient.SendNotification(subscription, "payload", vapidDetails); 
} 
catch (WebPushException exception) 
{ 
    Console.WriteLine("Http STATUS code" + exception.StatusCode); 
} 
+0

में किसी की मदद कर सकता है pushapndpoint googleapis को लक्षित करने का मतलब है कि यह केवल क्रोम में काम करेगा? – aleha

+0

फ़ायरफ़ॉक्स को लक्षित करने के लिए आपको एक अलग एंडपॉइंट की आवश्यकता होगी। प्रोजेक्ट के रीडेमे में ब्राउजर सपोर्ट की एक टेबल है। –

संबंधित मुद्दे