iOS PWA位置访问提示未显示

7
我已经构建了一个PWA,调用了JavaScript API navigator.geolocation.getCurrentPosition,当Safari权限设置为询问时,会提示用户访问位置。 这是正确的行为,在Safari中打开时按预期工作。
然而,当将其添加到主屏幕并以“独立”显示模式运行时,位置提示框不会在我的手机上打开(iPhone 13 mini / iOS 15.1.1)。而且调用永远不会超时。 然后,如果我从PWA切换到Safari,位置提示框/对话框突然在Safari中显示。所以似乎提示框/对话框定位到了错误的“标签”。 如果PWA的显示模式是“浏览器”或“最小化UI”,则不会发生这种情况,它们都表现正常。
我只能在我的手机上(iPhone 13 mini / iOS 15.1.1)复制此问题。我还在各种旧手机(15.1.1和14.7)以及几个模拟器上进行了测试,它们都按预期工作。 这可能是我手机上的一个隐晦设置,但它确实很像是iOS Safari的一个bug。

请提供足够的代码,以便他人更好地理解或重现问题。 - Community
你找到解决方案了吗?我也遇到了同样的问题... - SteMa
我遇到了同样的问题。你找到任何解决方案了吗?@Ryan - Shifut Hossain
iOS 17上出现了相同的问题。我找不到解决办法。 - undefined
2个回答

0
我也在使用iOS 15.5的iPad时遇到了这个问题。我的应用程序是一个在Safari移动端上运行的Web应用程序,添加到主屏幕中。在standalonefullscreen显示模式下都会发生相同的情况,而在minimal-uibrowser模式下则不会:当网站需要位置权限或者位置服务 -> Safari网站设置为“下次询问或分享时”时,会显示提示框。 “使用应用程序时”可以正常工作。

为了解决这个问题,我比赛navigator.geolocation.getCurrentPosition与稍长于PositionOptions.timeoutsetTimeout。如果后者赢得比赛,那么就意味着我们检测到了这种情况,我可以在那里抛出一些自定义错误,告知用户发生了什么以及该怎么做(手动更改位置服务 -> Safari网站设置)。


0

我发现你必须使用HTTPS连接,这样Safari才不会在获取你提到的权限时阻止应用程序的请求。 也许你应该在服务器的功能分支上测试一下你的理论。


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