美文网首页iOS开发常用iOSiOS开发
iOS7以后如何在App被杀死的情况下仍然获取用户地理位置

iOS7以后如何在App被杀死的情况下仍然获取用户地理位置

作者: 毕小强 | 来源:发表于2016-12-08 15:11 被阅读2514次

    因为最近负责的项目需要实现实时定位的功能,所以研究了下与大家分享下成果.

    苹果官方在iOS7.1以后对CoreLocation SDK进行更新,允许开发者在App被杀死的情况下,仍然可以获取用户的地理位置并且做一些操作.

    前期准备:

    打开后台定位功能 plist文件配置这两项

    接下来是最核心的地方,创建一个CLLocationManager子类:

    .h文件

    CLLocationManager.h

    .m文件

    单例的生成与初始变量的初始化

    最重要的部分:

    限制触发机制

    最后是AppDelegate初始化,在app被杀死的情况下,地理位置发生重大变化,apple系统会自动帮你唤醒app:

    初始化

    好了,所有配置都已经准备好了,现在让我们开始测试下,打开模拟器Debug-Location-FreewayDriver,然后后台杀死App,我这边是通过沙盒记录地理位置,通过tableview显示:

    蓝色的为App前台记录的地理位置,红色为被杀死情况下记录的位置

    本博文参考自Ricky的博文. 

    中文参考 .

    Demo下载 


    相关文章

      网友评论

      • d5c653c2f525:大佬 用你的demo跑没什么用啊。。。
      • a50dd4b19b53:静默推送是否在app杀死后是无法回调用的 大神你是怎么解决的呢
      • zero616:您好,我想问一下,这个APP被杀掉之后,是一直能获取用户位置信息,还是只能持续一定时间内才能获取?麻烦解答一下。谢谢!!
        泽小记:@毕小强 被杀掉之后,会立即被唤醒吗?
        毕小强:@zero616 可以持续获取用户地理位置信息
      • b81c6f59774a:把你的代码融入我项目,亲测可以的👍
      • 杰森_Jason:iOS能做到杀死之后,能否做到隔个固定时间上报一次经纬度给自己的后台吗?
        毕小强:使用静默推送是更好的选择
        杰森_Jason:@毕小强 我们现在想实现我们后台管理一套地址库,我们客户端隔个固定的时间上报一次用户的经纬度给后台,然后通过接口查看附近是否有店铺,有的话自己发送个本地通知
        毕小强:@鄱湖一苇 demo只可以实现移动一段距离自动唤起app,如果想要固定时间统计一次位置,建议使用静默推送,实现和审核都比demo要简单的多
      • 缺钱睡不着:这个功能, APP上线有影响吗?现在审核好像又严苛了
        缺钱睡不着:@毕小强 好的,谢谢
        毕小强:@缺钱睡不着 会有影响的,你必须向苹果说明app后台一直使用用户地理位置的必须理由,否则会被拒绝上架
      • leftwater:杀死了 表示没有继续定位啊
        leftwater:嗯 是的。要开启startupdatelocation 日志记录才会输出多一些。
        毕小强:你可以设置模拟器进入漫游模式测试,有时断点并不会被触发,但是会有数据记录
        真机测试需要移动一段距离才可以触发
      • FMG:app杀死会继续定位?测试没有成功
        武一顶顶:确实没成功, 我的项目后开还是放弃这种流氓功能了
        毕小强:@FMG 如果你直接使用的demo ,你可能需要移动比较大的一段距离才可以唤醒App
      • 辣椒切成丝:demo什么都没有.......:joy:
        毕小强:可以了,之前好像没传上去:joy:

      本文标题:iOS7以后如何在App被杀死的情况下仍然获取用户地理位置

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