GCM webpush 在后台

GCM webpush in background

我实现了网络推送通知。获取错误的步骤:

  1. 打开网站
  2. 订阅推送通知
  3. 通过 gcm 发送许多推送 - 一切正常
  4. 关闭站点选项卡
  5. 发送推送和接收"double push" - 第一个没问题,第二个是"This site has been updated in background"
  6. 重新打开网站
  7. 发送推送 - 一切正常

我知道当 service worker 收到推送但不显示通知时会发生这种情况。但是我看到正常的通知,为什么我也看到其他奇怪的通知?我可以摆脱这种行为吗?

self.addEventListener('push', function(event) {
  // this function should return promise always
}

就我而言:

self.addEventListener('push', function(event) {
  event.waitUntil(
    self.registration.pushManager.getSubscription()
      .then(function(subscription) {
        fetch('url')
          .then(function(response) {
            self.registration.showNotification('title', {});
          });
      });
  );
}

应该是:

self.addEventListener('push', function(event) {
  event.waitUntil(
    self.registration.pushManager.getSubscription()
      .then(function(subscription) {
        return fetch('url')
          .then(function(response) {
            return self.registration.showNotification('title', {});
          });
      });
  );
}