【问题标题】:iPhone - Disable UIWebView from prompting to enable location servicesiPhone - 禁止 UIWebView 提示启用位置服务
【发布时间】:2010-11-23 22:03:00
【问题描述】:

在我的 iPhone 应用程序的开发过程中,我决定通过包含一个 UIWebView 与我构建的指向 maps.google.com 的 URL 来集成 Google 地图。问题是网站试图获取用户的位置,显示“这个应用程序想要使用你的位置”。这给我带来了许多问题,如果有必要我可以解释一下。

有什么方法可以禁止 UIWebView / Mobile Safari 询问用户的位置。我能想到的唯一解决方法是使用 Google 的 Javascript v3 API 制作我自己的地图,但我必须获得许可证,而且我不能 100% 确定我能够禁用询问位置(尽管我认为我可以)。

有没有人有替代的解决方法或方法来解决这个问题?谢谢!

【问题讨论】:

    标签: iphone uiwebview google-maps-api-3


    【解决方案1】:

    我相信我现在找到了合适的解决方法。我记得您可以使用 iframe 将来自 Google 的地图嵌入到您的网站中。我检查了他们为执行此操作而构建的 url,并注意到他们附加了一个额外的参数“output=embed”。我在 url 中附加了“输出”变量并将其粘贴到模拟器上的 Mobile Safari 中,它不再询问我的位置。

    唯一的缺点是到目前为止我可以看到页面上有一些额外的 UI 组件,因为它包括页面上的移动控件和网站嵌入控件。另外,我还没有在实际设备上测试过。

    编辑:在设备上的测试表明嵌入控件不起作用,但移动控件与地图的所有其他方面一样工作。

    【讨论】:

      【解决方案2】:

      请改用MKMapView

      【讨论】:

      • 这仍然需要我使用地理定位服务将文本地址翻译成纬度/经度,这仍然需要我从某人(如谷歌)获得许可证,对吗?如果是这样的话,我可能会使用他们的 Google 的 Map Javascript API 来创建我自己的页面。
      【解决方案3】:

      (我假设您没有使用 MKMapView 执行此任务并且您被 UIWebView 卡住是有原因的)

      您可以尝试在应用程序的早期通过 CLLocationManager 询问用户位置,即在启动之后。权限警报不会显示超过一次。 (用户是否选择允许,你似乎并不关心)

      虽然不完全确定这是否适用于您的情况,但 UIWebView 可能仍会提示您允许与它显示的网站共享位置数据。

      【讨论】:

      • 我实际上在应用程序启动时以及应用程序返回前台时调用 CLLocationManager 的 startUpdatingLocation(当应用程序进入后台时我调用 stopUpdatingLocation)。我认为问题在于提示不是来自我的应用程序的位置请求,而是来自 UIWebView 发出的请求。
      【解决方案4】:

      假设它是通过 JavaScript 完成的,您可以尝试使用 -[UIWebView stringByEvaluatingJavaScriptFromString:] 将一些 JavaScript 注入 - (void)webViewDidStartLoad:(UIWebView *)webView(例如,您可以将位置请求函数设置为 null)。不过,我不完全确定在页面仍在加载时它的效果如何......

      【讨论】:

        猜你喜欢
        • 2011-08-19
        • 2011-03-29
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 1970-01-01
        相关资源
        最近更新 更多