有没有办法在前台不活动的 iOS 渐进式 Web 应用程序 (PWA) 中保留状态

问题描述 投票:0回答:1

我一直在使用 iOS 的新 Web Push 支持来支持渐进式 Web 应用程序 (PWA)。我遇到了一个问题,当 PWA 被刷走并且不在前台运行时,我存储在服务工作线程中的任何状态(通过主线程的 postMessage)都会丢失。

我的用例是当我收到推送通知时,我想使用其中的一些状态。似乎在后台运行的服务工作者失去了该状态的上下文。

我尝试通过以下方法解决此问题,但无法正确访问它们:

  1. 使用索引数据库
  2. 使用缓存存储
  3. 将状态值存储为类成员

我想知道当 PWA 应用程序不在前台且应用程序关闭时,是否有人有一种存储状态的好方法?似乎服务人员在收到“推送”事件时就会变得活跃,所以我希望有某种方法可以将某些东西存储在某个地方以供使用?

javascript progressive-web-apps service-worker web-push
1个回答
0
投票

有多种方法可以在浏览器关闭或不活动时在 Web 应用程序中保留状态。

  1. 饼干。您可以简单地设置一个包含字符串化对象数据的cookie

  2. 本地存储。您可以使用 localstorage API 直接将数据存储在用户的浏览器缓存中。 localforage 是一个很好的库,它是索引数据库的包装器。

  3. 如果您希望数据暂时保留在服务器上(特别是如果您有敏感信息要存储),那么我建议在边缘使用 Redis 或某种形式的持久对象。然后,您可以通过 cookie 或本地存储中的标识符将这些对象链接到用户。

也就是说,我最近也开始在移动 Safari 中实现推送通知。我为此使用第三方服务只是因为在内部实施此服务非常复杂。我很乐意在 DM 中推荐我为此使用的供应商。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.