iOS 后台持续定位详解(支持ISO9.0以上)
2017-12-04 14:12
826 查看
iOS 后台持续定位详解(支持ISO9.0以上)
#import <CoreLocation/CoreLocation.h>并实现CLLocationManagerDelegate 代理,.h文件完整代码如下:[objc] view plain copy
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController : UIViewController<CLLocationManagerDelegate>
@end
2.info.list文件:
右键,Add Row,添加的Key为NSLocationAlwaysUsageDescription,其它值默认,示例如下:
3.添加后台定位权限
4.ViewController.m 文件:
(1)定义一个私有CLLocationManager对象(2)初始化并设置参数(initLocation方法),其中
locationManager.desiredAccuracy设置定位精度,有六个值可选,精度依次递减
kCLLocationAccuracyBestForNavigation
kCLLocationAccuracyBest
kCLLocationAccuracyNearestTenMeters
kCLLocationAccuracyHundredMeters
kCLLocationAccuracyKilometer
kCLLocationAccuracyThreeKilometers
locationManager.pausesLocationUpdatesAutomatically 设置是否允许系统自动暂停定位,这里要设置为NO,刚开始我没有设置,后台定位持续20分钟左右就停止了!
(3)实现CLLocationManagerDelegate的代理方法,此方法在每次定位成功后调用:
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray*)locations;
*也可以通过实现以下方法:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
(4)实现CLLocationManagerDelegate的代理方法,此方法在定位出错后调用:
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
.m文件完整代码如下:
[objc] view plain copy
#import "ViewController.h"
@interface ViewController (){
CLLocationManager *locationManager;
CLLocation *newLocation;
CLLocationCoordinate2D coordinate;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self initLocation];
}
#pragma mark 初始化定位
-(void)initLocation {
locationManager=[[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;//设置定位精度
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){
[locationManager requestAlwaysAuthorization];
}
// 9.0以后这个必须要加不加是不能实现后台持续定位的的
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
locationManager.allowsBackgroundLocationUpdates = YES;
}
if(![CLLocationManager locationServicesEnabled]){
NSLog(@"请开启定位:设置 > 隐私 > 位置 > 定位服务");
}
locationManager.pausesLocationUpdatesAutomatically = NO;
[locationManager startUpdatingLocation];
//[locationManager startMonitoringSignificantLocationChanges];
}
#pragma mark 定位成功
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
newLocation = [locations lastObject];
double lat = newLocation.coordinate.latitude;
double lon = newLocation.coordinate.longitude;
NSLog(@"lat:%f,lon:%f",lat,lon);
}
#pragma mark 定位失败
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
NSLog(@"error:%@",error);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
相关文章推荐
- iOS 后台持续定位详解(支持ISO9.0以上)
- iOS开发 - 百度地图后台持续定位
- 获取定位,苹果IOS10以上不支持h5的geolocation获取不到地理位置信息解决办法
- IOS的后台持续定位
- iOS百度地图后台持续定位(一)
- IOS持续的后台定位
- iOS后台持续定位并定时上传
- iOS后台持续上传定位数据(系统自带的方法)
- iOS 后台持续定位
- iOS开发 - 百度地图后台持续定位
- iOS后台持续定位并定时上传
- IOS持续的后台定位
- iOS使用stackview只能支持iOS9.0以上的系统
- IOS的后台的持续定位
- iOS开发 - 百度地图后台持续定位
- iOS实现地图定位(具体实现代码以及注释详解)
- IOS 后台挂起程序 当程序到后台后,继续完成定位任务
- iOS后台定位实现
- CoreLocation IOS 定位详解
- ios后台不被回收的处理- 后台定位功能