码农的世界iOS程序猿

ios长驻后台

2019-08-14  本文已影响1人  Gawain__

总所周知ios系统为了让设备省电,减少不必要的进程和内存 保持系统流畅性 采取周密的后台机制进行管理.

查阅过很多其他的开源blog都没有一个详细的答案和步骤

除了极少数的官方app有真后台外,一般开发者都受到苹果后台管理机制的限制.

1.用户按home键后,app进入background模式运行.此时系统会分配1-3分钟的后台运行时间进行后台操作.

2.当时间到达后如果此时app仍有任务进行 后台将会根据设备内存 电量 温度分配更多的后台时间给app

3.任务:任务指的是特定的位置定位 , 音频播放 后台下载等.

下面进入主题 下面这两种方面真正实现后台长驻PS:使用的是logos语法 oc的逆向 正向开发按实际需求套入即可

第一步 在Capabilities中打开background模式并勾选以下三种

background mode

第二步 在info.plist中添加Privacy - Location Always and When In Use Usage Description(key) 请选择始终允许后台获取定位(value)

info.plist

第三步 在Appdelegate下新建获取定位方法并发送请求定位许可

注意 log是打印任务必须使用NSTimer循环调用保证后台定位任务不会停止因为没有任务而停止

新建全局变量location comeToBackgroundMode log

第四步在didFinishLaunchingWithOptions:方法下调用comeToBackgroundMode

一定有小伙伴很奇怪为什么要在这个方法里面调用 那岂不是每一次启动app都会调用吗 耗费内存.其实这里可以只请求定位许可 不过要记住在app返回后台 按home键前一定要调用一次定位更新方法不然后台机制会在3分钟后杀掉app 我这里为了方便直接每次启动都调用一次 小伙伴可自行根据需求修改代码

调用定位方法

第五步在applicationDidEnterBackground里面再次调用startUpdatingLocation方法

applicationDidEnterBackground方法存在于Appdelegate之下作用是app返回后台后调用这一步千万不可少不然就没效果了

applicationDidEnterBackground

最后就可以愉快的运行开效果啦记住请求许可的时候要选择始终允许定位哦.如果选择仅在应用期间使用的话状态栏会出现蓝色的背景提示哦.


                    第二种方法后台播放无声音乐

其实这个原理类似于qq音乐和网易云音乐一样 没有主动退出app都是一直在后台运行如果我们一直播放无声音乐那app也一直可以长驻于后台

第一步新建全局对象和新建播放无声音乐方法

新建全局对象 新建player方法

第二步在applicationDidEnterBackground调用player播放方法至于方面原理上面已经说了就不重复了

调用播放

播放无声音乐长驻后台就完成了 不过不建议大家使用因为可能会和其他app起冲突


好了总结一下长驻后台虽好但是正向开发苹果App Store审核按我这样写肯定过不了 正向开发审核前使用逻辑切换后台运行方式和时间 当审核官问到你 你就说你是导航或者有什么别的事 通常都会过 不过耗电快 和发热问题肯定是不可能避免的啦 最后告诉大家别忘了导入framework "AVFoundation.h"和"CoreLocation.h"不然会build错误哦 为什么放到最后?肯定是想你们看完啦 下期再见

距离上一遍有一年了 不知道下一篇是什么时候了.

上一篇下一篇

猜你喜欢

热点阅读