Cordova应用如何防止智能手机待机导致音频播放中断
Cordova广播应用熄屏待机后音频中断解决方案
核心原因
移动端系统默认会在熄屏进入待机状态后,为了降低功耗冻结后台非活跃应用进程、暂停未申请后台权限的音频任务,因此会出现广播播放中断的问题。
具体解决方法
- 安装并启用后台模式插件
这是最通用的解决方案,使用官方维护的后台模式插件即可实现熄屏后进程保活:
安装命令:cordova plugin add cordova-plugin-background-mode
在应用入口的deviceready事件回调中添加初始化逻辑:document.addEventListener('deviceready', function () { // 启用后台模式 cordova.plugins.backgroundMode.enable(); // 可选配置:自定义通知栏展示内容,避免用户误解应用异常耗电 cordova.plugins.backgroundMode.setDefaults({ title: '广播收听中', text: '后台播放运行中,点击返回应用', silent: false }); }, false); - 分平台配置后台音频权限
- 安卓端:在
AndroidManifest.xml中添加保活和前台服务权限
如果你使用<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.WAKE_LOCK" />cordova-plugin-media播放音频,初始化时额外添加配置playAudioWhenScreenIsLocked : true。 - iOS端:在Xcode项目配置中开启
Background Modes能力,勾选Audio, AirPlay, and Picture in Picture选项即可。
- 安卓端:在
- 引导用户关闭节电优化拦截
国内多数安卓定制系统有额外的后台限制策略,上述配置仍然被拦截的情况下,可在应用首次启动时引导用户手动将应用加入系统节电白名单,允许后台活动。
注意事项
- 用户主动停止广播播放后,要调用
cordova.plugins.backgroundMode.disable()主动关闭后台模式,避免被应用商店判定为恶意耗电应用被下架。 - 针对限制极严的定制系统,建议额外添加播放中断自动续播的兜底逻辑,监听音频暂停事件后校验是否是用户主动暂停,非主动触发的暂停自动尝试重启播放。
内容的提问来源于stack exchange,提问作者Massimiliano Comunale
相关产品推荐
相关产品推荐

