我有一个在后台模式下运行的简单扩展(基本上是示例chrome客户端gcm代码)。当我向我的扩展发送一条gcm消息,而chrome正在运行时,消息被正常接收。如果我随后关闭chrome,将gcm消息发送到相同的reg id,然后重新启动chrome,则不会收到这些消息。人们期望在扩展启动时调用onMessage (并且添加了onMessage侦听器)。为何不是这样呢?
发布于 2016-05-30 11:33:11
必须在扩展清单中注册Background pages。如果需要在背景页中指定HTML,可以使用page属性来实现:
manifest.json
{
"name": "My extension",
...
"background": {
"page": "background.html"
},
...
}
除此之外,由于我不确定您的代码中已经包含了什么,我不妨也添加一些关于service worker的内容。正如在Implementing Push Messaging for Chrome中所讨论的,需要注册一个服务工作者来实现web的推送消息。
这样做的原因是,当接收到推送消息时,浏览器可以启动一个在后台运行的服务工作线程,而无需打开页面,并调度一个事件,以便您可以决定如何处理该推送消息。
要完全理解服务工作者的功能,您可以通过本文中给出的Introduction to Service Worker和解决方案,因此post - GCM messages not getting delivered to Chrome Packaged Apps(offline mode)可能也适用于您。
https://stackoverflow.com/questions/37512906
复制相似问题