更新记录

1.0.8(2026-04-22)

  • Android 补齐通知栏媒体控制:新增上一首/播放暂停/下一首/停止动作,支持在后台从通知栏直接发起媒体命令。
  • Android 补齐前台服务保活:新增 BackgroundAudioForegroundService,播放期常驻媒体通知,降低后台被系统回收风险。
  • Android 新增通知通道与媒体通知同步:曲目标题、歌手/专辑信息与播放状态会随 MediaSession 状态联动刷新。
  • Android Manifest 新增前台服务声明(foregroundServiceType=mediaPlayback)。
  • iOS 升级回原生媒体链路:AVPlayer + AVAudioSession + MPRemoteCommandCenter + MPNowPlayingInfoCenter(含远程命令桥接与播放信息同步)。
  • Harmony 移除 stub 占位实现,补齐为 BackgroundAudioManager + InnerAudioContext 双引擎可用实现(含能力探测、事件回调、错误码路径)。
  • 文档同步更新 Android/iOS/Harmony 实现能力,版本号升级到 1.0.8

平台兼容性

uni-app(4.84)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - -

uni-app x(4.84)

Chrome Safari Android iOS 鸿蒙 微信小程序

lizhao-bg-audio

lizhao-bg-audio 是纯 UTS 背景音频播放器 API 插件,提供统一的播放控制、队列管理、远程控制事件与错误码体系。

支持平台

平台 是否支持 说明
uni-app Vue2/Vue3 可用
uni-app x 多端可用
Android 已升级为 MediaPlayer + MediaSession + AudioFocus + 前台服务 + 通知栏媒体控制 原生链路
iOS AVPlayer + AVAudioSession + MPRemoteCommandCenter + MPNowPlayingInfoCenter 原生链路
Harmony 优先 getBackgroundAudioManager(),不可用时自动回退 InnerAudioContext
Web HTMLAudioElement + MediaSession(可用时)
微信小程序 优先 getBackgroundAudioManager(),不可用时自动回退 InnerAudioContext
支付宝小程序 优先 getBackgroundAudioManager(),不可用时自动回退 InnerAudioContext

技术实现说明

平台 当前实现技术 原生增强目标技术
Android MediaPlayer + MediaSession + AudioFocus + 前台服务 + 通知栏媒体控制 继续增强通知样式、封面与系统会话稳定性(可选演进到 ExoPlayer)
iOS AVPlayer + AVAudioSession + MPRemoteCommandCenter + MPNowPlayingInfoCenter 持续增强系统会话稳定性与中断恢复策略
Harmony getBackgroundAudioManager() -> InnerAudioContext(fallback) AVPlayer + AVSession
Web HTMLAudioElement + MediaSession(可用时) 保持浏览器原生媒体栈(受浏览器后台策略限制)
微信小程序 getBackgroundAudioManager() -> InnerAudioContext(fallback) 保持小程序后台音频管理器能力
支付宝小程序 getBackgroundAudioManager() -> InnerAudioContext(fallback) 保持小程序后台音频管理器能力

会话层级说明

层级 含义 适用平台
native 原生系统会话实现(系统媒体控制能力最完整) Android / iOS
manager 基于运行时后台音频管理器封装 Harmony / 微信小程序 / 支付宝小程序
fallback 非后台会话,提供前台播放与有限媒体会话能力 Web(支持 MediaSession 时)
none 当前环境无可用会话能力 能力探测失败场景

安装说明

import * as LizhaoBackgroundAudio from '@/uni_modules/lizhao-bg-audio'

目录结构说明

uni_modules/
└─ lizhao-bg-audio/
   ├─ package.json
   ├─ readme.md
   ├─ changelog.md
   ├─ example/
   └─ utssdk/
      ├─ interface.uts
      ├─ unierror.uts
      ├─ index.uts
      ├─ app-android/
      │  └─ index.uts
      ├─ app-ios/
      │  └─ index.uts
      ├─ app-harmony/
      │  └─ index.uts
      ├─ web/
      │  └─ index.uts
      ├─ mp-weixin/
      │  └─ index.uts
      └─ mp-alipay/
         └─ index.uts

