【问题标题】:chrome extension offline gcm messages not receivedchrome 扩展离线 gcm 消息未收到
【发布时间】:2016-05-29 17:34:36
【问题描述】:

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

【问题讨论】:

  • 嗨,您最终找到解决此问题的方法了吗?

标签: google-chrome-extension google-cloud-messaging chrome-gcm


【解决方案1】:

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

ma​​nifest.json

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

除此之外,由于我不确定您的代码中已经包含什么,所以我也不妨添加关于 service worker 的内容。正如Implementing Push Messaging for Chrome 中所讨论的,需要注册一个服务工作者来实现网络推送消息。

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

要全面了解 Service Worker 的功能,您可以查看 Introduction to Service Worker 和这篇 SO 帖子中给出的解决方案 - GCM messages not getting delivered to Chrome Packaged Apps(offline mode) 也可能对您有用。

【讨论】:

  • 这是一个后台脚本,在清单中设置了“后台”权限。我对使用 service worker 不感兴趣,因为它不是网页或应用程序,它是一个扩展,我只使用 gcm。另一个链接没有帮助。您可以在 linkymclinkface.com 上查看并查看扩展代码。如果浏览器打开,则可以正常接收消息。如果浏览器关闭并向其发送消息,则当浏览器重新打开时,不会收到“离线”消息。浏览器启动时,“离线”gcm 消息不会触发 onMessage 事件。
猜你喜欢
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 2015-04-21
相关资源
最近更新 更多