请选择 进入手机版 | 继续访问电脑版
Mozilla

火狐社区

登录    注册

用新浪微博连接 QQ互联

Mozilla的Push Server现可支持主题显示

yingliu Mozilla员工 发表于 2016-12-26 15:11:26 | 显示全部楼层 [复制链接]
1 1697
本帖最后由 yingliu 于 2016-12-26 15:15 编辑

在 Firefox 44 版本时,Firefox 新增了「Web Push」的消息推送功能,让网站能直接向用户推送一些重要通知。举例来说,若现有一通他人拨来的 WebRTC 视频电话,或某个群组对话又重启了新的讨论,你可能会通过 Web App 通知用户;同样也可通过消息服务通知用户获得了新的消息。

在之前的 Hacks 文章中,Dan Callahan 向大家说明了该如何为自己的 Web App 新增 WebPush 功能。你也能到 MDN 上观看更多 Push API 的相关说明文章,或参阅 ServiceWorker Cookbook 看看应如何使用 Web Push 及其他 Service Worker 使用场景。

虽然 Web Push 优点多多,但还是有其他缺点。举例来说,你对脱机用户送出的消息将成为未读消息。在用户回到浏览器画面时,就可能被许多过期的通知所淹没。

MqKnwIsgvW7LyhQZ6Hg.gif

这对特定的操作系统可能有点不适用,所以现在已有更好的方法。Mozilla 的「推送服务 (Push Service)」现可为通知消息提供「主题」,也就是说任何浏览器只要订阅了 App,且该 App 回传了脱机状态,就会以单一主题送出最近的 1 条消息。推送服务将以相同的主题取代所有先前推送的消息,仅会显示最近的 1 条消息。以上面的参考范例来说,所有未读的消息都会整合为单一主题。只要脱机用户开启浏览器,就会取得该主题的单一消息,也会是接收到的最新 1 条消息。
dWhKgDqM06mc_7fJXhMflA.png

因为这项功能更改了 WebPush 的「规格」,所以必须修改服务器程序代码中「实际将消息推送至 Push Service」的部分。你应将「Topic」标头新增至推送消息。可参阅Github 上的主题测试范例获得简易范例,并通过下列程序代码,了解该如何将标头新增到 pusher/main.py 档案之中:
pywebpush.WebPusher(sub_info).send(
    args.msg,
    headers={"topic": topic},
    ttl=args.ttl,
)



如果你正好在使用 MarcoCastelluccio 的 NodeJS web-push 数据库,则可用下列方式新增标头:
webPush.sendNotification(req.body.endpoint,{
         TTL: req.body.ttl,
         payload: req.body.payload,
         userPublicKey: req.body.key,
         userAuth: req.body.authSecret,
         headers: {
             topic: topic
         }
       })





310971373 狐狸精
发表于 2016-12-27 09:36:42 | 显示全部楼层
沙发沙发!功能是好功能,不过到了国内,又会成为众厂商推送广告的营销利器了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发新帖
论坛更多 »
热门活动更多 »
  • [免费报名]量子火狐中国社区见面会 Firefox Quantum Fan Meeting[...

    立即参与
火狐微信
快速回复 返回顶部 返回列表