iOS 后台定位

作者: LoveY34 | 来源:发表于2018-07-14 18:23 被阅读3次

后台定位实现步骤:(涉及类CLLocationManager)

1.使用API:-requestAlwaysAuthorization(支持iOS8.0以上)发起申请后台定位权限

image2018-7-14 17_35_42.png
2.设置属性allowsBackgroundLocationUpdates=YES(支持iOS9.0以上)(没设置的话,app进入后台后定位功能就停止了!)

3.使用API:-startUpdatingLocation发起定位更新,在定位成功后在回调- locationManager:didUpdateLocations(支持iOS6.0以上)的参数locations中获取定位信息(包裹在CLLocation的对象中,如精确的经纬度),如果需要详细的经纬度信息需要使用CLGeocoder的对象做一次翻译就可以得到详细的城市街道等定位信息了,相对应的使用API:-stopUpdatingLocation就可以停止定位更新了。

注意:系统会根据属性distanceFilter的值多次触发回调,可以理解为移动多少距离触发一次回调,系统提供的一个值kCLDistanceFilterNone表示即使不移动也会隔几秒触发一次回调,如果想至此发一次定位回调可以使用-requestLocation(支持iOS9.0以上)发起一次定位

4.在info.plist中添加以NSLocationAlwaysUsageDescription为key的申请权限的文案说明,这个文案会在第一次安装app时会弹出,也可以在设置->app->位置中查看到

注意:iOS11中还需要分别添加以NSLocationAlwaysUsageDescriptionNSLocationAlwaysAndWhenInUseUsageDescription为key的申请权限文案说明,不添加的话无法向用户申请定位权限,貌似在iOS11中API:-requestAlwaysAuthorization是申请所有类型定位的统一接口

8F11EEC2-CB58-4A27-B9F4-191D1463AEDF.png
5.在target->capabilities中打开Background Modes,并勾选上Location updates
A8AFA04B-48E1-46AB-86B5-529F5BB132A6.png
后台定位是app在进入后台后仍然可以更新用户定位信息,甚至可以通过接口做定位信息的上报,但是在以下情况下更新定位信息的功能就会停止:

1.iOS系统因为资源问题导致APP terminated

2.用户主动去杀进程导致APP terminated

风险:

1.这种定位使用的是GPS定位,定位精度比较准备,相对于的对电池的消耗会比较大,推荐在app进入后台后通过设置属性desiredAccuracy来降低定位精度,

2.苹果对使用了后台定位的app审核比较严格,因为涉及到用户隐私,所以在需要在下面两个地方详细描述后台定位目的,

2.1 app审核资料中app的描述说明

2.2 申请定位权限的文案说明

注意:即使定位目的写的很详细,被拒的可能性还是很大。

demo见:LYLocation

参考文章:

1.iOS系统定位类型与原理

2.iOS CLLocationManager定位

相关文章

  • IOS后台定位以及位置上传方案

    IOS后台定位以及位置上传方案 iOS定位原理和使用建议 iOS后台持续定位并定时上传 iOS 通过定位获取常驻后...

  • iOS 后台定位

    后台定位实现步骤:(涉及类CLLocationManager) 1.使用API:-requestAlwaysAut...

  • iOS后台定位

    app提审后,失败。内容如下: 2017年11月4日 上午7:15发件人 Apple 4 Performance:...

  • iOS 后台定位

    苹果对iOS的规范性在提升了app的品质的同时也带来了对开发者的限制。翻阅了各种官方文档和资料,得出结论如下:1、...

  • 地图定位笔记

    iOS8.0之前前台定位 iOS8.0之后的前后台定位 前台定位设置如下,做版本判断.iOS8之前与之后有两个变化...

  • iOS定位和地图

    一.定位 1.iOS8以后前台定位 A.代码 B.配置信息Info.plist 2.iOS8以后后台定位 A.代码...

  • IOS 后台定位上传

    APP开发中经常需要使用到后台定位上传功能,在IOS中可通过CLLocationManage类来实现。其中后台定位...

  • iOS 后台持续定位

    在日常的工作开发中,有时会遇到需要在后台持续运行的需求。对于这个需求,安卓实现起来比较简单,而iOS来说就比较复杂...

  • IOS后台持续定位

    因为业务需求,项目需要一直定位物流司机位置。主要难点就是APP最小化进入后台,自动被系统挂起,定位停止。 网上找了...

  • iOS后台持续定位

    继之前的后台播放音频,后台下载,再来一发后台持续定位的实现。流程差不多:1.开去后台模式: 2.在plist中加入...

网友评论

  • 顺情风:if (@available(iOS 11.0, *))
    {
    self.locationManger.showsBackgroundLocationIndicator = YES;
    }
    YES改为NO还好用吗?我项目需要几十天几十天的运行。你这个方法有这样测试过吗?
    顺情风:@LoveY34 谢谢
    LoveY34:这个属性只针对iOS11系统及以上的,旧系统是不可用的,我测试的时候最长测了四五个小时,是没有问题的,但是几十天我就没试过了。。

本文标题:iOS 后台定位

本文链接:https://www.haomeiwen.com/subject/gceypftx.html