iOS 后台持续定位详解(支持ISO9.0以上)

#import <CoreLocation/CoreLocation.h>并实现CLLocationManagerDelegate 代理,.h文件完整代码如下:

  1. #import <UIKit/UIKit.h>
  2. #import <CoreLocation/CoreLocation.h>
  3. @interface ViewController : UIViewController<CLLocationManagerDelegate>
  4. @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文件完整代码如下:
  1. #import "ViewController.h"
  2. @interface ViewController (){
  3. CLLocationManager *locationManager;
  4. CLLocation *newLocation;
  5. CLLocationCoordinate2D coordinate;
  6. }
  7. @end
  8. @implementation ViewController
  9. - (void)viewDidLoad {
  10. [super viewDidLoad];
  11. [self initLocation];
  12. }
  13. #pragma mark 初始化定位
  14. -(void)initLocation {
  15. locationManager=[[CLLocationManager alloc] init];
  16. locationManager.delegate = self;
  17. locationManager.desiredAccuracy = kCLLocationAccuracyBest;//设置定位精度
  18. if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){
  19. [locationManager requestAlwaysAuthorization];
  20. }
  21. // 9.0以后这个必须要加不加是不能实现后台持续定位的的

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {

    locationManager.allowsBackgroundLocationUpdates = YES;

    }

  22. if(![CLLocationManager locationServicesEnabled]){
  23. NSLog(@"请开启定位:设置 > 隐私 > 位置 > 定位服务");
  24. }
  25. locationManager.pausesLocationUpdatesAutomatically = NO;
  26. [locationManager startUpdatingLocation];
  27. //[locationManager startMonitoringSignificantLocationChanges];
  28. }
  29. #pragma mark 定位成功
  30. -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
  31. newLocation = [locations lastObject];
  32. double lat = newLocation.coordinate.latitude;
  33. double lon = newLocation.coordinate.longitude;
  34. NSLog(@"lat:%f,lon:%f",lat,lon);
  35. }
  36. #pragma mark 定位失败
  37. -(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
  38. NSLog(@"error:%@",error);
  39. }
  40. - (void)didReceiveMemoryWarning {
  41. [super didReceiveMemoryWarning];
  42. // Dispose of any resources that can be recreated.
  43. }
  44. @end

iOS 后台持续定位详解(支持ISO9.0以上)的更多相关文章

  1. iOS原生地图开发详解

    在上一篇博客中:http://my.oschina.net/u/2340880/blog/414760.对iOS中的定位服务进行了详细的介绍与参数说明,在开发中,地位服务往往与地图框架结合使用,这篇博 ...

  2. IOS—UITextFiled控件详解

    IOS—UITextFiled控件详解 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGR ...

  3. iOS中—触摸事件详解及使用

    iOS中--触摸事件详解及使用 (一)初识 要想学好触摸事件,这第一部分的基础理论是必须要学会的,希望大家可以耐心看完. 1.基本概念: 触摸事件 是iOS事件中的一种事件类型,在iOS中按照事件划分 ...

  4. ios新特征 ARC详解

    IOS ARC 分类: IOS ARC2013-01-17 09:16 2069人阅读 评论(0) 收藏 举报   目录(?)[+]   关闭工程的ARC(Automatic Reference Co ...

  5. Xamarin 后台持续定位与提示

    IOS后台持续运行对于c#程序员不懂得ios后台机制的是存在一定困扰的.特别是ios9过后对后台和安全进行了更严格的限制 好了废话不多说 一 设置info.plist权限信息 参考: 后台模式:htt ...

  6. iOS 单元测试之XCTest详解(一)

    iOS 单元测试之XCTest详解(一) http://blog.csdn.net/hello_hwc/article/details/46671053 原创blog,转载请注明出处 blog.csd ...

  7. iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

    http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...

  8. [转]iOS学习之UINavigationController详解与使用(三)ToolBar

    转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切 ...

  9. IOS 友盟使用详解

    IOS 友盟使用详解 这篇博客将会详细介绍友盟的使用,希望对博友们有所帮助. 首先我们在浏览器上搜索友盟. 在这里我们选择官网这个,进去友盟官网后我们按照下图进行选择. 接下来选择如下图 Next 这 ...

随机推荐

  1. 改bug后 fix bug 时,一个不错的修复描述模板

    *问题原因:* 问题出现的原因.*解决方法:* 问题的解决方案.*影响分支:* 影响哪些分支. *相关修改:* 具体的修改文件列表.*自测结果:* 自行测试了哪些用例,将大概步骤描述出来. *影响功能 ...

  2. PID控制算法

    PID控制算法 四轴如何起飞的原理 四轴飞行器的螺旋桨与空气发生相对运动,产生了向上的升力,当升力大于四轴的重力时四轴就可以起飞了. 四轴飞行器飞行过程中如何保持水平: 我们先假设一种理想状况:四个电 ...

  3. AutoCAD LoadLibrary Failed with error 126 Message

    LoadLibrary Failed with error 126 Message BY C3DISH ON 26 MAY, 2013 · ADD COMMENT I wanted to post a ...

  4. The formal parameters of the method

    package basic.java; public class ParametersOfTheMethod { public static void main(String[] args) { in ...

  5. 数值的整数次方(C++ 和 Python 实现)

    (说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 实现函数 double Power(double base, ...

  6. poj 1475 推箱子

    bfs是一层层的遍历下去,每多一层即为多走一步,因此只要遇到T就停,此时肯定是最小步数. 所以这两层bfs应为,先对箱子的最少步数进行bfs,从而求出推箱子所用最少步数: 然后箱子bfs内部嵌入人的b ...

  7. Compare DML To Both REDO And UNDO Size

    SUMMARY you can remember undo rule  the same to redo if you want demo rule that you can look up the ...

  8. vSan中见证组件witness详解

    witness在vSan中作为见证组件其作用类似于WinServer中的仲裁磁盘,当Cluster中某一节点发生故障时,来判断该节点上的对象在哪一个新的节点上继续承载.此处需要强调的是,witness ...

  9. HAProxy负载均衡保持客户端和服务器Session亲缘性的3种方式

    1 用户IP 识别  haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令) 配置指令: balance source 配置实例: backe ...

  10. 乘风破浪:LeetCode真题_019_Remove Nth Node From End of List

    乘风破浪:LeetCode真题_019_Remove Nth Node From End of List 一.前言 这次总算到了链表的操作了,之后肯定会有排序算法,二叉树,排序树,图等等的操作,现在我 ...