0

我有一个简单的扩展运行在后台模式(基本上是示例铬客户端gcm代码)。当我运行chrome时,当我向扩展程序发送gcm消息时,消息收到的很好。如果我然后关闭chrome,发送gcm消息到相同的reg id,然后重新启动chrome,则不会收到消息。人们会期望onMessage在扩展开始时被调用(并且添加onMessage监听器)。为什么不是这种情况?铬扩展离线gcm消息没有收到

回答

0

Background pages必须在扩展清单中注册。如果你需要在你的后台页面指定HTML,你可以做,使用页面属性:

manifest.json的

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

除此之外,因为我不知道你已经在你的代码中,我也可以添加关于服务工作者。如在Implementing Push Messaging for Chrome中所讨论的,需要注册服务工作者来实现针对网络的推送消息。

这样做的原因是:在收到推送消息时,浏览器可以启动一个服务人员,它在后台运行,而不需要页面被打开,并分派事件,这样就可以决定如何处理推送消息。

要充分了解服务工作者的功能,你可能会经历Introduction to Service Worker并在此SO后给出的解决方案 - GCM messages not getting delivered to Chrome Packaged Apps(offline mode)可能会为你工作了。

+0

这是一个后台脚本,在清单中设置了“背景”权限。我对使用服务工作者不感兴趣,因为它不是一个网页或应用程序,它是一个扩展,我只使用gcm。另一个链接没有帮助。您可以在linkymclinkface.com上查看并查看扩展代码。如果浏览器打开,则收到的邮件正常。如果浏览器关闭并向其发送消息,则当浏览器重新打开时,不会收到“脱机”消息。浏览器启动时,onMessage事件不会针对“离线”gcm消息触发。 – 2fours