原来定位服务是10分钟收不到定位信息就挂起定位,如今变为最短3分钟,预计都是为了省电吧。

仅仅要你开启应用的后台定位,而且10分钟有一次定位,那么苹果就不会关闭你的线程。如今变成3分钟。若你的应用开启了后台定位,当最短3分钟(经过測试也可能大于3分钟小于等于10分钟)不定位,ios系统也会把你的应用挂起。

而高德地图ios sdk的ios9以上版本号后台定位开启方法变更,而高德导航库没有同步变更,导致使用老的地图库和高德导航地图库的用户定位服务不能实际开启,切换到后台3分钟(经过測试也可能大于3分钟小于等于10分钟)没有实际定位请求,被ios系统觉得是伪定位服务的应用并挂起线程。而高德定位模块也有问题。有时间也有不定位的情况。如:手机开启后台定位的应用。网络连接wifi(aibinjian)切换到后台,当用户移动到wifi覆盖区外。那么应用收到网络异常通知。手机的网络自己主动切换到4g手机网络,应用没有收到网络正常通知,导致应用在8分钟后不定位,而且应用被系统干掉。当手机没有网络时高德也不定位,而原生态的定位在有网和无网络的情况下都能定位。所以还是用原生态的定位更靠谱。

高德地图iOS SDK V2.5.0版本号提供后台持续定位的能力,即便你的app退到后台。且位置不变动时。也不会被系统挂起,可持久记录位置信息。该功能适用于记录轨迹录或者出行类App司机端。

仅仅须要您的做下面几步操作:

1.加入代码。

对于iOS9之前的系统:

1

_mapView.pausesLocationUpdatesAutomatically = NO;

对于iOS9(含)以上系统:

1

_mapView.allowsBackgroundLocationUpdates = YES;

若你的应用有3D地图和导航地图,那么你的应用用的应该是导航地图,若想用定位因为导航地图没有更新。预计你的应用没有allowsBackgroundLocationUpdates 这个属性,仅仅能让你发愁了。

高德导航地图库千呼万换始终不出来。须要后台定位服务的应用不可能等待这个大爷吧。仅仅能用替代方案了。

开启原生态的定位服务,仅仅是不用原生态的位置。可以保证高德地图一致获取到经纬度,仍旧用高德的经纬。原生态的位置服务仅仅是触发高德地图收到经纬度和保持后台定位。


@interface mainViewController()<NoticeCarViewDelegate,UIAlertViewDelegate,ServicingViewDelegate,MAMapViewDelegate,AMapSearchDelegate,UIActionSheetDelegate,PlaceSearchDeleagte,CLLocationManagerDelegate>
{ CLLocationManager *_locationManager;
} - (void)initAMapProperty
{
FLDDLogDebug(@"函数");
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self; _locationManager.pausesLocationUpdatesAutomatically = NO;
if (IOS_VERSION_LARGE_OR_EQUAL(9.0))
{
_locationManager.allowsBackgroundLocationUpdates = YES;
} if (![CLLocationManager locationServicesEnabled]) {
NSLog(@"定位服务当前可能尚未打开,请设置打开!");
return;
} //假设没有授权则请求用户授权
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)
{
[_locationManager requestAlwaysAuthorization];
}
else if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways)
{
//设置代理
// _locationManager.delegate = self;
//设置定位精度
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
//定位频率,每隔多少米定位一次
CLLocationDistance distance = 10.0;//十米定位一次
_locationManager.distanceFilter = distance;
//启动跟踪定位
[_locationManager startUpdatingLocation];
FLDDLogDebug(@"开启定位");
} // //定位
// _mapView.showsUserLocation = YES;
//地图跟着位置和方向移动
[_mapView setUserTrackingMode:MAUserTrackingModeFollow animated:YES]; _mapView.showsCompass = NO;
//楼块隐藏
_mapView.buildingsDisabled=YES;
// //后台定位 可持久记录位置信息。高德地图iOS SDK V2.5.0版本号提供后台持续定位的能力,即便你的app退到后台。且位置不变动时。也不会被系统挂起,可持久记录位置信息。该功能适用于记轨迹录或者出行类App司机端。
// if (IOS_VERSION_LARGE_OR_EQUAL(9)) {
// _mapView.allowsBackgroundLocationUpdates = YES;
// }
// else
{
//因为IOS9中定位的授权机制改变 须要进行手动授权
_mapView.pausesLocationUpdatesAutomatically = NO;
} //不能旋转
_mapView.rotateEnabled=NO;
_mapView.distanceFilter = DISTANCE_FILTER;
// _mapView.desiredAccuracy = kCLLocationAccuracyHundredMeters;
// mapView.showsScale = YES;
// [mapView setZoomLevel:KmaxLEVEL animated:NO];
//自己定义精度圈样式 去除精度圈
_mapView.delegate = self; //纪录经纬度的数组
// coordates = [[NSMutableArray alloc] init]; } #pragma mark 定位回调 能获取到定位点的经纬度坐标
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
[locations enumerateObjectsUsingBlock:^(CLLocation * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
FLDDLogDebug(@"obj.coordinate = %.f \n %.f",obj.coordinate.latitude,obj.coordinate.longitude);
}];
FLDDLogDebug(@"");
}