API 列表

  • initPlayer(options)
  • setTrack(options)
  • play(options)
  • pause(options)
  • resume(options)
  • stop(options)
  • seek(options)
  • setPlaybackRate(options)
  • setVolume(options)
  • setLoopMode(options)
  • setPlaylist(options)
  • appendTrack(options)
  • removeTrack(options)
  • skipToNext(options)
  • skipToPrev(options)
  • skipToIndex(options)
  • getPlayerState(options)
  • getQueueState(options)
  • getCapabilities(options)
  • on(eventName, callback)
  • off(eventName, callback)

initPlayer(options)

说明
初始化播放器运行时并返回平台能力矩阵。

支持平台
Android / iOS / Harmony / Web / 微信小程序 / 支付宝小程序

参数

参数 类型 必填 说明 默认值 可选参数
options InitPlayerOptions 初始化参数对象 autoRecover / autoRegisterRemoteCommand / success / fail / complete
options.autoRecover boolean 是否允许自动恢复播放状态 true true / false
options.autoRegisterRemoteCommand boolean 是否自动注册系统远程控制命令桥 true true / false
options.success function 成功回调,返回初始化结果与能力矩阵
options.fail function 失败回调
options.complete function 完成回调

setTrack(options)

说明
设置当前播放曲目与媒体元数据。

参数

参数 类型 必填 说明 默认值 可选参数
options SetTrackOptions 设置曲目参数对象 track / success / fail / complete
options.track BackgroundAudioTrack 当前曲目信息 id / url / title / singer / album / cover / durationHint / headers / extras
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

play(options) / pause(options) / resume(options) / stop(options)

说明
控制播放状态。

参数

