美文网首页
后台定位实现

后台定位实现

作者: leap鹏 | 来源:发表于2017-04-03 15:39 被阅读0次

需求

  • 用户位置持续在发生变化,则隔一段时间上报一次
  • 如果用户移动很慢,则隔一段距离上报一次
  • 如果用户的位置在到达某处后没有变化 则不继续上报
  • 切换到后台也要能定位上报
  • APP因各种原因终止运行后(用户主动关闭, 系统杀掉) 也要能定位上报

实现

项目配置

在target的Capabilities选项中打开Background Modes 并勾选Location updates


image

然后在plist中添加NSLocationAlawaysUsageDescription的键 在value中随便键入任何内容


image
完成这两步 我们的前期工作就完成了 Background Modes是iOS7带入的新功能 而NSLocationAlawaysUsageDescription为了增强权限机制引入的提示描述 不添加这个的话定位功能可是使用不了的

代码实现

我们先定义一个CLLocationManager的子类 并根据需求中的几点定义三个变量
以下是部分代码

@interface LPLocationManager : CLLocationManager

+ (instancetype)sharedManager;

@property (nonatomic, assign) CGFloat minSpeed; //最新速度
@property (nonatomic, assign) CGFloat minFilter; //最小范围
@property (nonatomic, assign) CGFloat minInteval; //更新间隔

接下来是初始化函数

- (instancetype)init
{
    self = [super init];
    if ( self )
    {
        self.minSpeed = 3;
        self.minFilter = 50;
        self.minInteval = 10;
        
        self.delegate = self;
        self.distanceFilter  = self.minFilter;
        self.desiredAccuracy = kCLLocationAccuracyBest; //定位的精准度
        self.pausesLocationUpdatesAutomatically = NO;//是否允许系统自动暂停定位
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
            [self requestAlwaysAuthorization];//在后台也可定位
        }
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
            self.allowsBackgroundLocationUpdates = YES;
        }
    }
    return self;
}

demo链接https://github.com/leapCoding/LPLocation.git喜欢的朋友给个星吧,非常感谢

遇到的问题总结

1. 使用静默推送,服务定时向APP端发送通知开启定位。
2. 网上很多神人说用 VoIP + 播放无声音频的方式让app常驻后台
3. 使用定时器不停的请求后台任务

注意事项

后台定位开启有被拒的风险,当然你要有足够的理由让苹果通过你的应用,功能上也要尽量体现出你的APP是 需要用到后台定位的,描述时也要说明后台定位的问题

尽量给用户也要说明
例如滴滴

【温馨提示】
滴滴出行产品在使用过程中会持续使用GPS定位服务,切换至后台时,部分情况下仍会继续,例如共享位置时,相比其他操作会消耗更多电量,并影响电池续航时间。
Continued use of GPS running in the background can dramatically decrease battery life。

相关文章

  • 后台定位实现

    需求 用户位置持续在发生变化,则隔一段时间上报一次如果用户移动很慢,则隔一段距离上报一次如果用户的位置在到达某处后...

  • 后台定位实现方案

    通过翻阅了各种官方文档和资料,总结结果如下: 实现后台定位有两种方法 standard location serv...

  • IOS 后台定位上传

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

  • iOS 后台定位

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

  • iOS后台持续定位

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

  • iOS后台持续定位实现方法

    1.选中target-->Gapability,打开Background Modes模式,并勾选Location ...

  • ThinkPHP 接入 SeasLog 日志组件

    【背景】 为实现开发前期联调bug 定位、线上bug快速定位、快速响应,遂暂为斐讯路由后台 Api 模块添加日志记...

  • 【iOS】TTS后台播报(通过后台定位实现)

    需求分析 1、APP进入后台,防止被杀死,保持socket链接;2、socket接收到消息,通过TTS播报处理; ...

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

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

  • iOS:后台开启定位功能的实现

    今天做的项目,要求后台获取用户的地理位置今天总结一下: 记得修改info.plist 添加下面个属性 直接上代码

网友评论

      本文标题:后台定位实现

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