SwiftUI调用AVAudioSession.sharedInstance()出现控制台错误,如何阻止打印?
解决AVAudioSession控制台打印插件注册错误的方法
在SwiftUI中调用AVAudioSession.sharedInstance()时出现的[plugin] AddInstanceForFactory: No factory registered for id <CFUUID ...>错误,本质是iOS模拟器环境下CoreAudio部分插件未注册导致的,真机通常不会出现。以下是几种解决方式:
1. 提前配置音频会话类别
在首次获取AVAudioSession实例前,先明确设置会话的类别和模式,让系统知晓音频用途,避免加载无关插件。示例代码:
import AVFoundation // 在App启动或使用音频前执行 func configureAudioSession() { do { try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default) try AVAudioSession.sharedInstance().setActive(true) } catch { print("音频会话配置失败: \(error.localizedDescription)") } }
根据实际音频场景选择类别,比如录音用.record,同时播放和录音用.playAndRecord等。
2. 过滤Xcode控制台日志
如果不想修改代码,直接在Xcode控制台屏蔽该错误:
- 在控制台顶部的搜索框输入:
NOT [plugin] AddInstanceForFactory: No factory registered for id <CFUUID - 或者点击控制台左侧的「Filter」按钮,创建自定义过滤规则,排除包含该错误字符串的日志条目。
3. 模拟器环境下补充Info.plist配置
如果应用不需要麦克风权限,仍可在Info.plist中添加NSMicrophoneUsageDescription键(值可以为空字符串),部分场景下能阻止系统尝试加载麦克风相关插件触发错误。
内容的提问来源于stack exchange,提问作者wristbands
相关产品推荐
相关产品推荐

