【发布时间】:2013-11-18 10:49:05
【问题描述】:
manifest.json:
{
"app": {
"background": {
"scripts": [ "background.js" ]
}
},
"key": "...",
"manifest_version": 2,
"name": "Push Sample",
"permissions": [ "notifications", "pushMessaging" ],
"version": "1.0"
}
background.js:
chrome.runtime.onInstalled.addListener(
function() {
chrome.pushMessaging.onMessage.addListener(
function (message) {
chrome.notifications.create(
'',
{
type: 'basic',
iconUrl: 'icon24.png',
title: 'The Title',
message: message.payload
},
function (notificationID) {
}
);
}
);
}
);
这就是整个应用程序。没有 HTML 页面(没有创建窗口),也没有其他 JavaScript。
当后台页面处于活动状态时,应用程序运行良好,并且我在屏幕右上角看到弹出通知消息。 (未显示的是我临时使用的一些代码,用于显示我的服务器使用的频道 ID。服务器是一个 PHP 程序,它使用 Google Cloud Messaging for Chrome 服务。似乎没问题。)
但是,如果我在几秒钟内什么都不做,应用程序就会变为非活动状态。在 Chrome 的 Extensions 页面上,一行:
Inspect views: background page
更改为:
Inspect views: background page (Inactive)
当发送消息时,该行更改为活动状态(“背景页面”,没有“(非活动)”部分,表示在某种意义上已收到消息。但是,通知代码不会产生在弹出窗口中。
我无法确定日志记录出了什么问题,因为当 JavaScript 控制台打开时,应用程序保持活动状态,然后可以运行。
问题:根据扩展页面上的状态指示,当消息到达时,我的应用程序似乎被唤醒,但它无法正常工作。有人知道为什么吗?
BUG 归档:进行了更多测试,包括 Chrome 的稳定(非测试版)版本。在 OS X、Chrome OS 和 Windows 上试过。一样。这是我提交的问题:https://code.google.com/p/chromium/issues/detail?id=316315
【问题讨论】:
-
你做了什么来修复它?我遇到了同样的问题,我在每次页面加载时都注册了监听器,但我无法接收推送消息(后台页面确实变为活动状态)。
-
没有收到推送消息可能有各种原因,因为向应用程序发送推送消息需要很多事情都完全正确,包括 manifest.json 文件中的 client_id 等等。太复杂了,放在这里。我的问题只是该事件没有得到倾听。换句话说,在解决应用程序的问题之前,有必要知道消息确实到达了计算机并且所有参数都正常。抱歉,我无法提供更多帮助,但推送消息的整理非常复杂。
-
我可以向您保证,GCM 工作正常。我目前使用“正常”背景页面。一切都已到位并按预期工作。我只是想切换到活动页面。当事件页面加载时,我为 chrome.pushMessaging.onMessage 添加了一个监听器,但不知何故,监听器方法永远不会被调用。不过感谢您的回复!
标签: google-chrome-app google-cloud-messaging chrome-gcm