PushEvent - 表示收到的推送消息

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

PushEventPush API 的接口,表示收到的推送消息。此事件发送到 ServiceWorker全局范围。它包含从应用程序服务器发送到 PushSubscription 的信息。

构造函数

PushEvent.PushEvent()

创建一个新的 PushEvent 对象。

属性

从其父接口 ExtendableEvent 继承了属性。附加属性:

PushEvent.data 只读

返回 PushMessageData 对象的引用,包含发送到 PushSubscription 的数据。

方法

从其父接口 ExtendableEvent 继承了方法。

实例

以下示例从 PushEvent 中获取数据,并将其显示在所有服务工作者的客户端上。

self.addEventListener('push', function(event) {
  if (!(self.Notification && self.Notification.permission === 'granted')) {
    return;
  }

  var data = {};
  if (event.data) {
    data = event.data.json();
  }
  var title = data.title || "发生了一些事情";
  var message = data.message || "这是您可能要检查的内容。";
  var icon = "images/new-notification.png";

  var notification = new self.Notification(title, {
    body: message,
    tag: 'simple-push-demo-notification',
    icon: icon
  });

  notification.addEventListener('click', function() {
    if (clients.openWindow) {
      clients.openWindow('https://example.blog.com/2015/03/04/something-new.html');
    }
  });
});

规范

规范 状态 备注
Push API
PushEvent 的定义
工作草案 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持42

16

17

4412 不支持37 不支持
PushEvent() 构造函数42

16

17

4412 不支持37 不支持
data57

16

17

4412 不支持44 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 不支持42 未知

44

483

未知37 不支持
PushEvent() 构造函数 不支持42 未知

44

483

未知37 不支持
data 不支持57 未知

44

483

未知43 不支持

1. 在 Firefox 45 和 52 扩展支持版本(ESR)中,服务 worker(和 Push)已被禁用。

2. 仅在 Nightly,Developer Edition 和 Beta 通道中启用。

3. 默认情况下启用推送。

相关链接