锁屏界面仅显示当前播放项信息,不支持播放列表透出;播放列表必须在App内实现,通过全局状态管理和手动同步索引更新锁屏信息。

锁屏界面本身不显示播放列表,只显示当前播放项的标题、歌手、封面和控制按钮;播放列表必须在 App 内实现,不能“透出”到系统锁屏界面上。
uni.getBackgroundAudioManager() 不提供播放列表透出能力
这个 API 只能向系统媒体中心上报当前正在播放的单条音频信息(title、singer、coverImgUrl),iOS 锁屏界面和 Android 通知栏都只渲染这一条。它没有「播放列表」字段,也没有批量上报接口。试图往 coverImgUrl 里塞多张图、或用 title 拼接“1/5《歌名》”之类,系统会直接忽略或截断——这不是 bug,是 iOS/Android 原生限制。
常见错误现象:
• 调用 manager.setCover() 后锁屏图没变
• title 显示乱码或被截成“…”
• 换歌后锁屏信息延迟更新甚至卡死
根本原因就是误以为它支持列表级元数据同步。
播放列表 UI 必须在 App 页面内实现
用户点击底部「列表」按钮弹出的面板,本质是页面内的一个 v-if 控制的 scroll-view 区域,配合全局状态管理(如 store/playlistStore.uts)。它的存在与锁屏无关,但需注意以下实操细节:
- 弹窗遮罩层必须用
view+z-index实现,不能依赖第三方弹窗组件(跨端行为不可控) - 列表项点击切歌时,必须同步调用
manager.src = newUrl+manager.title = newTitle等,否则锁屏信息不会更新 - 本地路径要用
/static/xxx.mp3格式,相对路径(如./audio/1.mp3)或未打包资源在真机上会 404 - Android 上若列表滚动卡顿,检查是否在
scroll-view内嵌了过多image,建议加lazy-load和固定宽高
锁屏状态下切换歌曲只能靠系统控件或耳机按键
用户在锁屏界面点「下一首」,会触发 manager.onPrev() / manager.onNext() 事件——但这些事件里你没法直接访问播放列表数组,因为 JS 上下文可能已被挂起。正确做法是:
- 在 App 启动时就用
getPlaylist()把列表加载进内存(非异步读取) - 维护一个全局当前索引(如
currentPlayIndex: number),所有切歌操作都基于它计算 - 在
onNext()回调里手动更新currentPlayIndex,再调用manager.setXXX()同步锁屏信息 - iOS 上必须确保
manager.src是有效 URL,空字符串或 404 地址会导致后续所有控制失效
最易被忽略的一点:manager 的事件监听必须在页面 onLoad 阶段就绑定,不能等到用户点播放才初始化——锁屏后 JS 执行环境受限,延迟绑定大概率失败。


















