【问题标题】:Can service-worker stop push notification sent by GCM api?service-worker 可以停止 GCM api 发送的推送通知吗?
【发布时间】:2023-03-31 09:05:01
【问题描述】:

在我当前的架构中,我使用 GCM API 提交推送通知。 这会在服务工作者中触发“推送”事件。然后,服务人员将一些数据添加到通知中。

如果服务人员由于某些错误而无法添加数据,我会收到空​​白通知。

Service Worker 能否避免显示 GCM 发送的通知?

【问题讨论】:

  • “空白通知”是指通知镶边显示还是实际上是空白的。你在这里指的是什么错误? "但是如果 service-worker 由于某些错误而无法添加数据"
  • “空白通知”是指通知以默认文本显示。在 service worker 中,我调用 api 将数据添加到通知中。例如,api 已关闭并且无法添加数据。我可以让 service-worker 停止显示通知吗?
  • 不,你不能。但是“api”不能下来,所以我仍然不确定你遇到的场景。

标签: push-notification service-worker web-push push-api chrome-gcm


【解决方案1】:

似乎在您遇到错误情况时,您仍然显示自己的通知,并且由于您无法填写它,因此它显示为空白。

您最好的选择是使用一些通用文本。您可以冒险不显示它,但几次之后 chrome 将开始显示它自己的通知(毕竟你“承诺”你会通过说 {userVisibleOnly: true} 显示一个)

查看 chrome 代码我能想到的最佳步骤顺序是:

1) 尝试显示您要显示的通知 2)如果由于某种原因失败,请检查您是否在前台,或者您的通知之一是否已经显示。如果是这样什么都不做 3)否则您需要显示通知,否则chrome很可能会为您显示它并且冒险可能不值得。只需添加一些通用文本并显示即可。

【讨论】:

    【解决方案2】:

    来自 Google Developers 的 Push Notifications guide

    您必须将 {userVisibleOnly: true} 参数传递给 subscribe() 方法。这告诉浏览器通知将始终 收到推送消息时显示。目前是强制性的 显示通知。

    结果是,如果您没有响应推送(在向浏览器承诺您会这样做之后)显示某些内容,浏览器(无论如何,Chrome)只会为您显示一些内容。但是,这似乎会在某个时候发生变化。

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多