Service Worker onClick 事件 - 打开并将一些数据传递给 PWA

Service Worker onClick event - Open and pass some data to a PWA

我已经为我的 PWA 实现了推送通知,我的服务人员 (SW) 目前正在处理这样的通知点击:

  1. 如果应用程序是 运行,它将把它放在前台并使用 Client.postMessage API
  2. 向它发送一些数据
  3. 如果应用程序不是 运行,它将使用 URL 参数通过 Client.openWindow 启动它,这些参数包含一些关于推送通知的最少信息

第 1 点如我所愿。但是对于 2,我希望能够向我的应用程序发送与 1 相同的数据,但我无法将其添加到 URL(负载太大)。问题是我只能在我的应用程序准备好接收此类消息时使用 Client.postMessage...

最简单的方法是什么?

注意:我的用例是一个聊天应用程序,当收到消息时会显示推送通知,点击通知会触发应用程序并显示相应的聊天和消息。我想将消息本身的内容(在 service worker 收到的推送通知中)传递给应用程序,以便它可以直接显示,而不必从后端拉取它。

我是这样解决问题的:

  1. SW收到推送通知,用户点击
  2. SW 将要发送到应用程序的信息存储在与唯一 ID 关联的 IndexedDB 中
  3. SW 使用 Client.openWindow 自定义 URL + 唯一 ID 打开应用程序 当应用程序启动时,它使用 id
  4. 从 IndexedDB 中提取数据