美文网首页
后台定位实现

后台定位实现

作者: 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。

    相关文章

      网友评论

          本文标题:后台定位实现

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