在与iPhone捆绑在一起的地图应用程序中,只要关闭位置服务并且用户尝试使用位置服务,我们就会收到以下警告消息:
启用位置服务以允许“地图”确定您的位置|设置|取消
请注意,上述警报中的两个按钮是“设置”和“取消”。
现在的问题是,我们是否可以在我们所有开发的位置感知第三方应用程序中获得与上述完全相同的行为。为了更详细地解释这个问题,让我们说我们正在开发名为“Abc”的位置感知应用程序。每当我们调用需要位置服务的“Abc”应用程序部分时,如果关闭位置服务,我们需要收到以下警报消息。
启用位置服务以允许“Abc”确定您的位置|设置|取消
我在位置感知应用程序中尝试了以下代码作为实现文件的一部分,但它在显示所需的警报消息方面与Maps应用程序的行为方式不同,要求用户打开位置服务,如果它目前被关闭。
@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来获取上述行为(如在Maps应用程序中)或者,对于第三方位置感知应用程序来说,它是不可能实现iOS时所需的行为4.x版请分享您的意见。
答案 0 :(得分:2)
你不能这样做 - 它是一个私有API。无法从应用程序中以编程方式启动设置应用程序(不幸的是,因为您可以通过URL模式启动iTunes,Safari等。设置应用程序不存在)。您得到的是默认的“您想使用当前位置”消息。
答案 1 :(得分:0)
您可以检查CLLocationManager的locationServicesEnabled
属性,看看您是否通常对CoreLocation框架拥有权利。
如果没有,并且没有它们你就无法操作,你需要向用户讨论它。您将无法在设置应用中向他们一键启动(这不是已发布的URL方案),但您可以向他们提供如何自行前往并为您提供位置权限的说明。