参数 类型 必填 说明 默认值 可选参数
options PlayOptions/ActionOptions 控制参数对象 startPosition / success / fail / complete
options.startPosition number 从指定秒数开始播放(仅 play 0 大于等于 0 的数值
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

seek(options) / setPlaybackRate(options) / setVolume(options) / setLoopMode(options)

说明
设置播放进度、倍速、音量、循环模式。

参数

参数 类型 必填 说明 默认值 可选参数
options SeekOptions/SetPlaybackRateOptions/SetVolumeOptions/SetLoopModeOptions 参数对象 position / playbackRate / volume / loopMode / success / fail / complete
options.position number 目标播放秒数(seek) 大于等于 0 的数值
options.playbackRate number 播放倍速(setPlaybackRate) 1 正数
options.volume number 音量(setVolume) 1 0~1
options.loopMode string 循环模式(setLoopMode) off off / single / all
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

setPlaylist(options) / appendTrack(options) / removeTrack(options) / skipToNext(options) / skipToPrev(options) / skipToIndex(options)

说明
管理播放队列与切歌控制。

参数

参数 类型 必填 说明 默认值 可选参数
options SetPlaylistOptions/AppendTrackOptions/RemoveTrackOptions/ActionOptions/SkipToIndexOptions 队列相关参数对象 tracks / startIndex / track / trackId / index / success / fail / complete
options.tracks Array 设置整队列(setPlaylist)
options.startIndex number 起始播放下标(setPlaylist) 0 大于等于 0
options.track BackgroundAudioTrack 追加曲目(appendTrack)
options.trackId string 移除曲目 ID(removeTrack)
options.index number 目标下标(skipToIndex) 大于等于 0
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

getPlayerState(options) / getQueueState(options) / getCapabilities(options)

说明
获取播放器状态、队列状态与能力矩阵。

参数

参数 类型 必填 说明 默认值 可选参数
options GetPlayerStateOptions/GetQueueStateOptions/GetCapabilitiesOptions 查询参数对象 success / fail / complete
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

on(eventName, callback) / off(eventName, callback)

说明
订阅/取消订阅播放器事件。

参数 类型 必填 说明 默认值 可选参数
eventName string 事件名称 stateChange / progress / buffer / error / ended / remoteCommand / interruption
callback function 事件回调

返回值说明

BackgroundAudioTrack

字段 类型 说明
id string 曲目唯一标识
url string 音频地址
title string 曲目标题
singer string 歌手
album string 专辑名
cover string 封面图地址
durationHint number 时长提示(秒)
headers object 请求头(按平台支持)
extras object 扩展字段

BackgroundAudioPlayerState

字段 类型 说明
initialized boolean 是否已初始化
status string 当前状态
currentTrack BackgroundAudioTrack/null 当前曲目
currentTime number 当前播放时间(秒)
duration number 总时长(秒)
buffered number 缓冲进度(秒)
playbackRate number 当前倍速
volume number 当前音量
loopMode string 当前循环模式
queueIndex number 当前队列下标
queueLength number 队列长度
backgroundActive boolean 是否处于后台活跃播放态

BackgroundAudioCapabilities

字段 类型 说明
supported boolean 平台能力是否可用
sessionLevel string 会话层级:native / manager / fallback / none
backgroundAudio boolean 是否支持后台音频
mediaSession boolean 是否支持媒体会话元数据
remoteCommand boolean 是否支持远程控制命令
queue boolean 是否支持队列管理
playbackRate boolean 是否支持倍速
volume boolean 是否支持音量
platform string 平台标识
adapter string 平台适配器标识
requiresCustomBase boolean 是否建议自定义基座

错误码说明

错误码 含义 说明
9012001 当前平台不支持 当前平台不支持
9012002 参数不合法 参数不合法
9012003 运行时未初始化 运行时未初始化
9012004 音源不可用 音源不可用或曲目缺失
9012005 播放失败 播放失败
9012006 跳转位置非法 跳转位置非法
9012007 远程控制不支持 远程控制或能力不支持
9012008 缺少后台音频能力 平台缺少后台音频能力配置

权限说明

平台 是否支持 说明
Android 需声明网络权限(INTERNET),并建议配置前台服务、媒体会话、通知权限(Android 13+)
iOS 建议配置 UIBackgroundModes: audio 以稳定后台播放行为
Harmony 按运行环境启用后台音频相关能力;缺失时返回 9012008
Web 由浏览器策略控制后台行为
微信小程序 需在 app.json 配置 requiredBackgroundModes: ["audio"]
支付宝小程序 按小程序后台音频规则配置

自定义基座说明

  • 当前版本未接入三方原生 SDK,但 Android 已新增前台服务与媒体通知声明。
  • Android/iOS 已接入系统媒体会话能力,建议使用自定义基座或云打包以确保原生配置完整生效。
  • 若新增原生依赖或服务声明,必须同步维护:
    • Android:utssdk/app-android/config.jsonAndroidManifest.xml
    • iOS:utssdk/app-ios/Info.plistUTS.entitlementsPrivacyInfo.xcprivacy

示例(uni-app)

import * as BgAudio from '@/uni_modules/lizhao-bg-audio'

BgAudio.initPlayer({
  success(res) {
    console.log('init success', res)
  }
})

BgAudio.setPlaylist({
  tracks: [
    {
      id: 'track-1',
      url: 'https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3',
      title: 'SoundHelix Song 1',
      singer: 'Singer A',
      cover: ''
    },
    {
      id: 'track-2',
      url: 'https://www.learningcontainer.com/wp-content/uploads/2020/02/Kalimba.mp3',
      title: 'Kalimba',
      singer: 'Singer B'
    }
  ],
  startIndex: 0,
  success() {
    BgAudio.play({})
  }
})

BgAudio.on('remoteCommand', (event) => {
  console.log('remote command', event.payload)
})

示例(uni-app x)

import * as BgAudio from '@/uni_modules/lizhao-bg-audio'

BgAudio.initPlayer({
  success() {
    BgAudio.setTrack({
      track: {
        id: 'single-1',
        url: 'https://download.samplelib.com/mp3/sample-3s.mp3',
        title: 'Sample 3s'
      },
      success() {
        BgAudio.play({ startPosition: 0 })
      }
    })
  }
})

BgAudio.on('progress', (event) => {
  console.log('progress', event.payload)
})

注意事项

  1. 非 App 平台按“能力探测 + 明确降级/报错”执行,不伪造成功返回。
  2. setVolume 在部分小程序平台可能不支持,将返回 9012007
  3. Android 已支持系统级会话回调,建议重点回归锁屏/通知栏/耳机线控场景。
  4. iOS 已启用 MPRemoteCommandCenter 远程控制桥接与 MPNowPlayingInfoCenter 元数据同步。
  5. Harmony 当前仍为 BackgroundAudioManager + InnerAudioContext 双引擎策略,后续可继续演进到更原生的 AVSession 链路。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

后台音频、媒体会话、通知权限按平台配置

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。