iOS:后台定位并实时向服务器发送位置

简介:
  • 第一步:开启后台模式,选中定位,选择project --> capabilities-->Backgorund Modes --> Location updates 如图:

  • 第二步:在info.list 文件中添加如下配置
复制代码
允许 http 请求 ,ios 9 之后需要添加,便于向服务器发送请求
<key>NSAppTransportSecurity</key>  
 <dict>   
  <key>NSAllowsArbitraryLoads</key>   
  <true/>  
 </dict>
复制代码
添加定位权限,ios8之后需要添加,否则无法定位
<key>NSLocationWhenInUseUsageDescription</key>
  <string>YES</string>  
<key>NSLocationAlwaysUsageDescription</key>
  <string>YES</string>
  • 第三步:代码如下
复制代码
#import "ViewController.h"
@interface ViewController ()
@end

@implementation ViewController
- (void)viewDidLoad {     
    [super viewDidLoad];   
    // Do any additional setup after loading the view, typically from a nib.      
    self.view.backgroundColor = [UIColor whiteColor];    
    self.title = @"后台定位";    
    self.locationManager = [[CLLocationManager alloc] init];    
    self.locationManager.delegate = self;      
    [self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];    
    if ([[UIDevice currentDevice].systemVersion floatValue] > 8)     {
          /** 请求用户权限:分为:只在前台开启定位  /在后台也可定位, */
          /** 只在前台开启定位 */
          //        [self.locationManager requestWhenInUseAuthorization];
          /** 后台也可以定位 */         
          [self.locationManager requestAlwaysAuthorization];     
     }    
     if ([[UIDevice currentDevice].systemVersion floatValue] > 9)     {
          /** iOS9新特性:将允许出现这种场景:同一app中多个location manager:一些只能在前台定位,另一些可在后台定位(并可随时禁止其后台定位)。 */   
          [self.locationManager setAllowsBackgroundLocationUpdates:YES];
     }     
     /** 开始定位 */     
     [self.locationManager startUpdatingLocation]; 
}
#pragma mark -  定位代理方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {    
      CLLocation *loc = [locations objectAtIndex:0];    
      NSLog(@"经纬度  %f  %f ",loc.coordinate.latitude,loc.coordinate.longitude);    
      NSURLSession *session = [NSURLSession sharedSession];   
      NSURLSessionDataTask *task = [session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://ac.ybjk.com/ua.php"]] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {//        
          //NSLog(@"response  %@",response);          
          NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];       
          NSLog(@"result %@",result);     
      }];      
      [task resume]; 
}   
- (void)didReceiveMemoryWarning {     
     [super didReceiveMemoryWarning];    
     // Dispose of any resources that can be recreated.
}
@end
复制代码

至此,完成后台实时定位功能,并向服务器发送请求成功。

为原博主点赞吧:http://www.jianshu.com/p/0b339f1ff894

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类:  iOS高级

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/6001553.html ,如需转载请自行联系原作者
相关文章
|
4月前
|
iOS开发
ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
35 1
|
8月前
|
iOS开发
iOS 第三方dSYM定位BUG
iOS 第三方dSYM定位BUG
92 0
|
定位技术 iOS开发
iOS iPhone 修改手机定位虚拟定位
iOS iPhone 修改手机定位虚拟定位
iOS iPhone 修改手机定位虚拟定位
|
定位技术 API 开发工具
iOS开发-百度地图基本定位和罗盘跟随的使用,附加地理编码和反地理编码
iOS开发-百度地图基本定位和罗盘跟随的使用,附加地理编码和反地理编码
130 0
iOS开发-百度地图基本定位和罗盘跟随的使用,附加地理编码和反地理编码
|
定位技术 iOS开发
iOS模拟动态定位的测试方案
iOS模拟动态定位的测试方案
145 0
iOS模拟动态定位的测试方案
|
定位技术 iOS开发
iOS移动应用模拟定位的非侵入式测试方案
iOS移动应用模拟定位的非侵入式测试方案
333 0
iOS移动应用模拟定位的非侵入式测试方案
|
API 开发工具 iOS开发
iOS定位的使用:地理/逆地理编码/判断目标经纬度是否在大陆
iOS定位的使用:地理/逆地理编码/判断目标经纬度是否在大陆
631 0
iOS定位的使用:地理/逆地理编码/判断目标经纬度是否在大陆
|
测试技术 定位技术 开发工具
iOS设备限制境外定位(支付交易风险控制策略)
iOS设备限制境外定位(支付交易风险控制策略)
271 0
iOS设备限制境外定位(支付交易风险控制策略)
|
API 定位技术 开发工具
iOS14 定位适配:1、向用户申请临时开启一次精确位置权限的方案2、高德定位SDK适配
iOS14 定位适配:1、向用户申请临时开启一次精确位置权限的方案2、高德定位SDK适配
1490 0
iOS14 定位适配:1、向用户申请临时开启一次精确位置权限的方案2、高德定位SDK适配