我构建了一个 PWA,它调用 javascript API navigator.geolocation.getCurrentPosition,当 Safari 权限设置为“询问”时,该 API 会提示用户进行位置访问。这是正确的行为,并且在 Safari 中打开时可以按预期工作。
但是,当添加到主屏幕并以“独立”显示模式运行时,位置警报不会在我的手机(iPhone 13 mini / iOS 15.1.1)上打开。并且呼叫永远不会超时。然后,如果我从 PWA 切换到 Safari,位置警报/提示会突然显示在 Safari 中。因此,警报似乎瞄准了错误的“选项卡”。如果 PWA 显示模式为“浏览器”或“minimal-ui”并且其行为正常,则不会发生这种情况。
我只能在我的手机(iPhone 13 mini / iOS 15.1.1)上复制此操作。我还在各种旧手机(15.1.1 和 14.7)以及几个模拟器上进行了测试,它们都按预期运行。这可能是我手机上的一个不起眼的设置,但它确实感觉很像 iOS Safari 的错误。