美文网首页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