iOS--无限后台定位

iOS--无限后台定位

大家好,又见面了,我是全栈君。

科普:

实际上APP拥有四种后台模式,无论是哪一种后台机制,均需要利用苹果给予的相应后台接口实现。IOS7系统中,开发者可以灵活利用多种后台接口(API)实现更加智能的应用操作。 #####一,无后台仅推送 第 一种后台方式为传统的无后台操作,仅有苹果推送机制,这种方式出现在iOS 3.x以下的大部分系统版本上。这个方式下,应用在按下Home键后即会关闭退出,其数据通过苹果搭建的推送服务器传输,并不需要应用后台运行。这种方式 不太好的原因在于,每次推出后,重新进入均需要重新加载,虽然推送能够统一解决数据和信息的传输,但遇到需要频繁进入应用(如聊天APP)的时候便会显得 体验不好。 #####二,墓碑式 第二种方式为墓碑式的后台机制,这在iOS 4后被大量采用,也就是人们所说的伪多任务。这方式相比较第一种改进的地方在于,按下Home键至主界面后,应用随即进入后台,但其被冻结,并不能进行任何操作。 #####三,智能调度后台 第三种为系统智能调度的后台,iOS 7新增的background fetch, 这个后台接口在苹果WWDC 2013上有提及,其会根据用户行为自动调整达到效率最优的后台模式,能够处理不是很有时效性的信息获取。例如一些社交、新闻类的应用的后台信息更 新,iOS系统便会根据应用启动频率、时间和当前网络和电量的状况来智能分配每个应用的后台获取频率和启动时长。 由于拥有该接口的应用的数据后台 刷新操作是统一调度的,因此系统可以在一个进程里面获得多个应用的数据,类似统一的推送机制,这样就能够最大限度地省电。 不过这个方式也有一个缺点,那便是开发者不能设定数据具体什么时候更新,因此这个后台方式只能应用在一些时效性和敏感度不高的地方。 #####四,真后台 第四种方式便是真后台机制,但iOS的真后台与Android的后台机制是不一样的,为了兼顾系统体验和统一进程管理,iOS在这上面加入了众多的限制。大致拥有以下几个后台接口模式: 1、Background Audio,这是后台的音频,这个很早之前便有,也是iOS设备中用得最多的后台应用,调用这个接口可以实现后台的音乐播放。 2、Location Services,这是后台的定位,系统会拥有统一页面进行管理。 3、VoIP,后台语音服务,类似Skype通话应用需要调用,可进行后台的语音通话。 4、Newsstand,报刊杂志后台自动下载更新,其能够自动实时更新。 5、 Background Task Completion,这个接口早在iOS 4时候便拥有,其可以供任意类型的APP使用,不过在旧系统中,这个接口的后台限制运行时间仅为10分钟,意味着当应用退至后台,其后台运行仅能持续10 分钟便会转至休眠状态。iOS 7中对这个接口作出了改变,原来的为连续10分钟,即不论你这10分钟内用户是否关闭屏幕进入休眠状态,应用仍然会在后台等待10分钟完结后推出,而新的 改进为假如遇到关闭屏幕休眠的情况,这后台运行的10分钟便会跟随一同休眠,剩余的后台时间将会留待用户再一次唤醒设备才计算。这样后台运行的时间仍然为 10分钟,但并不连续,这样做的优点为省电。 如现在有一些词典应用带有后台复制选词功能,实际上其是利用了这个接口,如果用户开启词典后并推出,即使屏幕关闭,但词典仍然在后台运行,电量消耗还是比较大的,在iOS 7上,这个问题可以得到解决。 6、 Remote Notification,这是本次较大的一个改进接口,以往聊天类应用接受推送后点进去需要再收一次信息,这情况在QQ、微信等应用上最为明显。不过拥 有了这个接口后,这情况将不复存在,以后推送将能够直接启动后台任务。值得注意的是remote notification支持silent notification(静默推送),这样dropbox这类同步应用可以在后台以最节能的模式实时静默同步了,类似布卡漫画这种也可以推送正在追的漫 画的新章节并在后台静默下载,待到下载好再给用户发送一个本地推送,用户点开即看无需再联网 7、Background Transfer Service,后台上传下载。iOS最接近传统多任务的后台接口,可供任意类型的app调用,无时间限制。应用场景包括后台上传和下载数据,这使得游戏 后台更新数据包,后台上传视频等等都成为可能,但是正如其名字,它只能用于处理上传下载这种传输类的任务,类似后台剪切板监控这种它就无能为力了。

配置后台运行权限:

代码:

请求后台定位权限:

 if ([CLLocationManager authorizationStatus]==kCLAuthorizationStatusNotDetermined || [CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse){
        [self.locationManager requestAlwaysAuthorization];
    }
复制代码

后台运行,抵抗程序杀死

[self.locationManager setAllowsBackgroundLocationUpdates:YES];
self.locationManager.pausesLocationUpdatesAutomatically = NO;
复制代码
               ##亲测完美,没实现的同学请留言。。复制代码
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107735.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python那么火,到底能用来做什么?我们来说说Python3的主要应用

    Python那么火,到底能用来做什么?我们来说说Python3的主要应用

    2021年6月14日
    112
  • 【mysql】mysql删除重复记录并且只保留一条

    【mysql】mysql删除重复记录并且只保留一条目录一、单个字段的操作分组介绍:1.查询全部重复的数据:2.删除全部重复试题:3.查询表中多余重复试题(根据depno来判断,除了rowid最小的一个)a.第一种方法:b.第二种方法:c.补充第三种方法(根据评论区给的删除总结出来的):4.删除表中多余重复试题并且只留1条:a.第一种方法:b.☆第二种方法(与上面查询的第二种方法对应,只…

    2022年6月24日
    55
  • BigDecimal.setScale用法总结「建议收藏」

    BigDecimal.setScale用法总结「建议收藏」1. BigDecimalnum1=newBigDecimal(2.225667);//这种写法不允许,会造成精度损失2. BigDecimalnum2=newB

    2022年8月1日
    6
  • 迅雷php文件怎么打开_php生成短链接

    迅雷php文件怎么打开_php生成短链接我正在使用TCPDF来创建简单的pdf文档.我正在创建一个页面并使用下面的代码添加链接$pdf->addTOCPage();$link=$pdf->AddLink();$pdf->SetLink($link,0,-1);现在链接设置成功.但是要导航到该页面我应该添加什么?我试过下面的代码,但它什么也没做,<ahref=“#Whattoaddhere”style…

    2022年9月7日
    1
  • mysql数据库连接配置文件(db.properties)

    mysql数据库连接配置文件(db.properties)db.driver=com.mysql.jdbc.Driverdb.url=jdbc:mysql://localhost:3306/learn-test?useUnicode=true&characterEncoding=utf8db.username=rootdb.password=123456说明:如url使用的是本地数据库且端口是3306,可以省略lo…

    2022年6月2日
    39
  • idea打包详解_vue打包后图片不显示

    idea打包详解_vue打包后图片不显示1.点击File->ProjectStructure2.选择打包类型3.指定jar包运行的mainclass,并指定生META-INF文件的位置(一般放在resource目录下)4.配置依赖包的存放目录:鼠标右击<outputroot>创建libs文件夹,并将依赖包拖入libs文件夹(注:如果更改了依赖包的位置,classpath中的内容必须做出对应的修改)5.检查各项配置无误选择ok:框选位置依次表示为jar包名;jar输出位置;指定的编译文件,ma

    2022年10月3日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号