如今高德地图最终公布了新的支持ios9系统后台定位的导航地图包。而且公布了高德地图定位模块。支持一次定位的功能,可以一次定位到你的位置信息和cityCode。若你的应用是须要始终须要同意定位,那么使用ios原生定位和高德地图的定位功能吧!

防止再出现高德地图不能正确启动应用的定位功能。

ios9.1以后,为了省电。应用切换到后台8分钟。无论是否是开启了后台定位服务,仅仅要没有网络活动(定位活动也可以)都有可能被挂起。所以你的应用切换到后台要保证8分钟之内有一次网络活动(如心跳等)。若用户打开应用去打电话。不知道网络没有了,等打10多分钟的电话,再去看应用,结果应用早挂了,这个问题非常坑爹,临时没有找到原因。不知道是高德定位搞的鬼还是最新的iphone系统的问题。预计是高德地图问题多些。

如今通过启动手机原生定位功能和高德的后台定位功能,保证我们的始终定位的app,在后台不被杀死。

ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方式的更多相关文章

  1. HMS Core定位服务在生活服务类App中可以自动填写收货地址啦

    在涉及团购.外卖.快递.家政.物流.搬家等生活服务类的App.小程序中,填写收货地址是用户高频使用的功能.这一功能通常采取让用户手动填写的解决方案,例如上下拉动选择浙江省-->杭州市--> ...

  2. iOS8中的定位服务

    iOS8中的定位服务 My app that worked fine in iOS 7 doesn't work with the iOS 8 SDK. CLLocationManager doesn ...

  3. 解决在iOS8环境下,当用户关闭定位服务总开关时,无法将APP定位子选项加入定位权限列表的问题

    关键点:- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizati ...

  4. 基于百度定位SDK的定位服务的实现

    转载请标明出处:http://blog.csdn.net/android_ls/article/details/10179013 一.定位模块的需求:我们想知道使用我们应用的用户的大概位置,每隔五分钟 ...

  5. 【iOS】7.4 定位服务->2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  6. 【Android】18.1 利用安卓内置的定位服务实现位置跟踪

    分类:C#.Android.VS2015: 创建日期:2016-03-04 一.安卓内置的定位服务简介 通常将各种不同的定位技术称为位置服务或定位服务.这种服务是通过电信运营商的无线电通信网络(如GS ...

  7. 微服务指南走北(三):Restful API 设计简述

    API的定义取决于选择的IPC通信方式,假设是消息机制(如 AMQP 或者 STOMP).API则由消息频道(channel)和消息类型.假设是使用HTTP机制,则是基于请求/响应(调用http的ur ...

  8. 【iOS】7.4 定位服务->2.1.2 定位 - 官方框架CoreLocation: CLLocationManager(位置管理器)

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  9. 【iOS】7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

随机推荐

  1. RESTful API批量操作的实现

    要解决的问题 RESTful API对于批量操作存在一定的缺陷.例如资源的删除接口: DELETE /api/resourse/<id>/ 如果我们要删除100条数据怎么搞?难道要调用10 ...

  2. HUD--2553 N皇后问题

    Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N, ...

  3. PHP 页面跳转的三种方式

    第一种方式:header() header()函数的主要功能是将HTTP协议标头(header)输出到浏览器. 语法: void header ( string $string [, bool $re ...

  4. 神经网络的BP推导过程

    神经网络的BP推导过程 下面我们从一个简单的例子入手考虑如何从数学上计算代价函数的梯度,考虑如下简单的神经网络,该神经网络有三层神经元,对应的两个权重矩阵,为了计算梯度我们只需要计算两个偏导数即可: ...

  5. SPOJ - Distinct Substrings,求不同的字串个数!

    DISUBSTR - Distinct Substrings 题意:给你一个长度最多1000的字符串,求不相同的字串的个数. 思路:一个长度为n的字符串最多有(n+1)*n/2个,而height数组已 ...

  6. spring之注入类型

    spring有三种注入类型: set注入: 构造注入: 接口注入: 一.set注入(引用spring官方文档中的例子)(用的最多) 1.首先在代码中我们需要编写成员变量的set方法,如下所示,一般情况 ...

  7. 【双向bfs】2017多校训练十 HDU 6171 Admiral

    [题意] 现在给出一个三角矩阵,如果0编号的在点(x,y)的话,可以和(x+1,y),(x-1,y),(x+1,y+1),(x-1,y-1)这些点进行交换. 我们每一次只能对0点和其他点进行交换.问最 ...

  8. leetcode 347 priority,map的使用

    主要是对次数进行排序,然后去前几个最大次数的值,输出即可 class Solution { public: vector<int> topKFrequent(vector<int&g ...

  9. Ionic1与Ionic2

    1.Ionic2新特性 ①组织结构与框架: 在Ionic2中,每个组件.页面都只专注于做一件事,它单独有自己的一个目录,有自己的类(Class).模板文件(Template)和自己的样式文件(在这里我 ...

  10. SpringBoot + Spring Security 基本使用及个性化登录配置详解

    Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档 我就只说下SpringSecurity核心功能: 认证(你是谁) 授权(你能 ...