Javascript 如何在MacOS上持久化浏览器存储?

Javascript 如何在MacOS上持久化浏览器存储?,javascript,google-chrome,persistence,progressive-web-apps,indexeddb,Javascript,Google Chrome,Persistence,Progressive Web Apps,Indexeddb,我想将数据持久保存在IndexedDB中 这是我的代码: if (navigator.storage && navigator.storage.persist) navigator.storage.persist().then(granted => { if (granted) alert("Storage will not be cleared except by explicit user action"); else ale

我想将数据持久保存在IndexedDB中

这是我的代码:

if (navigator.storage && navigator.storage.persist)
  navigator.storage.persist().then(granted => {
    if (granted)
      alert("Storage will not be cleared except by explicit user action");
    else
      alert("Storage may be cleared by the UA under storage pressure.");
  });
我读了这篇文章:

从Chrome 55开始,Chrome将自动授予 如果以下任一项为真,则为持久性权限:

网站已添加书签(用户的书签不超过5个)

该站点具有较高的站点参与度

该站点已添加到主屏幕

该站点已启用推送通知

我的网站是一个PWA,已安装,并且有权使用推送通知,但是
已被授予
在我的Mac上从不
真实
,在我的Android智能手机上它可以工作


我做错了什么?

Android在默认情况下启用了推送通知,而在iOS上,您必须显式启用(如果您还没有启用)

当你说:

我的网站是PWA,有使用推送通知的权限

你到底是什么意思

推送通知是在客户端/浏览器级别授予的,而不是在PWA上。因此,如果您使用Android设备访问PWA并授予接收通知的权限,那么Safari也必须这样做


如果您想了解如何缓存静态资产和获取服务人员的请求,您可以,我在这里介绍了PWA的不同缓存策略。

我的意思是,我已经在Mac上安装了PWA,我猜应该怎样做
该站点已添加到主屏幕
为真,我使用了
pushManager.subscribe
订阅推送通知应该怎样做
该站点已启用推送通知
为真。但是
navigator.storage.persist()
仍然给我假消息。正如我所说,您必须明确地在iOS上启用通知。您所做的是实现请求发送/接收通知权限的代码,但这并不意味着它们在iOS上已启用。这就是你在Android上安装它们的原因,因为默认情况下会启用通知。我的问题是关于MacOS而不是iOS。