iOS 16 Beta 5中AVAudioSession setCategory报错‘what’求助
针对iOS 16 Beta 5中调用try AVAudioSession.sharedInstance().setCategory(<category>, options: .mixWithOthers)出现AVAudioSession_iOS.mm:2365 Failed to set category, error: 'what'错误且连接中断的问题,可尝试以下排查和解决步骤:
验证传入的Category合法性
确认你传入的<category>是有效的AVAudioSessionCategory枚举值(如.playback、.record等),避免使用已废弃或自定义的字符串常量。Beta 5可能对Category的校验逻辑进行了调整,某些在Beta 4中兼容的用法可能不再被允许。优化调用时机与线程
确保setCategory调用在主线程执行,且尽量在App启动完成后(而非启动初期)进行操作。部分开发者反馈Beta 5对音频会话操作的时机要求更严格,提前调用可能触发未知错误。捕获完整错误详情
当前报错信息过于简略,可通过扩展错误捕获逻辑获取更多细节:do { let session = AVAudioSession.sharedInstance() try session.setCategory(.playback, options: .mixWithOthers) try session.activate() } catch let error as NSError { print("音频会话设置失败:\(error.localizedDescription)") print("错误调试信息:\(error.debugDescription)") }完整的错误日志可能会揭示权限、Category冲突等隐藏问题。
检查音频权限配置
若你使用的Category涉及录音(如.record),确认Info.plist中已添加NSMicrophoneUsageDescription字段并填写合理描述;若涉及媒体库访问,需检查NSMusicLibraryUsageDescription是否配置齐全。Beta 5可能强化了权限校验,缺失权限会直接导致设置失败。临时移除
.mixWithOthers选项测试
先尝试不添加.mixWithOthers选项调用setCategory,若能成功执行,说明该选项在Beta 5中存在兼容性问题。可临时改用其他音频会话配置(如调整模式为.default),同时向苹果提交Bug反馈。向苹果提交反馈
由于问题仅出现在Beta 5版本,大概率是系统层面的Bug。建议通过苹果Feedback Assistant提交报告,附上设备型号、iOS版本、完整代码片段及错误日志,帮助官方定位修复。
内容的提问来源于stack exchange,提问作者cohen72

