0

我有一个在后台模式下运行的简单扩展(基本上是示例 chrome 客户端 gcm 代码)。当我在 chrome 运行时向我的扩展发送 gcm 消息时,消息接收良好。如果我然后关闭 chrome,将 gcm 消息发送到相同的 reg id,然后重新启动 chrome,则不会收到消息。人们会期望在扩展启动时调用 onMessage(并添加 onMessage 侦听器)。为什么不是这样?

4

1 回答 1

0

背景页面必须在扩展清单中注册。如果您需要在后台页面中指定 HTML,您可以使用 page 属性执行此操作:

清单.json

{
  "name": "My extension",
  ...
  "background": {
    "page": "background.html"
  },
  ...
}

除此之外,由于我不确定您的代码中已经包含什么,所以我也不妨添加关于 service worker 的内容。正如在为 Chrome 实现推送消息中所讨论的,需要注册一个 service worker 来为 web 实现推送消息。

这样做的原因是,当接收到推送消息时,浏览器可以启动一个 service worker,它在后台运行而不打开页面,并调度一个事件,以便您可以决定如何处理该推送消息。

要全面了解 Service Worker 的功能,您可以阅读这篇 SO 帖子中提供的Service Worker 简介和解决方案 - GCM 消息未传递到 Chrome 打包应用程序(离线模式)可能也适合您。

于 2016-05-30T03:33:11.317 回答