我有一个执行简单教科书navigator.geoLocation.watchPosition(...)的应用程序,它既可以在Safari中也可以作为iOS应用程序在iOS 5.x中很好地用作网络应用程序(使用支持apple-mobile-web-app-app的meta标签)。

但是,在iOS6中,GeoLocation在webapp中不起作用。它仍然可以按预期在safari中工作,但是当我运行webapp时,它会提示我进行位置许可,然后静默失败。我看到了位置图标,但是没有从watchLocation引发任何事件。我没有收到任何错误事件或任何位置事件。

有人碰到这个吗?任何解决方法?它肯定是iOS6特定的,并且还特定于apple-mobile-web-app-capable / webapp。

最佳答案

这绝对是一个错误,但我找到了解决方法。您不会喜欢这种方式,但至少它将使您的Web应用程序再次运行。您需要检查用户代理 header ,如果它包含“iPhone OS 6”,则不要使用:

<meta content="yes" name="apple-mobile-web-app-capable" />

是的,这意味着它不是真正的Web应用程序,您将获得Safari的页眉和页脚栏。但是,至少它可以使您的应用从主屏幕恢复正常运行。您可以转到我的网站www.nextbus.com来了解其工作原理。

请注意,似乎Google遇到了此问题。尝试转到maps.google.com,然后将Web应用添加到主屏幕。地理位置将适用于此,但是您确实会看到丑陋的Safari标题和页脚栏。

请向苹果大声抱怨!

关于iphone - iOS 6打破了webapps中的GeoLocation(支持apple-mobile-web-app的功能),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12503815/

10-14 23:08