uni-app如何控制背景音乐在后台播放

小芳同学_9262

小芳同学_9262

2026-09-15

272人浏览

原创

uni.getBackgroundAudioManager()是App端后台播放唯一入口,必须配合iOS的UIBackgroundModes:["audio"]、Android的WAKE_LOCK权限、HTTPS封面图及用户手势触发play(),缺一不可。

uni-app如何控制背景音乐在后台播放

uni.getBackgroundAudioManager() 是 App 端后台播放的唯一入口

App 端锁屏后还想播音乐,uni.getBackgroundAudioManager() 不是“推荐用”,而是必须用。它直接桥接 iOS 的 AVAudioSession 和 Android 的 MediaSession,让系统承认“这个 App 正在播音频”,从而授予后台运行资格。用 uni.createInnerAudioContext() 或 标签,在真机锁屏后基本 1–3 秒内就会被静音或销毁,尤其 iOS 上几乎必然失效。

manifest.json 权限配置必须手动写对位置和格式

改 manifest 不是勾个选项就行,漏一项就白忙。关键点:

  • iOS 配置必须嵌套在 "app-plus" → "distribute" → "ios" 下,写成:"UIBackgroundModes": ["audio"](注意是数组,"audio" 不能拼错、不能带空格)
  • Android 配置在 "app-plus" → "distribute" → "android" 下,"permissions" 必须是字符串数组:[""](XML 标签必须转义,结尾斜杠不能少)
  • 改完必须重新云打包——本地调试、热更新、HBuilderX 模拟器均不生效;打包日志里出现 background audio enabled 才算成功

播放前必须填全 title/singer/coverImgUrl 三项元数据

iOS 锁屏界面只认这三个字段,缺任意一个,系统就当“无媒体信息”,直接不渲染控制条。Android 虽稍宽松,但这也是基础门槛:

音乐人(虚拟歌手MV制作)
音乐人(虚拟歌手MV制作)

虚拟歌手场景 MV 制作流水线。输入音乐音频、歌词、视频脚本、虚拟歌手三视图参考图,自动生成完整场景 MV。支持 AI 动态视频、风格化动画模板、3D 模型三种动画模式。不支对口型。

下载
  • coverImgUrl 必须是本地绝对路径(如 /static/cover.jpg),网络地址在 App 端无效
  • title 和 singer 至少填两个,否则 iOS 锁屏只显示“未知”
  • 必须在调用 play() 前设置好这三项,顺序不能颠倒;play() 后再设,iOS 不同步显示

播放动作必须由用户手势触发,且监听要用 manager 自身事件

不能在 onLoad 或 onShow 里自动调 play(),否则 iOS/Safari 微信会拦截且不抛错。状态监听也别依赖页面生命周期:

  • 可靠做法:绑定到按钮 @click 回调中执行 manager.play()
  • 监听实际播放状态,只能用 manager.onPlay()、manager.onPause()、manager.onEnded() —— 用户从锁屏点播放键时,页面根本没 onShow,但 onPlay 一定会触发
  • onEnded 后需手动 seek(0) + play() 实现循环,loop = true 在后台无效

最容易被忽略的是:H5 端完全不支持 uni.getBackgroundAudioManager(),调用无报错但也不起作用,务必用条件编译隔离;而 iOS 对 HTTPS、字段完整性、触发时机的限制极严,错一点就静默失败,连错误都不抛。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2703

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5863

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6830

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6558

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

943

5

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

120

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习