2017-08-30 13 views
1

サービスワーカーを使用してプッシュ通知を実装しました。現在ウィンドウに表示されている通知の数を調べる方法はありますか?私の意図は、ウィンドウに表示される通知の数を制限することです。サービスワーカーからアクティブなプッシュ通知の数を確認する

私は以下を試みました。しかし、空の配列を返すgetNotifications関数。

self.addEventListener('push', function(event) { 
if (!(self.Notification && self.Notification.permission === 'granted')) { 
     return; 
    } 
    var data = event.data.json(); 
    var options = { 
    body: data.notificationText, 
    icon: 'files/assets/staff.png', 
    vibrate: [100, 50, 100], 
    data: { 
     dateOfArrival: Date.now(), 
     onClickUrl: data.onClickUrl, 
     event_id: data.event_id, 
     productName: data.product_name 
    } 
    }; 

    event.waitUntil(
    self.registration.getNotifications().then(function(notifications) { 
     console.log(notifications); 
     if (notifications && notifications.length > 0) { 
     notifications.forEach(function(notification) { 
      notification.close(); 
     }); 
     } 
     showNotification(data.title, options); 
    }) 
); 
}); 

答えて

3

通知のリストを返すserviceWorker.getNotifications()を使用できます。あなたがそうのようにそれを使用することができます:

navigator.serviceWorker.register('sw.js'); 

navigator.serviceWorker.ready.then(function(registration) { 
    registration.getNotifications().then(function(notifications) { 
    // get the number of notifications 
    }) 
}); 

あなたserviceworkerファイルでこれをやっているならば、それはです:ユーザーに表示される通知がある場合に

self.registration.getNotifications().then(function(notifications) { 
    // get the number of notifications 
}) 
+0

をカウントが0、イベントです。 var data = e.data.json(); var options = { 本文:data.notificationText、 アイコン: 'files/assets/staff.png'、self.addEventListener( 'push'、function(e) データ:{ dateOfArrival:Date.now() }}; e.waitUntil( self.registration.getNotifications()を(関数(通知){ にconsole.log(notifications.length); 自己。 .registration.showNotification(data.title、options) }) ); }); – Stanly

+0

通知を呼び出す前に、すでに表示されている通知があるかどうかを知りたいと思います。 – Stanly

+1

getNotifications()はサービス担当者からの通知のみを返し、他のアプリに表示される通知はカウントされません。 – jedijulia

関連する問題