ios - 在 iOS PWA 和 safari 之间共享 IndexedDB

标签 ios safari indexeddb progressive-web-apps

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

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

我已经测试了这个实现。它在 Safari 中独立运行良好(即我可以从 IndexedDB 读取 token ),但是当我导航回我的 PWA 并尝试读取数据时,它不存在。这表明商店无法共享,但我正在寻找更明确的答案。我在 Internet 搜索中找不到任何指示。

注意:iOS 上的 Safari 和 PWA 之间不共享本地存储、 session 存储和 cookie,因此这些解决方案不起作用,需要使用 IndexedDB

最佳答案

您可以使用弹出窗口,而不是打开新标签,就像它如何被精美地解释一样here带有示例和源代码。 这里使用的关键思想是 window.postMessage,它允许窗口和框架跨域向彼此发送数据。

关于ios - 在 iOS PWA 和 safari 之间共享 IndexedDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161805/

相关文章:

javascript - MediaStream 未处理的 promise 拒绝 : [object DOMError] (in Safari 11)

javascript - IndexedDb 获取索引中的所有匹配项

javascript - 为什么我的 indexedDB.open.onsuccess 事件没有被调用?

ios - 从扩展中获取 ViewController 的实例

ios - 如何根据 UITableViewCells 的高度调整 UITableView 的高度?

javascript - 在 float 元素的 WebKit 中的空字符串和完整字符串之间设置 innerHTML 会导致溢出

javascript - 从indexedDB检索数据并将值返回给函数调用

iphone - 如何编程 UITextField 的键盘以在 viewDidLoad 上打开?

ios - SwiftUI:导航链接在 ScrollView 中不起作用

css - Safari 输入文本忽略顶部填充