Rub*_*Jr. 9 notifications google-chrome google-cloud-messaging web-push push-api
我一直在阅读Chrome 在这里实施Web Push API的文档,我注意到API说"你保证在收到推送时会显示通知",并且在限制条件下它声明"你必须在你会收到推送信息".
在我的localhost上实现示例后,我使用cURL成功发送推送通知.我很好奇,所以我注释掉实际上调用showNotification函数的行,然后放入console.log,发现我实际上可以发送,接收和完全忽略推送通知.我甚至尝试使用if语句来控制是否根据我从主页面控制的全局布尔值来显示它们,这是有效的.所以我想知道是否有人知道他们的意思是说你需要显示通知,并且无法提供无声推送通知?
这不仅仅是为了它,我合法地可能需要控制是否在我的网络应用程序中显示这些通知,所以如果这实际上是可能的话会很好.如果你好奇,请在下面编写代码.
self.addEventListener('push', function(event) {
var title = 'New Message';
var body = 'You have received a new message!';
var icon = '/img/favicon.png';
var tag = 'well-notification';
console.log("DID RECEIVE NOTIFICATION")
if(settingsShowNotification) {
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
})
);
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:在Chrome 47上,如果它是相关的.
更新:经过进一步的实验,我发现了一个明显的问题,即一旦用户导航离开然后重新导航到同一页面,我就无法更新原始的全局变量.但是,我能够使用serviceworker本身的变量并使用此处描述的API向服务工作者发送消息以切换showNotifications布尔值来绕过这一点.
Jas*_*son 10
您必须显示通知,如果您没有显示通知,则会从浏览器收到强制通知,说"此站点已在后台更新".但显示可怕消息的要求略有放松:
从16年1月开始,似乎检查最后10个通知是否每个都显示通知.如果在这十个一个通知,通知并没有表现出一个通知,一个被认为会发生事故,浏览器将不显示吓人"这个网站已在后台更新".您必须在过去十年中错过两个通知才能显示可怕的消息.
注:如果在活动的浏览器标签的地址栏中的URL匹配你的网页的起源,以及浏览器不最小化,你是不是需要出示的通知.这可能是您的测试成功的原因,如果您在运行测试时在页面上.
跟踪实施情况的Chromium bug:https://code.google.com/p/chromium/issues/detail?id = 437277
相关的源代码行:https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/push_messaging/push_messaging_notification_manager.cc&l=249
归档时间: |
|
查看次数: |
3136 次 |
最近记录: |