我有一个在后台模式下运行的简单扩展(基本上是示例chrome客户端gcm代码)。当Chrome正在运行时,当我向扩展程序发送gcm消息时,消息收到了。如果我然后关闭chrome,将gcm消息发送到相同的reg id,然后重新启动chrome,则不会收到消息。人们可以期望在扩展开始时调用onMessage(并添加onMessage监听器)。为什么不是这样?
答案 0 :(得分:0)
Background pages。如果您需要在后台页面中指定HTML,则可以使用页面属性执行此操作:
<强>的manifest.json 强>
{
"name": "My extension",
...
"background": {
"page": "background.html"
},
...
}
除此之外,由于我不确定您的代码中已有什么,我不妨添加一下服务工作者。正如Implementing Push Messaging for Chrome中所讨论的,需要注册服务工作者来实现Web的推送消息。
这样做的原因是,当收到推送消息时,浏览器可以启动服务工作者,该服务工作者在后台运行而不打开页面,并调度事件以便您可以决定如何处理该推送消息。
要完全了解服务工作者的功能,您可以查看Introduction to Service Worker,此SO帖子中提供的解决方案 - GCM messages not getting delivered to Chrome Packaged Apps(offline mode)也可能适用于您。