// [CLLocationManager locationServicesEnabled]判断的是定位的总开关是否打开,只要总开关打开就返回YES,跟使用的程序是否允许使用定位功能无关
if ([CLLocationManagerlocationServicesEnabled])
{
NSLog(@"定位功能已经打开");
// [CLLocationManager authorizationStatus]是用来判断当前所使用的应用程序的定位功能是否打开,如果是打开状态,则当前状态为kCLAuthorizationStatusAuthorized(iOS8(不包含)之前),kCLAuthorizationStatusAuthorizedAlways(iOS8);iOS8(不包含)之前,定位设置是一个开关,个人理解为只有两种状态:允许使用定位和不允许使用定位;iOS8开始有三种选择:永不(不允许定位),使用应用程序期间(使用程序时允许定位),始终(总是允许定位)
if ([CLLocationManagerauthorizationStatus] == kCLAuthorizationStatusNotDetermined) {
NSLog(@"授权状态无法判断");//一般在程序首次请求使用定位时会出现该状态,此时系统会弹出提示框询问是否允许使用定位功能
}
elseif ([CLLocationManagerauthorizationStatus] == kCLAuthorizationStatusRestricted)
{
NSLog(@"授权限制");//测试时为碰到,何时是这种状态现在无法判定
}
elseif ([CLLocationManagerauthorizationStatus] == kCLAuthorizationStatusDenied)
{
NSLog(@"永不允许定位");//不允许程序使用定位功能时会是这种状态,
}
else
{
if ([[UIDevicecurrentDevice].systemVersionfloatValue]>=8.0)
{
if ([CLLocationManagerauthorizationStatus] == kCLAuthorizationStatusAuthorizedAlways)
{
NSLog(@"总是授权使用定位功能");// iOS8新增状态,用来替换kCLAuthorizationStatusAuthorized
}
elseif ([CLLocationManagerauthorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse)
{
NSLog(@"使用应用程序期间");// iOS8新增状态,使用应用程序期间允许定位
}
}
else
{
if ([CLLocationManagerauthorizationStatus] == kCLAuthorizationStatusAuthorized)
{
NSLog(@"授权使用定位功能 IOS8已经废弃");
}
}
}
}
else
{
// 定位总开关未打开
NSLog(@"定位功能关闭");
}