objective-c - 避免多个位置服务警报

标签 objective-c ios5 uiwebview location

假设我有一个 native iOS 应用程序,它呈现两个或多个请求位置服务权限的 Web View 。

例如,想象一个应用程序比较给定查询的 map 结果 - 例如,用户提交一个地址,一个 WebView 显示来自 google map 的结果,另一个 WebView 显示来自 bing 的结果,等等。

是否有任何方法可以避免每个离散的 Web View 通过破坏性警报 View 请求位置服务许可?

如果应用程序的唯一目的是比较各种基于位置的 Assets ,那么我的应用程序似乎应该询问用户一次他们是否批准使用位置服务的应用程序。我的 WebView 如何继承此权限,或者位置服务架构不可能实现这一点?

如果无法聚合访问位置服务的权限,是否有办法保留每个离散提供商的权限?例如,用户不必每次运行应用程序时都批准对每个 map 的访问...从而产生三个警报 View (应用程序和两个 WebView ),每次启动时都询问相同的事情。

避免这种行为的唯一方法是对 map 提供程序而不是 webview 实现 native API 调用吗?

欢迎任何意见。

最佳答案

是的,你可以做到这一点。为此,请使用您的 appDelegate 类。如果位置交互代码很简单,只需在appDelegate中创建一个获取授权状态的方法,并在didFinishLaunching方法中调用即可。

我用类似的方法做这样的事情:

    - (BOOL)setupLocationMgr  
   {
        CLLocationManager *locationMgr = [[CLLocationManager alloc] init];
        locationMgr.purpose = @"Location tracking for XXX app.";
        return [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized;
    }

然后,appDelegate 保留 CLLocationManager 对象,并可以将其返回到任何需要它的 View 。

关于objective-c - 避免多个位置服务警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452093/

相关文章:

ios6 - iOS 6 UIWebView状态还原如何工作?

ios - iOS 中的 RSS 应用程序 : Detecting the existence of a feed through UIWebView

objective-c - 无法解释的崩溃 iOS

objective-c - 原型(prototype) UITableViewCell 不在 Storyboard 中的 UITableView 顶部

iphone - 从 NonJailbreakeniPhone 获取通话记录详细信息

ios - UIWebView 不会在 Swift 中重新加载新的 URL

objective-c - 从 Xcode 项目中清除 .png 文件

objective-c - 在每次打开时修改 NSMenu 结构?

ios - 什么设置 NSStreamNetworkServiceTypeBackground "do under the hood"?

ios5 - 如何在 iOS 上管理 View 的刷新/重新加载?