求了个解
求了个解
  • 发布:2024-04-25 15:52
  • 更新:2024-10-18 19:22
  • 阅读:301

【报Bug】uni.createInnerAudioContext()打包到ios无法正常播放声音

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 4.08

手机系统: iOS

手机系统版本号: iOS 16

手机厂商: 苹果

手机机型: iPhone 13

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

例如密码输入框的音频
//输入框密码长度变化

    ischange(e) {  

                this.initialisePassword()  
                this.passwordContexts['ber'].play()  
  this.passwordContexts['ber'].onPlay(() => {  
                    console.log('开始播放')  
                })  
                this.passwordContexts['ber'].onEnded(() => {  
                    this.passwordContexts['ber'].destroy()  
                })  
                this.passwordContexts['ber'].onError((res) => {  
                    console.log(res, 'yinpin')  
                })  
            },  
            //输入密码的音频  
            initialisePassword() {  
                if (this.passwordContexts['ber']) {  
                    this.passwordContexts['ber'].destroy();  
                }  
                const innerAudioContext = uni.createInnerAudioContext();  
                innerAudioContext.autoplay = false; // 禁自动播放    
                innerAudioContext.src = '/static/sounds/ber.mp3';  
                innerAudioContext.sessionCategory = 'ambient';  
                this.passwordContexts['ber'] = innerAudioContext  
            },

操作步骤:
    methods: {  
            //失去焦点之后把自动聚焦变为false  
            isblur(e) {  
                if (e == 'ok') {  
                    this.showKeyboard = false  
                }  
            },  
//输入框长度变化了  
            ischange(e) {  
                this.initialisePassword()  
                this.passwordContexts['ber'].play()  
  this.passwordContexts['ber'].onPlay(() => {  
                    console.log('开始播放')  
                })  
                this.passwordContexts['ber'].onEnded(() => {  
                    this.passwordContexts['ber'].destroy()  
                })  
                this.passwordContexts['ber'].onError((res) => {  
                    console.log(res, 'yinpin')  
                })  
            },  
            //输入密码的音频  
            initialisePassword() {  
                if (this.passwordContexts['ber']) {  
                    this.passwordContexts['ber'].destroy();  
                }  
                const innerAudioContext = uni.createInnerAudioContext();  
                innerAudioContext.autoplay = false; // 禁自动播放    
                innerAudioContext.src = '/static/sounds/ber.mp3';  
                innerAudioContext.sessionCategory = 'ambient';  
                this.passwordContexts['ber'] = innerAudioContext  
            },  
            //点击房间的音频  
            initialiseClick() {  
                if (this.qiaContexts['qia']) {  
                    this.qiaContexts['qia'].destroy();  
                }  
                const innerAudioContext = uni.createInnerAudioContext();  
                innerAudioContext.autoplay = false; // 禁自动播放    
                innerAudioContext.src = '/static/sounds/qia.mp3';  
                innerAudioContext.sessionCategory = 'ambient';  
                this.qiaContexts['qia'] = innerAudioContext  
            },}

预期结果:

音频能够正常播放,并且不会中止其他声音播放

实际结果:
            ischange(e) {  
                this.initialisePassword()  
                this.passwordContexts['ber'].play()  
  this.passwordContexts['ber'].onPlay(() => {  
                    console.log('开始播放')  
                })  
                this.passwordContexts['ber'].onEnded(() => {  
                    this.passwordContexts['ber'].destroy()  
                })  
                this.passwordContexts['ber'].onError((res) => {  
                    console.log(res, 'yinpin')  
                })  
            },  
        {"errMsg":"MediaError","errCode":-5} ,  yinpin

经过我今天的调试,最终发现在每次音频播放的时候,同一时间onPlay()里的回调会打印两次,我估计这可能是音频没办法正常播放的原因,然后我把innerAudioContext.sessionCategory = 'ambient';改为了'playback',声音能正常出来了,但是并不能完全满足需求,因为项目中部分地方的音频可能会根据后端的数据变化同时出现。

bug描述:

项目打包到安卓和h5播放所有的音频都没有问题,但是打包到ios进行真机调试的时候音频无法播放,偶尔会出现一下声音但是马上又消失,

2024-04-25 15:52 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com

解决了么 我也遇到了

要回复问题请先登录注册