避免多个位置服务警报

时间:2012-05-04 15:49:16

标签: objective-c ios5 uiwebview location

假设我有一个本机iOS应用程序,它呈现两个或多个请求位置服务许可的Web视图。

例如,假设一个应用程序比较给定查询的地图结果 - 例如,用户提交地址,一个webview显示谷歌地图的结果,另一个来自bing等。

有没有办法避免每个离散网络视图通过破坏性警报视图请求位置服务的许可?

如果应用程序的唯一目的是比较各种基于位置的资产,那么我的应用程序似乎应该询问用户一次,如果他们使用位置服务批准该应用程序。我的网页视图如何获得此权限,或者位置服务架构无法实现这一点?

如果无法聚合访问位置服务的权限,是否有办法保留每个独立提供商的权限?例如,用户每次运行应用程序时都不应该批准每个地图的访问权限...导致三个警报视图(应用程序和两个网页浏览),每次启动都会询问相同的事情。

避免此行为的唯一方法是实现对地图提供程序的本机API调用而不是Web视图吗?

欢迎任何投入。

1 个答案:

答案 0 :(得分:1)

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

我用以下方法做这样的事情:

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

appDelegate然后保留CLLocationManager对象并将其返回到任何需要它的视图。