【问题标题】:Chorme Web Push Notification with payload带有有效负载的 Chrome Web 推送通知
【发布时间】:2018-04-04 07:31:32
【问题描述】:
self.addEventListener('push', function(event) {
  var jsonObj = event.data.json();
}

我已经写了 chrome web 推送通知,但是event.data 总是为空。

目前我正在使用 GCMPushMessage 库,我想我需要 php curl 来发送通知。任何人都可以帮我发送带有有效负载的网络推送通知吗?

【问题讨论】:

    标签: php web push-notification notifications google-cloud-messaging


    【解决方案1】:

    截至 2015 年,related SO post 声明这是一种预期行为。

    当前在 Chrome 中实现 Push API 的一个缺点是您无法通过推送消息发送任何数据。不,什么都没有。这样做的原因是,在未来的实施中,有效负载数据必须在您的服务器上加密,然后才能发送到推送消息端点。这样,无论是什么推送提供者,端点都将无法轻松查看推送消息的内容。这还可以防止其他漏洞,例如 HTTPS 证书验证不佳以及服务器和推送提供程序之间的中间人攻击。但是,目前尚不支持这种加密,因此同时您需要执行提取以获取填充通知所需的信息

    根据文档提供的信息,您必须获取信息,然后将其填充到通知中。

    更新于 2016 年 3 月发布,名称为:Web Push Payload Encryption

    在 Chrome 50 之前,推送消息不能包含任何负载数据。当你的服务工作者中触发“推送”事件时,你所知道的只是服务器试图告诉你一些事情,而不是它可能是什么。然后,您必须向服务器发出后续请求并获取要显示的通知的详细信息,这可能会在网络状况不佳的情况下失败。

    现在在 Chrome 50(以及桌面版 Firefox 的当前版本)中,您可以在推送的同时发送一些任意数据,这样客户端就可以避免发出额外的请求。然而,强大的力量伴随着巨大的责任,因此所有有效载荷数据都必须加密。

    确保您已遵循在 Chrome 的网络推送中应用有效负载所需的实施。像一些客户端更改和服务器端更改。

    希望这会有所帮助。

    【讨论】:

    • 谢谢!!我已经使用带有 TTL:3600 的 fetch() 方法设置了这个,所以现在它工作得很好......
    猜你喜欢
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 2015-07-31
    • 2016-07-19
    • 2016-06-14
    • 2015-04-10
    • 1970-01-01
    相关资源
    最近更新 更多