iOS 检测定位服务

Core Location是开发定位服务应用程序的框架。我们要在Xcode中添加“CoreLocation.framework”存在的框架。主要使用的类是:CLLocationManager,通过CLLocationManager实现定位服务。


注意:

1、添加“CoreLocation.framework”存在的框架

2、导入头文件  #import <CoreLocation/CoreLocation.h>


1、检测是否开启了定位功能

// 检测定位开关有没有打开

if (![CLLocationManager locationServicesEnabled])

{

    [[[UIAlertView alloc] initWithTitle:@"提示:"

                                message:@"定位服务已被关闭,请前往设置页面打开!"

                               delegate:nil

                      cancelButtonTitle:nil

                      otherButtonTitles:@"确定", nil] show];

}


2、设置协议 CLLocationManagerDelegate


3、创建实例

CLLocationManager *locationManager;

locationManager = [[CLLocationManager alloc] init];

locationManager.delegate = self;

locationManager.desiredAccuracy = kCLLocationAccuracyBest;

locationManager.distanceFilter = kCLDistanceFilterNone;

[locationManager startUpdatingLocation];


4、使用回调

// 代理回调 检测是何种原因导致定位失败

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

{

    NSString *errorString;

    [manager stopUpdatingLocation];

    NSLog(@"Error: %@",[error localizedDescription]);

    switch ([error code])

    {

        case kCLErrorDenied:

        {

            errorString = @"Access to Location Services denied by user";

            [[[UIAlertView alloc] initWithTitle:@"提示:"

                                        message:@"请打开该app的位置服务!"

                                       delegate:nil

                              cancelButtonTitle:nil

                              otherButtonTitles:@"确定", nil] show];

        }

            break;

        case kCLErrorLocationUnknown:

        {

            errorString = @"Location data unavailable";

            [[[UIAlertView alloc] initWithTitle:@"提示:"

                                        message:@"位置服务不可用!"

                                       delegate:nil

                              cancelButtonTitle:nil

                              otherButtonTitles:@"确定", nil] show];

        }

            break;

        default:

        {

            errorString = @"An unknown error has occurred";

            [[[UIAlertView alloc] initWithTitle:@"提示:"

                                        message:@"定位发生错误!"

                                       delegate:nil

                              cancelButtonTitle:nil

                              otherButtonTitles:@"确定", nil] show];

        }

            break;

    }

}


// 实现位置的更新

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

{

    NSString *latitudeStr = [NSString stringWithFormat:@"%3.5f",newLocation.coordinate.latitude];

    NSString *longitudeStr = [NSString stringWithFormat:@"%3.5f",newLocation.coordinate.longitude];


    [locationManager stopUpdatingLocation];

    NSLog(@"location ok");

}


你可能感兴趣的:(iOS 检测定位服务)