2016-11-07 11 views
7

नहीं कहा जाता है मैं एफसीएम के साथ ब्राउज़र पुश नोटिफिकेशन प्रोटोटाइप कर रहा हूं। मैंने बस क्विकस्टार्ट (https://github.com/firebase/quickstart-js/tree/master/messaging) से उदाहरण कोड कॉपी किया है। संदेशों को प्राप्त किया जाता है और प्रदर्शित किया जाना चाहिए। लेकिन जब मैं सेवा कार्यकर्ता (संदेश .setBackgroundMessageHandler) में संदेश को संशोधित करने का प्रयास करता हूं तो कुछ भी नहीं होता है। सेवा कार्यकर्ता को बुलाया जाता है, और यदि मैं पुश अधिसूचनाओं के लिए उस सेवा कार्यकर्ता में एक ईवेंट श्रोता लागू करता हूं, तो यह घटना को पकड़ता है। लेकिन विधि सेटबैकग्राउंड मैसेज हैंडलर कभी नहीं कहा जाता है। मैं क्रोम 54 पर यह कोशिश कर रहा हूं।फायरबेस क्लाउड मैसेजिंग: सेटबैकग्राउंड मैसेज हैंडलर को

सेवा कार्यकर्ता में संदेश को कस्टमाइज़ करने के लिए मुझे क्या करने की ज़रूरत है?

बहुत बहुत धन्यवाद!

उत्तर

1

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

क्विकस्टार्ट (https://github.com/firebase/quickstart-js/tree/master/messaging) से उदाहरण कोड के आधार पर।

यदि आपका ऐप ध्यान में है: पुश संदेश messaging.onMessage() के माध्यम से प्राप्त होता है index.html पर
अपने अनुप्रयोग फोकस नहीं है, तो: पुश संदेश setBackgroundMessageHandler() के माध्यम से प्राप्त होता है तेह सेवा कार्यकर्ता पर फ़ाइल। https://github.com/firebase/quickstart-js/issues/71

संक्षिप्त सारांश:

+0

क्षमा करें। इसका उल्लेख करने में भूल गए: फोकस पर यह अच्छी तरह से काम करता है और मैसेज विधि को बुलाया जाता है और मैं जो संदेश चाहता हूं वह कर सकता हूं। जब पृष्ठ पर कोई फोकस नहीं होता है, तो अधिसूचना प्रदर्शित होती है लेकिन मैं इसे सेटबैकग्राउंड मैसेज हैंडलर विधि के भीतर अनुकूलित नहीं कर सकता क्योंकि इसे कभी नहीं कहा जाता है। – Mathias

22

एक ही समस्या का सामना कर किसी को भी के लिए, यहाँ जवाब है एक तत्व अपने json संदेश में "अधिसूचना" शामिल नहीं हैं।

+0

यह मेरे जीवन को बचाया। मैं सचमुच 'पागलियर' जा रहा था यह समझने की कोशिश कर रहा था कि मेरे हैंडलर को क्यों नहीं बुलाया जा रहा था। –

+0

वही, धन्यवाद! –

+0

बहुत उपयोगी। धन्यवाद :) –

0

यह एक ऐसा समाधान है जो वेबपैप में मेरे लिए काम करता है। यह एक छवि के साथ शीर्षक और बॉडी टेक्स्ट के साथ अधिसूचना प्रदर्शित करता है और उपयोगकर्ता क्लिक को संभालता है।

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'); 

// Initialize Firebase 
var config = { 
    apiKey: "YOUR_API_KEY", 
    authDomain: "YOUR_AUTH_DOMAIN", 
    databaseURL: "YOUR_DB_URL", 
    projectId: "YOUR_PROJ_ID", 
    storageBucket: "YOUR_STORAGE_BUCKET", 
    messagingSenderId: "YOUR_SENDER_ID" 
}; 
firebase.initializeApp(config); 
const messaging = firebase.messaging(); 
messaging.setBackgroundMessageHandler(function (payload) { 
    console.log('Handling background message ', payload); 

    return self.registration.showNotification(payload.data.title, { 
    body: payload.data.body, 
    icon: payload.data.icon, 
    tag: payload.data.tag, 
    data: payload.data.link 
    }); 
}); 

self.addEventListener('notificationclick', function(event) { 
    event.notification.close(); 
    event.waitUntil(self.clients.openWindow(event.notification.data)); 
}); 

JSON संदेश

{ 
"message": { 
    "token": "YOUR_TARGET_APP_TOKEN", 
    "data": { 
     "title": "FCM Message", 
     "body": "This is an FCM Message", 
     "icon": "https://shortcut-test2.s3.amazonaws.com/uploads/role_image/attachment/10461/thumb_image.jpg", 
     "link": "https://yourapp.com/somewhere" 
    } 
} 

}

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