请求持久化存储权限

8
我的Web应用程序的用户要求增加“离线模式”,可以在没有互联网连接的情况下将他们的工作存储到硬盘上。他们可能会离线几分钟到多个星期,为了防止数据丢失,我需要能够持久化数据,即使在存储压力下(未经适当授权使用IndexedDB可能导致数据丢失)。
我在Google开发者上读到异步navigator.storage.persist()方法可用于请求用户的文件存储权限,但在Chrome上无法使用 - 承诺总是返回false而不提示用户。
然后我在这里读到,Chrome可能决定不显示权限弹出窗口,而是根据预先计算的决策授予或拒绝持久性存储权限。这似乎基于以下内容:
- 网站被收藏夹保存(用户有5个或更少的书签) - 网站有高站点参与度 - 网站已添加到主屏幕 - 网站启用了推送通知
如果上述条件中有任何一个为真,则权限已经被授予,如果没有,则会自动拒绝。这意味着在Chrome中,navigator.storage.persist()navigator.storage.persisted() 没有区别,尽管第一个是权限请求,第二个是权限检查。
我已经构建了应用内 UI 以请求持久存储权限,所以我需要的只是一种可靠的方法,在 Chrome 中显示权限弹出窗口,以便用户可以授予或拒绝该权限。由于我无法控制前三个条件,或者合理地要求用户满足它们,因此似乎我的唯一选择是请求显示推送通知的权限,这很不幸,因为那不是我需要的权限,我也不想显示推送通知。这样的权限请求可能会让用户感到困惑。
是否有更清晰、用户友好的方法来获取 Chrome 中使用持久存储的权限?
2个回答

4
如果上述任何情况成立,权限已经被授予,否则将自动拒绝。但是这是不正确的;仍然必须请求权限。在请求/授予权限之前,源仍将被视为"尽力而为"。站点必须明确请求权限。您可以通过在从未请求过权限的站点上调用来观察此操作。
我需要的只是一种确保在Chrome中显示权限弹出窗口的可靠方法,以便用户可以授予或拒绝该权限。
对于此权限,Chrome没有权限弹出窗口,因此没有这样的方法。
首选模型是在授予权限之前不提供有关离线功能的任何保证;也就是说,请求权限并仅在授予权限后显示任何形式的“您的数据绝对肯定可脱机使用”的保证。

2
Joshua所提到的,Chrome没有为此权限弹出窗口。
我所做的是在我的网站设置中手动启用了推送通知。 在Chrome中手动启用推送通知的方法 这就足够让Chrome授予我的网站持久存储权限。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接