如果电脑已关闭或正在休眠,网络推送通知不会显示

web push notification doesn't show if pc is off or sleeping

所以我终于为我的网站实现了一个成功的推送通知 然而,当我推送通知并假设接收者的电脑已关闭或处于睡眠模式时 gcm returns 成功但通知丢失,它永远不会为该用户弹出......而另一方面我注意到 facebook 似乎正在做一些事情来帮助它解决这个问题......你看到一个 facebook chrome 打开后立即通知 chrome 重新启动后的第一件事... 有没有人知道 fb 如何解决这个问题??

如果您使用的是标准 Web 推送服务(例如在 Firefox 中),您需要定义一个名为 'TTL' 的 header。 从标准 (https://datatracker.ietf.org/doc/html/draft-ietf-webpush-protocol-02):

An application server can use the TTL header field to limit the time that a push message is retained by a push service. The TTL header field contains a value in seconds that describes how long a push message is retained by the push service.

如果不设置,默认为0。

GCM 尚不支持 Web Push 标准,但它确实有一个 time_to_live 选项可以达到相同的结果:https://developers.google.com/cloud-messaging/concept-options#ttl

编辑:Mozilla 推送服务现在需要 TTL header:https://blog.mozilla.org/services/2016/02/20/webpushs-new-requirement-ttl-header/