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



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

这在iOS 12中不再有效(在撰写本文时处于测试阶段(。我认为这一定是因为PWA现在有自己的服务工作者缓存,它不再与Safari共享,但我无法确认这一点。

有谁知道是否有办法在 safari 和 PWA 之间共享服务工作者缓存?请注意,我们已经尝试过 IndexedDB,但它不是共享的,当然 cookie 也不是。

据我所知,这意味着PWA完全是从野生动物园沙盒中沙盒化的,并且无法让第三方登录工作。有什么解决办法吗?

我在Twitter上问了Jonathan Davis(苹果的网络技术布道者(这个问题。他说,iOS上的Web应用程序("保存到主屏幕"应用程序(不与Safari共享数据存储。它们作为独立于 Safari 的独立应用程序工作,无法在设备上共享数据。

作为可能适合您的解决方案,我提出了一篇由Maciej Caputa撰写的文章。引用作者的话,这个想法是在服务工作者中创建一个假端点,它将在 POST 请求时将数据保存在缓存中,并在 GET 请求上返回缓存数据。本文的链接 https://www.netguru.com/codestories/how-to-share-session-cookie-or-state-between-pwa-in-standalone-mode-and-safari-on-ios。

希望这个答案对您有所帮助!

从 iOS 12.2(2019 年 3 月(开始,OAuth 登录现在可以进行,因为外部站点的链接现在在 PWA 应用内浏览器中打开,返回链接指向 PWA。因此,我现在能够使用第三方Auth0登录在iOS上部署PWA应用程序(它已经在Android和Windows上运行(。

但请注意,登录会话不像早期版本的iOS那样在Safari和PWA之间共享。

我从马克西米利亚诺·费特曼(Maximiliano Firtman(的这篇文章中了解到这一点。

最新更新