CLLocationManager-iPhone应用程序中的自定义位置管理器

CLLocationManager-iPhone应用程序中的自定义位置管理器,iphone,ios,location,cllocationmanager,Iphone,Ios,Location,Cllocationmanager,我对这项技术非常陌生,所以请帮助我 我正在使用CLLocationManager获取当前位置,我的应用程序具有自定义设置,显示他是否允许当前位置的状态,即写入时默认出现的消息提示 [self.locationManager startUpdatingLocation]; 如果用户点击该消息提示上的“不允许”,返回到“我的应用程序自定义设置”,并将“获取位置”的“关闭”按钮更改为“打开”,则我可以获取用户的当前位置 如何实现这一点?您的问题的简短答案是“是”。当用户通过设置为您的应用程序启用位置

我对这项技术非常陌生,所以请帮助我

我正在使用CLLocationManager获取当前位置,我的应用程序具有自定义设置,显示他是否允许当前位置的状态,即写入时默认出现的消息提示

[self.locationManager startUpdatingLocation];
如果用户点击该消息提示上的“不允许”,返回到“我的应用程序自定义设置”,并将“获取位置”的“关闭”按钮更改为“打开”,则我可以获取用户的当前位置


如何实现这一点?

您的问题的简短答案是“是”。当用户通过设置为您的应用程序启用位置服务时,就好像用户在收到提示时回答是一样。您可以通过检查代码中的授权状态来检查是否为您的应用启用了位置服务,因此:

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) 
{
    //Get user's current location


}

一旦你的应用程序的位置服务被用户拒绝,它只能在常规设置中重新打开-所以告诉用户,然后将它们发送到那里。(您可能希望先使用UIAlertView通知他们。)


感谢您的回答,我的问题是,当用户最初对获取位置说“不”,然后想要获取当前位置时,他可以在我的应用程序自定义设置中进行更改吗?当您在设备设置上免费获取此设置时,为什么要对位置服务进行自定义设置?在任何情况下,都需要通知系统用户改变了主意。你认为如果只有你的应用程序知道,系统如何保证用户确实改变了主意?显然,系统需要提供接口,以保证用户的回答是正确的;系统会通知每个应用程序。因此,如果您的用户第一次选择不授权您的应用程序,请将其指向“设置”菜单,以更改他们对您的应用程序的选择。不幸的是,从iOS 5.1开始,使用
prefs:root=LOCATION\u SERVICES
URL不再有效:[
// If Location Services are disabled, restricted or denied.
if ((![CLLocationManager locationServicesEnabled])
    || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted)
    || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied))
{
    // Send the user to the location settings preferences
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"prefs:root=LOCATION_SERVICES"]];
}