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

iOS15系统下AirPods Pro无法播放音频的故障排查及解决方案问询

问题根本原因

这是iOS15系统的已知原生bug,和AirPods Pro的蓝牙音频路由校验逻辑相关:

  • iOS15重构了AirPods Pro的音频元数据同步逻辑,会将App的产品名、锁屏播放信息打包同步到耳机端做验证,当Product Name包含空格(多单词)时,系统生成的同步报文编码异常,AirPods Pro收到后会判定该音频会话无效,直接切断音频输出
  • 其余型号AirPods和扬声器不受影响是因为:普通AirPods没有该元数据校验逻辑,扬声器不需要走蓝牙路由的元数据校验流程
  • 删除setupMediaPlayerNotificationView(true)后恢复正常,是因为跳过了锁屏播放控制的注册,不会触发耳机端的元数据校验流程

修复方案

快速修复方案

直接修改Xcode中Build Settings -> Product Name为不含空格的单个单词,无需修改业务代码即可正常使用全部功能。

保留多单词产品名的兼容方案

如果需要保留多单词的产品名,修改两处代码即可规避bug:

  1. 主动配置AVAudioSession的路由规则,在App启动/音频模块初始化时添加以下代码:
do {
    try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [.allowBluetooth, .allowBluetoothA2DP, .allowAirPlay])
    try AVAudioSession.sharedInstance().setActive(true)
} catch {
    print(error.localizedDescription)
}
  1. 调整原有播放逻辑的执行顺序,先注册锁屏控制再初始化播放音频:
let url = Bundle.main.url(forResource: "\(masterIndex)0", withExtension: "m4a")!
do {
    // 先注册锁屏控制,再初始化音频播放器
    setupMediaPlayerNotificationView(true)
    lockScreen()
    
    audioPlayer = try AVAudioPlayer(contentsOf: url)
    audioPlayer.delegate = self
    audioPlayer.prepareToPlay()
    play(sender:AnyObject.self as AnyObject)
} catch {
    print(error.localizedDescription)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:54:03