2017-10-11 8 views
0

単純なプッシュ通知サイトを設定しました。ブラウザがフォアグラウンドになっていれば通知は正常に到着します。ブラウザがバックグラウンドの場合、FCMプッシュ通知が2回届きます。

ブラウザがバックグラウンドである場合、問題は始まります。通知は2回到着し、イメージとその他の設定でスタイル設定され、もう1つはタイトルと本文メッセージのみを持ちます。サービスワーカーの

内容:

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

// Initialize the Firebase app in the service worker by passing in the 
// messagingSenderId. 
firebase.initializeApp({ 
    'messagingSenderId': '...' 
}); 

const messaging = firebase.messaging(); 

messaging.setBackgroundMessageHandler(function(payload) { 
    console.log('[firebase-messaging-sw.js] Received background message ', 
    return null; 
}); 

self.addEventListener('install', function (event) { 
    event.waitUntil(skipWaiting()); 
}); 

self.addEventListener('activate', function (event) { 
    event.waitUntil(clients.claim()); 
}); 

self.addEventListener('push', function (event) { 
    var pushData = event.data.json(); 
    try { 
     var notificationData = pushData.data; 
     notificationData.data = JSON.parse(notificationData.data); 
     console.log(notificationData); 
     self.registration.showNotification(pushData.notification.title, notificationData); 
    } 
    catch (err) { 
     console.log('Push error happened: ', err); 
    } 
}); 

クライアントサイドのJS:

firebase.initializeApp(firebaseConfig); 
const messaging = firebase.messaging(); 

messaging.onMessage(function (payload) { 
    console.log("notification recieved"); 
    return null; 
}); 

self.addEventListener('push', function (event) { 
    console.log("window push stuff"); 
    return null; 
}); 

ありがとう!

答えて

1

問題はmessaging.setBackgroundMessageHandlerイベントに次の行を追加することで解決することができます。

self.registration.hideNotification(); 

この方法では、デフォルトの通知は表示されません、あなたはself.addEventListenerイベントであなたの通知を表示する必要があります。

関連する問題