uniapp app端如何实现息屏播放

在uniapp开发app时,如何实现息屏后继续播放音频?目前测试发现锁屏或切到后台时播放会暂停,需要像音乐APP那样保持后台运行。请问具体需要配置哪些权限?是否要调用原生API或使用插件?有没有完整的代码示例可以参考?

2 回复

在uniapp中,可通过plus.audio.createPlayer创建音频播放器,并设置backgroundControl: true实现息屏播放。需在manifest.json中配置后台运行权限。


在 UniApp 中实现息屏播放(后台播放)功能,需要使用原生插件或 UniApp 提供的 API 结合平台特定配置。以下是实现步骤和关键代码示例:

实现步骤

  1. 使用 uni.createInnerAudioContext()uni.getBackgroundAudioManager()

    • 推荐 uni.getBackgroundAudioManager(),它专为后台播放设计,支持锁屏和控制中心显示。
    • 注意:H5 端不支持后台播放,仅 App 和部分小程序端有效。
  2. 配置 App 原生设置

    • manifest.json 中启用后台音频播放权限:
      {
        "app-plus": {
          "distribute": {
            "ios": {
              "UIBackgroundModes": ["audio"]
            },
            "android": {
              "permissions": ["WAKE_LOCK"]
            }
          }
        }
      }
      
    • Android 额外配置:在原生 Android 项目中,确保 Service 或前台服务权限(具体需依赖插件)。
  3. 核心代码示例

    // 创建后台音频管理器
    const bgAudioManager = uni.getBackgroundAudioManager();
    
    // 设置音频属性
    bgAudioManager.title = '播放标题'; // 锁屏显示标题
    bgAudioManager.singer = '歌手名';
    bgAudioManager.coverImgUrl = 'https://example.com/cover.jpg';
    
    // 播放音频
    bgAudioManager.src = 'https://example.com/audio.mp3';
    bgAudioManager.play();
    
    // 监听事件(可选)
    bgAudioManager.onPlay(() => {
      console.log('开始播放');
    });
    bgAudioManager.onPause(() => {
      console.log('暂停播放');
    });
    
  4. 注意事项

    • iOS:需在 manifest.json 中声明 UIBackgroundModes,否则息屏后播放会中断。
    • Android:依赖系统权限和硬件支持,部分机型需手动允许后台运行。
    • 测试:在真机上测试,模拟器可能无法模拟息屏行为。

替代方案

如果标准 API 不满足需求,可考虑使用原生插件(如 DCloud 插件市场 的音频插件),但需额外集成。

通过以上步骤,即可在 UniApp App 端实现息屏播放功能。

回到顶部