9

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

बात है जब मैं जेनरेट किया गया टोकन के लिए परीक्षण करने के लिए सूचना भेजने का प्रयास करते हैं, मैं एक प्रतिक्रिया है कि संदेश भेजे जाने से हो रही है, लेकिन मैं ग्राहक पक्ष पर इसे प्राप्त करने में सक्षम नहीं हूँ।

मेरे index.html

<head> 
    <script src="https://www.gstatic.com/firebasejs/4.4.0/firebase.js"></script> 
    <link rel="manifest" href="./firebase.json"> 
</head> 
<script> 
    if ('serviceWorker' in navigator) { 
    navigator.serviceWorker.register('./firebase-messaging-sw.js').then(function(registration) { 
     console.log('Firebase Worker Registered'); 

    }).catch(function(err) { 
     console.log('Service Worker registration failed: ', err); 
    }); 
    } 
    </script> 

मैं सफलतापूर्वक सेवा कार्यकर्ता फ़ाइल

मेरे App.component.ts

var config = { 
      apiKey: "somekey", 
      authDomain: "someproject-2.firebaseapp.com", 
      databaseURL: "https://someproject-2.firebaseio.com", 
      projectId: "someproject-2", 
      storageBucket: "", 
      messagingSenderId: "someid" 
      }; 
      firebase.initializeApp(config); 



     const messaging = firebase.messaging(); 

     messaging.requestPermission() 
     .then(function() { 
      console.log('Notification permission granted.'); 
      return messaging.getToken() 
     }) 
     .then(function(result) { 
      console.log("The token is: ", result); 
     }) 
     .catch(function(err) { 
      console.log('Unable to get permission to notify.', err); 
     }); 

     messaging.onMessage(function(payload) { 
     console.log("Message received. ", payload); 
     }); 

मैं अनुमति संवाद हो रही है रजिस्टर करने के लिए कर सकती हूं बॉक्स अनुमति पूछ और इस कोड

साथ कर्ल कोड मैं करने के लिए इस्तेमाल एक टोकन हो रही संदेशों

curl -X POST -H "Authorization: key=somekey" -H "Content-Type: application/json" -d '{ 
    "notification": { 
    "title": "Portugal vs. Denmark", 
    "body": "5 to 1", 
    "icon": "firebase-logo.png", 
    "click_action": "http://localhost:8081" 
    }, 
    "to": "sometoken" 
}' "https://fcm.googleapis.com/fcm/send" 

मैं सफलतापूर्वक इस कोड

मैं समझ नहीं के साथ सूचना भेजने के लिए कर सकती हूं भेज जहां मैं गलत जा रहा हूँ, हो सकता है क्योंकि यह स्थानीय होस्ट पर है? शायद ऑन मैसेज विधि ठीक से नहीं चल रही है? किसी भी सहायताको बहुत सराहा जाएगा!

+0

में आयातक का उपयोग नहीं किया है सेवा कार्यकर्ता असुरक्षित उत्पत्ति पर काम नहीं करता है। इसलिए आपका लोकलहोस्ट https पर होना चाहिए। –

+0

क्या आपको समस्या मिली? मुझे भी ठीक यही समस्या है। – chrisonline

+0

कोई ब्रो, आपको पता नहीं चलेगा कि मुझे –

उत्तर

0

ठीक देखें मैं stackoverflow पर इस बात के लिए कोई जवाब नहीं मिला, तो मैं अपने दम पर यह करने के लिए है और यह काम कर गया है!

समस्या सेवा कार्यकर्ता फ़ाइल में था, मैं जाहिरा तौर पर संदेश भेजने चर परिभाषित नहीं किया है।

किसी को भी इस मुद्दे का सामना करना पड़ रहा है, तो बस सुनिश्चित करें कि आपके सेवा कार्यकर्ता फ़ाइल कुछ इस तरह दिखता हो।

importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js'); 
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'); 

firebase.initializeApp({ 
    'messagingSenderId': '182145913801' 
    }); 

const messaging = firebase.messaging(); 
0

FCM वेबसाइट पर कहा गया है:

FCM एसडीके समर्थित है केवल में पृष्ठों पर सर्व HTTPS। यह सेवा श्रमिकों के उपयोग के कारण है, जो केवल HTTPS साइटों पर उपलब्ध हैं।

, https://firebase.google.com/docs/cloud-messaging/js/client

+1

पता नहीं है, मुझे ऐसा नहीं लगता है, क्योंकि मैंने अपनी स्टेजिंग वेबसाइट पर बदलावों को तैनात किया है जो https नहीं था, और वहां पर मैं अपने सेवा कार्यकर्ता को खुद को एक त्रुटि प्राप्त करने में असमर्थ था साइट https नहीं है, लेकिन स्थानीय पर, मैं सेवा कार्यकर्ता को पंजीकृत करने और टोकन प्राप्त करने में सक्षम हूं, इससे पता चलता है कि इसे स्थानीयहोस्ट पर चलाया जा सकता है और मुझे याद है कि फायरबेस ट्यूटोरियल में वह व्यक्ति अपने http पर कर रहा था localhost –

+1

हाँ आप सही हैं, क्योंकि क्रोम में 'लोकलहोस्ट' सफेद सूचीबद्ध है, मेरी गलती मैं @ManzurKhanSarguroh –

+0

पर सहमत हूं मैं आपको ब्रो का जवाब देने का समय लेने की सराहना करता हूं –

0

मैं ने वही समस्या थी और मैं firebase पर संदेश बादल के पास गया और मेरी सर्वर कुंजी हो गया और कहा कि कर्ल अनुरोध करने के लिए।

curl --header "Authorization: key=CloudMessagingServerKey" --header "Content-Type: application/json" -d '{ 
    "notification": { 
     "title": "FCM Message", 
     "body": "This is an FCM Message", 
     }, 
    "to": "token from messaging.getToken()" 
    }' "https://fcm.googleapis.com/fcm/send" 

और मेरे firebase-संदेश-sw.js नीचे

importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase- 
app.js'); 
importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase- 
messaging.js'); 

firebase.initializeApp({ 
    apiKey: 'yourapikey', 
    authDomain: 'xxxx.firebaseapp.com', 
    databaseURL: 'https://xxxx.firebaseio.com', 
    projectId: 'xxxx', 
    storageBucket: 'xxxx.appspot.com', 
    messagingSenderId: 'your message sender Id', 
}); 

const messaging = firebase.messaging(); 

वह मेरे लिए चाल किया था कोड कैसा दिखता था। मेरी त्रुटियां थीं कि मैं गलत सर्वर का उपयोग कर रहा था और मैंने अपने फायरबेस-मैसेजिंग-sw.js