iOS PWA位置访问提示未显示

kyks70gy  于 2023-01-10  发布在  iOS
关注(0)|答案(2)|浏览(213)

我已经构建了一个PWA,它调用javascript API navigator.geolocation.getCurrentPosition,当Safari权限设置为Ask时,它会提示用户访问位置。这是正确的行为,在Safari中打开时可以按预期工作。
但是,当添加到主屏幕并以“独立”显示模式运行时,我的电话上没有打开位置警报(iPhone 13 mini / iOS 15. 1. 1)。而且通话从来不会超时。然后如果我从PWA切换到Safari,位置警报/提示突然在Safari中显示。所以看起来警报针对的是错误的“标签页”。如果PWA显示模式为“browser”或“mimimal-ui”,且其中任何一种模式均正常运行,则不会发生这种情况。
我只能在我的手机(iPhone13 mini /iOS15.1.1)上复制这一点。我还在各种老手机(15.1.1和14.7)以及几个模拟器上进行了测试,它们的表现都符合预期。这可能是我手机上的一个模糊设置,但它确实感觉很像一个iOS Safari bug。

z0qdvdin

z0qdvdin1#

我在iOS15.5中使用iPad时也遇到过这个问题。我的应用程序是一个在Safari移动的上运行的Web应用程序,添加到主屏幕上。在standalonefullscreen显示屏上也发生了完全相同的情况,而在minimal-uibrowser显示屏上则没有:提示要么是有史以来第一次显示时,网站需要位置权限或Location Services -> Safari Webistes是在“询问下次或当我分享”。“而使用应用程序”工作正常。
为了克服这个问题,我用racenavigator.geolocation.getCurrentPosition和比PositionOptions.timeout长一点的setTimeout进行比较,如果后者获胜,就意味着我们检测到了这种情况,我可以在那里抛出一些自定义错误,以通知用户发生了什么以及该怎么做(手动更改Location Services -> Safari Webistes)。

oug3syen

oug3syen2#

我想我已经知道为什么会出现这个错误了。我发现您必须使用HTTPS连接,这样safari才不会阻止您向safari应用程序发出的获取您提到的权限的请求,所以我想您应该在服务器的特性分支上测试一下您的理论

相关问题