GCM webpush 在后台

Posted

技术标签:

【中文标题】GCM webpush 在后台【英文标题】:GCM webpush in background 【发布时间】:2015-08-31 20:18:13 【问题描述】:

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

    打开网站 订阅推送通知 通过 gcm 发送许多推送 - 一切正常 关闭网站标签 发送推送和接收“双推” - 第一个可以,第二个是“此站点已在后台更新” 重新打开网站 发送推送 - 一切正常

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

【问题讨论】:

你能澄清#5吗?您是否发送了一条推送消息但收到了其中两条?还是只发送两条推送消息? 这也是桌面版还是安卓版? @MiguelGarcia 我在桌面上测试过它。 #5 发送一条推送消息 - 接收两次推送。第一个是真实的,第二个不是。 我遇到了类似的问题。我一直在回报一个承诺。也许你能帮助我? ***.com/questions/35948633/… 【参考方案1】:
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', );
          );
      );
  );

【讨论】:

谢谢。我遇到了同样的问题,并且在 fetch 调用之前缺少 return 语句。

以上是关于GCM webpush 在后台的主要内容,如果未能解决你的问题,请参考以下文章

Android GCM 通知后台堆栈

GCM 网络管理器已弃用。 Firebase Jobdispatcher 没有在后台持续工作?

后台 IOS / php 服务器中的 GCM 通知

GCM 推送消息以在前台更新 UI 并在后台发布通知。如何实施?

当应用程序在后台或被杀死时,GCM 支持 ios 应用程序

GCM BroadcastReceiver 仅在应用程序正在运行或在后台运行时触发