uni-app getBackgroundAudioManager在安卓中测试域名可播放M4A正式域名报-99错误码但正式域名在IOS可正常播放M4A,MP3在安卓正式域名也可播放

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app getBackgroundAudioManager在安卓中测试域名可播放M4A正式域名报-99错误码但正式域名在IOS可正常播放M4A,MP3在安卓正式域名也可播放

开发环境 版本号 项目创建方式
Windows Windows 10 专业版 HBuilderX

操作步骤

预期结果

正常播放

实际结果

回调onEnded,报{"errMsg":"未知错误","errCode":-99}

bug描述

uni.getBackgroundAudioManager()函数,在安卓端赋值src时,音频为M4A格式会直接回调onEnded,报{"errMsg":"未知错误","errCode":-99},但是赋值为MP3时又是正常的。

我有两个域名,一个正式地址,一个测试地址。同一个M4A音频进行测试。手机是小米和红米。

测试地址:

  • Android端 --正常
  • IOS端 --正常

正式地址:

  • Android端 --直接回调onEnded,报{"errMsg":"未知错误","errCode":-99},MP3格式又是正常的
  • IOS端 --正常

1 回复

在 uni-app 中使用 getBackgroundAudioManager 时,遇到在安卓设备上测试域名可以播放 M4A 文件,但正式域名报 -99 错误码,而在 iOS 设备上正式域名可以正常播放 M4A 文件,MP3 文件在安卓正式域名也可以正常播放的情况,可能是由于以下原因导致的:

可能的原因及解决方案

  1. 域名 HTTPS 问题

    • 在安卓设备上,正式域名可能没有正确配置 HTTPS,或者 HTTPS 证书存在问题。安卓设备对 HTTPS 的要求比 iOS 更严格。
    • 解决方案:确保正式域名的 HTTPS 证书有效且正确配置,可以使用 SSL Labs 等工具检查证书的有效性。
  2. MIME 类型配置问题

    • 服务器可能没有正确配置 M4A 文件的 MIME 类型,导致安卓设备无法正确识别和播放。
    • 解决方案:在服务器上配置正确的 MIME 类型,确保 .m4a 文件的 MIME 类型为 audio/mp4audio/x-m4a
  3. 跨域问题

    • 正式域名可能存在跨域问题,导致安卓设备无法正常加载音频文件。
    • 解决方案:在服务器端配置 CORS(跨域资源共享),确保允许从你的应用域名访问音频文件。
  4. 音频文件编码问题

    • 安卓设备可能对某些 M4A 文件的编码格式支持不完全,导致无法播放。
    • 解决方案:尝试将 M4A 文件转换为其他格式(如 MP3),或者使用不同的编码工具重新编码 M4A 文件。
  5. 网络问题或缓存问题

    • 正式域名可能存在网络问题,或者安卓设备缓存了错误的文件信息。
    • 解决方案:清除安卓设备的缓存,或者尝试在不同的网络环境下测试。
  6. uni-app 的兼容性问题

    • getBackgroundAudioManager 在安卓设备上可能存在某些兼容性问题。
    • 解决方案:尝试更新 uni-app 到最新版本,或者使用其他音频播放插件或库进行测试。

调试步骤

  1. 检查域名和证书

    • 确保正式域名的 HTTPS 证书有效,并且没有过期。
  2. 检查服务器配置

    • 确保服务器正确配置了 M4A 文件的 MIME 类型,并且允许跨域访问。
  3. 检查音频文件

    • 使用不同的工具重新编码 M4A 文件,确保其编码格式兼容安卓设备。
  4. 调试代码

    • 在代码中添加调试信息,检查音频文件的 URL、加载状态、错误信息等。
  5. 网络调试

    • 使用 Chrome 的开发者工具或其他网络调试工具,检查音频文件的加载过程和网络请求状态。

示例代码

const backgroundAudioManager = uni.getBackgroundAudioManager();

backgroundAudioManager.src = 'https://your-official-domain.com/audio.m4a';
backgroundAudioManager.title = 'Audio Title';
backgroundAudioManager.coverImgUrl = 'https://your-official-domain.com/cover.jpg';

backgroundAudioManager.onPlay(() => {
  console.log('开始播放');
});

backgroundAudioManager.onError((err) => {
  console.error('播放错误:', err);
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!