iOS 12上的PWA是否不再与Safari共享Service Worker缓存?

时间:2018-08-28 08:39:22

标签: ios service-worker progressive-web-apps

对于iOS 11上的PWA,我们通过将登录详细信息存储在Service Worker Web缓存中来解决了在Safari中打开的外部第三方登录。

此功能在iOS 12中不再起作用(在撰写本文时为beta版)。我认为这是因为PWA现在拥有自己的服务工作者缓存,不再与Safari共享,但我无法确认。

有人知道在野生动物园和PWA之间是否可以共享服务工作者缓存吗?请注意,我们已经尝试过IndexedDB,但这不是共享的,当然也不是cookie。

据我所知,这意味着PWA已完全从safari中沙盒化,并且无法使第三方登录正常工作。有解决方案吗?

2 个答案:

答案 0 :(得分:1)

我在推特上问了乔纳森·戴维斯(Jonathan Davis)(苹果网络技术传播者)。他说,iOS上的Web应用程序(“保存到主屏幕”应用程序)不与Safari共享数据存储。它们可作为独立于Safari的独立应用程序工作,并且无法在设备上共享它们之间的数据。

作为一种可能适合您的解决方案,我提出了Maciej Caputa撰写的文章。引用作者的想法是在Service Worker中创建一个伪造的终结点,该终结点将在POST请求中将数据保存在缓存中,并在GET请求中返回缓存的数据。链接到本文https://www.netguru.com/codestories/how-to-share-session-cookie-or-state-between-pwa-in-standalone-mode-and-safari-on-ios

希望这个答案有帮助!

答案 1 :(得分:1)

从iOS 12.2(2019年3月)开始,这不再是问题,因为外部站点的链接现在已在PWA应用内浏览器中打开,并且返回链接指向PWA。结果,我现在可以使用第三方Auth0登录在iOS上部署PWA应用程序(该功能已经在Android和Windows上运行了。)

我从Maximiliano Firtman的this article了解到了这一点。