x-musicnotify-s 通知栏音乐播放器
系统媒体控件。把正在播放的封面、标题、副标题和时间线同步到通知栏、锁屏、控制中心或鸿蒙播控中心,并回传播放、暂停、停止、上一首、下一首、拖进度。
本插件不解码音频。真正播放请用业务播放器或 x-mediaplay-s,再把进度喂给本插件。
兼容性
| Harmony | iOS | Android | WEB | 微信小程序 |
|---|---|---|---|---|
| 支持 | 支持 | 支持 | 部分支持 | 部分支持 |
调用
ts
import {
show,
update,
setProgress,
setPlaying,
hide,
onAction,
offAction,
getState,
XMusicNotifyShowOptions
} from "@/uni_modules/x-musicnotify-s"
onAction((res) => {
if (res.action == "pause") {
setPlaying({ playing: false })
}
})
show({
title: "晴天",
subtitle: "周杰伦",
album: "叶惠美",
cover: "/static/x-musicnotify/default-cover.png",
durationMs: 269000,
positionMs: 0,
playing: true,
success: (res) => {
console.log(res.errMsg)
}
} as XMusicNotifyShowOptions)方法
| 名称 | 说明 |
|---|---|
| show | 展示或重建媒体通知,title 必填 |
| update | 更新标题、副标题、专辑、封面、时长、进度、倍速、强调色 |
| setProgress | 只更新时间线,适合跟播放器 onInfo |
| setPlaying | 只切换播放/暂停外观 |
| hide | 关闭通知并释放系统会话 |
| onAction | 监听系统控件操作,后注册覆盖前一次 |
| offAction | 取消监听 |
| getState | 当前展示快照 |
| isShowing | 通知是否仍在 |
参数
XMusicNotifyShowOptions
| 字段 | 说明 | 默认 |
|---|---|---|
| title | 歌名 | 必填 |
| subtitle | 歌手 | 空 |
| album | 专辑 | 空 |
| cover | 本地绝对路径 / file:// / http(s) / /static | 内置默认封面 |
| durationMs | 总时长 ms,大于 0 才画时间线 | 0 |
| positionMs | 当前进度 ms | 0 |
| playing | 是否显示为播放中 | true |
| speed | 倍速 | 1 |
| showPrev / showNext / showStop | 按钮显隐 | true |
| canSeek | 是否允许拖时间线 | true |
| color | 强调色 #RRGGBB,主要影响 Android | #31C27C |
XMusicNotifyAction.action:play / pause / stop / prev / next / seek / close / click。seek 时 positionMs 为目标进度。
错误码:1001 系统错误,1002 参数错误,1003 通知服务不可用,1004 通知权限被拒绝,1007 当前环境无法显示控件,1008 平台不支持,1009 尚未 show。
平台差异
Android
MediaSessionCompat+NotificationCompat.MediaStyle+mediaPlayback前台服务。- Android 13+ 需运行时授予
POST_NOTIFICATIONS,插件会先申请再展示。 - Android 13+ 系统媒体通知的进度条来自 session 的 duration / position,不必自己画 RemoteViews。
- 修改
config.json后需重新打自定义基座。
iOS
MPNowPlayingInfoCenter+MPRemoteCommandCenter。- 插件会把
AVAudioSession设为playback。锁屏控件在有真实音频在播时最稳定,建议同时用x-mediaplay-s。 - 宿主需允许后台音频:插件已声明
UIBackgroundModes: audio。
HarmonyOS
AVSession,类型audio。至少注册一条控制命令后播控中心才会出现。- 进度按官方建议节流,后台播放保活仍取决于你的播放器长时任务。
- 宿主
entry/module.json5建议声明backgroundModes: ["audio"]。
Web
navigator.mediaSession。Chrome 等通常要页面里有真实媒体在播,通知栏才会出现。- Safari 支持有限,不支持时
fail1008。
微信小程序
- 只更新
BackgroundAudioManager的 title / singer / coverImgUrl / epname,并转发 onPlay / onPause / onStop / onPrev / onNext。 - 封面建议用
https。没有后台音频在播时,系统通知栏可能不出现。
资源
插件内置默认封面(黑胶 + 音符,QQ 绿强调)和播放 / 暂停 / 停止 / 上一首 / 下一首 / 关闭矢量图标。
- 演示页封面:
/static/x-musicnotify/default-cover.png - 原生回退封面:Android
assets/x_musicnotify_cover.png、iOSResources/x_musicnotify_cover.png、鸿蒙rawfile/x_musicnotify_cover.png
业务封面传 cover 即可覆盖。HTTP 封面建议用 https。
更新日志
1.0.0(2026-08-17)
- 新增通知栏音乐播放器 API 插件:封面、标题、副标题、时间线、播放/暂停/停止/上一首/下一首。
- Android MediaSession + MediaStyle 前台服务;iOS Now Playing;鸿蒙 AVSession;Web Media Session;微信后台音频元数据。
