service-worker 可以停止 GCM api 发送的推送通知吗?
Posted
技术标签:
【中文标题】service-worker 可以停止 GCM api 发送的推送通知吗?【英文标题】:Can service-worker stop push notification sent by GCM api? 【发布时间】:2016-05-14 03:05:43 【问题描述】:在我当前的架构中,我使用 GCM API 提交推送通知。 这会在服务工作者中触发“推送”事件。然后,服务人员将一些数据添加到通知中。
如果服务人员由于某些错误而无法添加数据,我会收到空白通知。
Service Worker 能否避免显示 GCM 发送的通知?
【问题讨论】:
“空白通知”是指通知镶边显示还是实际上是空白的。你在这里指的是什么错误? "但是如果 service-worker 由于某些错误而无法添加数据" “空白通知”是指通知以默认文本显示。在 service worker 中,我调用 api 将数据添加到通知中。例如,api 已关闭并且无法添加数据。我可以让 service-worker 停止显示通知吗? 不,你不能。但是“api”不能下来,所以我仍然不确定你遇到的场景。 【参考方案1】:似乎在您遇到错误情况时,您仍然显示自己的通知,并且由于您无法填写它,因此它显示为空白。
您最好的选择是使用一些通用文本。您可以冒险不显示它,但几次之后 chrome 将开始显示它自己的通知(毕竟你“承诺”你会通过说 userVisibleOnly: true 显示一个)
查看 chrome 代码我能想到的最佳步骤顺序是:
1) 尝试显示您要显示的通知 2)如果由于某种原因失败,请检查您是否在前台,或者您的通知之一是否已经显示。如果是这样什么都不做 3)否则您需要显示通知,否则chrome很可能会为您显示它并且冒险可能不值得。只需添加一些通用文本并显示即可。
【讨论】:
【参考方案2】:来自 Google Developers 的 Push Notifications guide:
您必须将
userVisibleOnly: true
参数传递给 subscribe() 方法。这告诉浏览器通知将始终 收到推送消息时显示。目前是强制性的 显示通知。
结果是,如果您没有响应推送(在向浏览器承诺您会这样做之后)显示某些内容,浏览器(无论如何,Chrome)只会为您显示一些内容。但是,这似乎会在某个时候发生变化。
【讨论】:
以上是关于service-worker 可以停止 GCM api 发送的推送通知吗?的主要内容,如果未能解决你的问题,请参考以下文章