推送通知未通过服务工作人员传递

时间:2016-04-15 14:25:52

标签: google-chrome mobile push-notification service-worker web-push

我们已于2015年7月在我们的网站上部署了chrome服务工作者,并拥有超过380,000个活跃用户,其中超过90%是移动设备。 但是我们遇到了服务工作者的问题。当用户的缓存被清除或许多移动应用程序(如手机上的cleanmaster和其他实用程序应用程序)清除用户移动设备上的缓存时。在这种情况下,我们无法访问该用户的设备令牌。因此,即使有谷歌向我们发送消息ID的380K活跃用户,我们也只获得50K的展示次数,这是一个非常低的比率。 我们的推送通知订阅是在单独的子域上实现的,因为我们无法使整个站点成为https。

我有2个查询:

  1. 我们很想知道Google是否正在设置规范系统(GCM中的移动应用程序),即使通过这些应用程序清除了用户的缓存,他也可以获得推送通知。我们的用户一次又一次地抱怨说,即使在订阅之后,他们也没有得到推动,当我们深入了解并解决这个问题时。
  2. 还有一种方法可以确保我们找回这些用户吗?

1 个答案:

答案 0 :(得分:5)

当用户在Chrome中清除其缓存时,它还会取消注册服务工作者并清除窗口缓存。通过取消注册服务工作者,它将取消订阅推送订阅。

我同意很难理解清除缓存/ Cookie之间的关联以及与服务工作者的关系以及来自用户界面的推送通知 - Chrome团队已经意识到这一点。

关于让这些用户回来的最佳建议是确保当用户启用通知并获得订阅对象时,将该决定作为他们最后的已知决策并在用户重新访问您的网站时进行跟踪,如果他们应该订阅并且您有权限,您可以获得新订阅并将其发送回您的服务器。

更新

我把这篇博客文章放在一起:https://gauntface.com/blog/2016/05/01/push-debugging-analytics

查看您的网站时,您的代码中存在一些问题:

  • 似乎你有几个破坏的承诺链,而且整体而言很难推理推送活动中发生的事情,我强烈建议整理它。
  • 当服务工作者启动并尝试检查推送订阅时,存在一个轻微但明显的错误。
  • 您正在注册两名服务工作者,但只有一名服务工作者可以用于推送。

查看上面的博客文章,它涵盖了我得出的结论以及如何解决它的一些建议。