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

简介: ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案

原来定位服务是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,在后台不被杀死。


目录
相关文章
|
22天前
|
搜索推荐 API UED
淘宝/天猫获得淘宝app商品详情原数据 API 返回值的应用
该API专注于商品信息整合与展示,提供基础信息抓取、多媒体内容整合等功能,助力实时同步商品数据,构建丰富的详情页。同时支持数据分析与市场洞察,包括销售趋势分析和竞品对比,优化库存与定价策略。此外,动态促销管理和个性化推荐系统可提升营销效果,而实时库存预警和评价数据可视化则显著增强用户体验,为用户决策提供透明依据,全面提升平台竞争力与用户满意度。
|
4月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
270 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
3月前
|
Swift iOS开发 开发者
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
218 13
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
|
3月前
|
存储 数据安全/隐私保护 开发者
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
105 8
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
|
4月前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
3156 21
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
4月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
115 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
4月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
132 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
3月前
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
302 0
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
4月前
|
供应链 数据挖掘 API
1688APP 原数据 API 接口的开发、应用与收益
1688作为阿里巴巴旗下的B2B平台,汇聚海量供应商和商品资源。其APP原数据API接口为开发者提供获取商品详细信息的强大工具,涵盖商品标题、价格、图片等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建比价工具、供应链管理及自动化上架工具等应用,提升用户体验与运营效率,创造新的商业模式。示例代码展示了如何使用Python调用API并解析返回结果。
245 8
|
4月前
|
人工智能 程序员 API
iOS|记一名 iOS 开发新手的前两次 App 审核经历
啥,这玩意也有新手保护期?
70 0
下一篇
oss创建bucket