Safari IOS 13.1.2上关于PWA的特殊错误问题

7
我不确定是否只出现在IOS 13的最新更新中,但我遇到了一些非常奇怪的PWA行为。当我最初将其添加到我的主屏幕时,页面上的链接会在safari中打开,而不是在PWA内部打开(顺便说一下,没有任何链接设置为 __blank),但是当我在safari上使用oAuth登录后,然后将其添加到我的主屏幕上,它就可以像应该的那样工作,并且链接正常。 (目前使用Node和Express的Passport进行身份验证)我不知道是否有某些安全基础设施或与数据包有关的问题,但这真的很奇怪,我想尽快解决这个问题,以免用户群体变得沮丧。
我已经尝试查看我的清单,但就PWA标准而言,所有内容都符合规范。我已将显示设置为独立运行,我已正确设置所有标签,Lighthouse审核也表示它应该工作。我查看了护照文档,跟踪了我的身份验证代码,但似乎什么都没用。

还注意到如果我从私人模式登录,它会有相同的行为并重定向到Safari。也许是与Cookie有关? - WillBDev
1个回答

7
似乎苹果在iOS 13中更改了主屏幕/独立Web应用程序的行为,但我找不到任何官方文档。现在看来,如果您在将Web应用程序添加到主屏幕之前没有设置manifest.json,则仅将初始页面视为独立视图的范围。因此,任何其他链接/重定向都会在另一个窗口或应用内浏览器中打开。
我们有一个Web应用程序安装在用户的主屏幕上,该应用程序是多年前编写的,在iOS 13之前没有manifest.json文件也能正常运行。我不得不重写我们应用程序中的WebSQL代码以改用IndexedDB,因为即使在Safari高级设置中重新启用WebSQL,他们也完全从主屏幕Web应用程序中删除了WebSQL。当我开始在iPhone上测试时,任何链接或重定向,即使使用window.location.assign或任何其他方法,都会始终在应用内浏览器中打开下一页,并带有最小化的UI。这也会影响页面几何形状,因为原本是无需滚动的全高度页面现在可以滚动,我们的“下一步”按钮元素被推到屏幕底部。由于我们在某些页面的中间有一些可滚动面板,因此不明显如何到达页面末尾(您必须滚动固定元素才能滚动整个页面),因此这对我们的用户没有用。
长话短说,将最低限度的manifest.json文件添加到Web应用程序中(甚至不需要“scope”设置),然后将Web应用程序删除并重新添加到主屏幕上,它就会像之前一样表现,所有页面都显示在独立视图中。向已安装的主屏幕应用程序添加manifest.json不会影响其行为。

谢谢。这是我找到的第一个有意义的关于这个问题的文档。添加一个带有范围的manifest.json甚至可以放弃丑陋的document.location hack。 - Roben
奇怪,我已经有一个manifest.json文件了,但遇到了这个问题。不知道是否是同样的问题。 - Anthony

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