iOS - 地图应用程序与其他位置感知的第三方应用程序

Posted

技术标签:

【中文标题】iOS - 地图应用程序与其他位置感知的第三方应用程序【英文标题】:iOS - Maps Application vs other location-aware third party applications 【发布时间】:2011-08-23 14:31:32 【问题描述】:

在与 iPhone 捆绑在一起的地图应用程序中,每当关闭位置服务并且用户尝试使用位置服务时,我们总是会收到以下警报消息:

打开定位服务以允许“地图”确定您的位置 |设置 |取消

请注意,上述警报中的两个按钮是设置和取消。

现在的问题是,我们是否可以在我们都开发的位置感知第三方应用程序中获得与上述完全相同的行为。为了更详细地解释这个问题,假设我们正在开发名为“Abc”的位置感知应用程序。每次我们调用需要定位服务的“Abc”应用程序部分时,如果定位服务关闭,我们需要得到以下警报消息。

打开定位服务以允许“Abc”确定您的位置 |设置 |取消

我确实在我的位置感知应用程序中尝试了以下代码作为实现文件的一部分,但在显示要求用户打开位置的所需警报消息方面,它的行为方式与地图应用程序不同服务,如果它目前已关闭。

@implementation LocationViewController
@synthesize locationManager

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
locationManager.delegate = self;
[locationManager startUpdatingLocation];

在相关的头文件中,我有以下代码

@interface LocationViewController:UIViewController<CLLocationManagerDelegate> 
    CLLocationManager *locationManager;

@property(nonatomic, retain) CLLocationManager *locationManager;
@end

是否需要使用其他一些 API 来获得上述行为(如在地图应用程序中)或者第三方位置感知应用程序是否根本不可能实现 ios 所需的行为4.x。请在此分享您的 cmets。

【问题讨论】:

【参考方案1】:

您不能这样做 - 这是一个私有 API。无法从应用程序中以编程方式启动设置应用程序(不幸的是,因为您可以通过 URL 模式启动 iTunes、Safari 等。设置应用程序不存在)。你得到的是默认的“你想使用你当前的位置”消息。

【讨论】:

【参考方案2】:

您可以检查 CLLocationManager 的locationServicesEnabled 属性,看看您是否通常拥有 CoreLocation 框架的权限。

如果没有,并且没有它们就无法操作,那么您需要对用户感到痛心。您将无法让他们在设置应用程序中一键启动(这不是已发布的 URL 方案),但您可以向他们说明如何自己去那里并授予您位置权限。

【讨论】:

以上是关于iOS - 地图应用程序与其他位置感知的第三方应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在启动时在iOS中启动位置感知后台服务

Phonegap、Corona 或 Monotouch 是不是可以在 iOS 上进行位置感知通知?

Android 调起第三方地图应用进行导航

iOS高德地图使用-搜索,路径规划

ios之定位与地图

iOS开发系列--地图与定位