我不知道这是否特定于IOS 13的最新更新,但是我有一些非常奇怪的PWA行为。最初将其添加到主屏幕时,页面上的链接以safari打开,而不是在PWA上以内联方式打开(顺便说一句,这些链接均未设置为__blank),但是当我在safari上使用oAuth登录并添加到我的主屏幕,它的功能应该像它一样,并且可以正常使用链接。 (当前使用带有节点和Express的Passport进行身份验证)我不知道是否存在某些安全基础设施或与数据包有关的事情,但这确实很奇怪,我想在用户群受挫之前尽快解决此问题。
我尝试查看清单,但就PWA标准而言,一切都符合规范。我将显示设置为独立,我的所有标签都正确设置,Lighthouse审核也说应该可以。我浏览了护照文档,找到了我的身份验证代码,但似乎没有任何效果。
答案 0 :(得分:5)
Apple似乎在iOS 13中更改了主屏幕/独立Web应用程序的行为,但是我找不到任何官方文档。现在看来,如果您没有在将Web应用添加到主屏幕之前之前的manifest.json设置,它将仅将初始页面视为独立视图的范围。因此,任何其他链接/重定向都会在另一个窗口或应用内浏览器中打开。
我们在用户的主屏幕上安装了一个Web应用程序,该应用程序是几年前编写的,并且在没有manifest.json文件的情况下一直运行到iOS 13。我不得不重写我们应用程序中的WebSQL代码以使用IndexedDB,因为它们完全从iOS 13的主屏幕Web应用程序中删除了WebSQL,即使在Safari高级设置中重新启用了WebSQL。当我开始在iPhone上进行测试时,即使使用window.location.assign或任何其他方法,任何链接或重定向都将始终以最小的UI在应用内浏览器中打开下一页。这也弄乱了页面的几何形状,因为原来是没有滚动的全高页面,现在可以通过将“下一步”按钮元素从屏幕底部移开来滚动。由于我们在某些页面的中间有一些可滚动的面板,因此如何到达页面的末尾并不清楚(您必须滚动一个固定的元素才能滚动整个页面),所以这对我们的用户来说是行不通的
长话短说,向网络应用添加一个最少的manifest.json文件(甚至不需要 scope 设置),然后将网络应用删除并重新添加到主屏幕,然后使它的行为像以前一样,所有页面都显示在独立视图中。将manifest.json添加到已安装的主屏幕应用程序不会影响该行为。