后台模式 background modes

背景

开发公司的一个项目,第一期正常上线,以为第二期的话也会很顺利,没想到因为background modes的问题被打回来。主要还是因为之前对background modes几种模式了解的不够,存在滥用,正好趁这次机会,好好梳理一下。

1. Audio, AirPlay and Picture in Picture

这个选项中包含四种场景:音频的播放,录音,AirPlay及画中画的视频播放。

  • 音频的播放:在播放音频时,即使应用退到后台,只要一直有音频在播放,那应用就可以一直在后台运行。
  • 录音:应用可以请求使用麦克风,当开启了此后台选项,应用在使用麦克风时,即使退到后台,也可以一直后台运行,通过查看微信安装包中的 plist 文件,微信的语音聊天,就是通过这种方式实现的。而当该类应用退到后台后,iOS 系统的状态栏会变成红色,并在状态栏中显示正在使用麦克风的应用的名称,如下图所示。


    image
  • AirPlay: AirPlay是指将iOS设备,或者Mac设备上的音视频,同步到另一个设备中播放。举两个例子,第一个是把 iPhone 上的音乐通过蓝牙的方式在汽车的蓝牙音响播放,第二个是把 iPhone 上的视频,同步到智能电视屏幕上播放。此功能一般用于多端及多屏的交互。
  • 画中画的视频播放:画中画是 iPad 版本的 iOS 9 新增加的功能,可以在 iOS 的桌面,或者其他应用的界面的上面播放视频,从而该视频区域所属的应用就可以后台运行了。此功能现在只在 iPad 应用中提供。
2. Location updates

一般用于导航应用中,开启此选项后,应用退到后台,还可以得到系统的定位更新,从而使得应用可以根据定位的变化做出不同的反应。

3. Newsstand downloads

提供给报刊杂志类应用可以在后台下载及处理报刊杂志内容,而下载的过程需要使用 NewsstandKit 中的 NKAssetDownload 进行下载。需要注意的是,下载的过程中,应用可能还是会被挂起,甚至应用被退出,而 iOS 会在 Wi-Fi 环境下继续下载,直到下载完成。而一旦下载完成,如果应用只是被挂起,则 iOS 会唤醒对应的应用,回调对应的事件;如果应用已经退出,则会启动应用,在启动参数中会带上对应的标识表示这次启动是因为下载报刊杂志内容完成。

4. External Accessory communication

此选项提供给一些MFi外设通过蓝牙,或者Lightning接头等方式与iOS设备连接,从而可在外设发送消息时,唤醒已经被挂起的应用。而一旦被唤醒,一般情况下,应用只有最多10秒钟的执行时间。
MFi 外设:是指通过苹果 MFi 认证的设备,而 MFi 认证是对其授权配件厂商生产的外置配件的一种标识使用许可,是 Made for iOS 的英文缩写。

5. Uses Bluetooth LE accessories

此选项与External Accessory communication类似,只是此选项无需限制MFi外设,而需要的是Bluetooth LE设备。

6. Acts as a Bluetooth LE accessory

此选项是指iOS设备作为一个蓝牙外设连接时,对应的应用可以后台运行,但是使用此模式需要用户进行授权认证。

7. Background fetch

iOS7新增加的一个选项,用于即使在后台,也需要频繁更新数据的应用。例如一个 PM2.5 的应用,需要几个小时更新一次数据,那么可以开启此选项,设置一个时间间隔,从而让 iOS 在间隔时间内在后台启动该应用,执行指定数据的获取工作,而此过程最多只能执行 30 秒钟。

8. Remote Notifications

iOS7新增加的一个选项,是一种静默推送,它有别于一般的推送,应用收到此类推送后,不会有任何的界面提示,而当应用退到后台或者挂起时收到此类推送,iOS也会唤醒对应的应用。

Notice

  1. 提交审核时,App Store的审核人员会检查应用中是否有必要开启该后台运行模式选项,如果应用中不需要,而又开启了,可能会被拒。(亲测,会被拒,且是不定期)
  2. 总的来说,其实后台获取和静默推送在很多方面是很类似的,特别是实现和处理的方式,但是它们适用的情景是完全不同的。后台获取更多地使用在泛数据模式下,也即用户对特定数据并不是很关心,数据应该被更新的时间也不是很确定,典型的有社交类应用和天气类应用;而静默推送或者是推送唤醒更多地应该是用户感兴趣的内容发生更新时被使用,比如消息类应用和内容型服务等。
  3. 待验证:只有iOS10以上才支持app被唤醒后在后台/锁屏状态下播放音频。

本文部分摘自zhenby的,多谢作者zhenby的贡献。
原文链接:https://www.jianshu.com/p/d3e279de2e32

你可能感兴趣的:(后台模式 background modes)