在iOS PWA和Safari之间共享IndexedDB

dig*_*ant 6 safari ios indexeddb progressive-web-apps

是否可以在渐进式Web应用程序(PWA)和iOS上的独立Safari之间共享IndexedDB存储和数据?如果是这样,我需要采取什么步骤来共享存储/数据?

我的用例是,我有一个使用第三方身份验证的PWA。正常的行为是,当导航到第三方身份验证页面时,由于PWA不在范围内,因此它会在新的Safari窗口中自动打开该页面。我想从该Safari实例中将身份验证令牌保存在IndexedDB中,打开我的PWA,然后从我的PWA中的IndexedDB中加载令牌。

我已经测试了该实现。在Safari独立环境下,它可以正常工作(即,我可以从IndexedDB中读取令牌),但是当我导航回PWA并尝试读取数据时,该数据不存在。这表明不能共享商店,但是我正在寻找一个更明确的答案。在互联网搜索中,我找不到任何一种指示。

注意:iOS上的Safari和PWA之间不共享本地存储,会话存储和cookie,因此这些解决方案无法正常工作,因此需要使用IndexedDB

Sau*_*pal 0

您可以使用弹出窗口,而不是打开新选项卡,就像这里通过示例和源代码完美解释的那样。这里使用的关键思想是 window.postMessage,它允许窗口和框架跨域相互发送数据。

  • 此解决方案不适用于 iOS 中已安装的 PWA。 (4认同)