iOS环境下AudioContext无法从suspended状态恢复的问题求助
iOS环境下AudioContext无法从suspended状态恢复的问题求助
我做了一个能播放音频的网站,它大多时候是在iOS应用的WebView里运行,不过也支持直接访问。音频是用AudioContext来播放的,但遇到个头疼的问题:当设备休眠或者锁屏之后,AudioContext会被挂起。
我现在监听了statechange事件,一旦音频状态变成suspended或者interrupted,等用户回到应用时就会显示一个暂停提示标。点击这个提示标会触发下面这段代码:
async function resumeAudio() { if (context.state === SUSPENDED || context.state === INTERRUPTED) { try { console.log(`Audio context state is ${context.state}. Attempting to resume audio context.`); await context.resume(); console.log(`Audio context resumed. State is now ${context.state}.`); } catch (e) { console.error('Error resuming audio context: ', e); } } }
奇怪的是,有时候上下文处于挂起状态时,调用resume能成功,但有时候就是不行——一旦失败,await context.resume()这个调用就永远不会resolve。
我实在搞不懂为什么会卡在挂起状态?目前查到的原因都是说context.resume()必须由用户输入触发,而我就是这么做的啊。
补充说明:刚发完问题我才发现之前没给context.resume()加await,现在已经把函数改成async的,并且加上await了。
备注:内容来源于stack exchange,提问作者bublebboy
相关产品推荐
相关产品推荐

