You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:55:27