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

设备静音且AVAudioSession设为ambient类别时仍压低其他音频如何解决

iOS AVAudioSession 后台音频异常压低问题解决方案

该问题并非iOS系统缺陷,是AVAudioSession配置的生效逻辑导致:你配置的.duckOthers选项只要对应AVAudioSession处于激活状态,无论你的App是否实际播放音频,系统都会持续执行压低其他App音频的逻辑。你在静音模式下仅停止了自身音频播放,没有调整session配置或失活session,因此duck效果会一直保留。

修复步骤

  • 调整session配置的触发时机,不要全局提前设置带.duckOthers的category并长期激活:仅在你需要播放音频之前,再配置对应参数并激活session,示例代码如下:
// 播放前配置并激活session
let session = AVAudioSession.sharedInstance()
try session.setCategory(.ambient, mode: .default, options: [.duckOthers, .interruptSpokenAudioAndMixWithOthers])
try session.activate()
// 之后再启动你的音频播放器
  • 在音频播放结束、或检测到设备切至静音模式需要停播时,除了停止自身音频播放器外,同步失活session或重置category以取消duck效果,示例代码如下:
// 停止播放后重置session
let session = AVAudioSession.sharedInstance()
// 方法1:直接失活session,适合短时间内不会再次播放的场景
try session.deactivate(options: .notifyOthersOnDeactivation)

// 方法2:仅移除duck相关选项,适合短时间内可能再次播放的场景
// try session.setCategory(.ambient, mode: .default)

内容的提问来源于stack exchange,提问作者Chris Vasselli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:06:04