类似的问题-使用偏好设置>音频>输出与逻辑技 USB 无线耳机不同,导致应用程序执行完美并播放声音无问题。在模拟器外从未出现过问题-设备上的代码运行良好。
简而言之,这是一个尤其棘手和晦涩的问题。我也遇到了一个意外的问题:
No factory registered for id
等待片刻后,还会出现其他几个控制台报告的错误,包括:
HALC_ProxyIOContext::IOWorkLoop:服务器无法启动,错误:
AQMEIO.cpp:182:AwaitIOCycle:15.000s超时
CA_UISoundClient.cpp:244:StartPlaying_block_invoke:CA_UISoundClientBase::StartPlaying:AddRunningClient失败
尝试播放声音时出现错误。Xcode 12.2,Mac OSX Catalina 10.15.7,模拟器运行iOS 14.2。
代码以前在模拟器的旧版本上工作正常。
始终正确导入AVFoundation&将AVAudioPlayer类属性声明为:
var audioPlayer: AVAudioPlayer!
在我的情况下,似乎与Mac OSX中的音频驱动程序有关。只有当我将Mac系统偏好设置>声音>输出设置为我的Logitech USB耳机时,才会出现这个问题。否则,代码在以下情况下正常工作:通过我的LG监视器播放,在我的AirPods Pro上播放,并且在模拟器外部执行并在设备>我的iPhone 11 Pro上运行时。
花了一个多小时来诊断这个问题,重新启动后注意到耳机未用于输出时音频工作。将偏好设置>声音>输出设置更改为除Logitech USB耳机以外的其他内容立即解决了所有其他播放实例中的问题。
甚至不确定在哪里将此问题归档为苹果错误,但希望它能帮助某些人。假设这是一个特定于操作系统的问题,而不是会导致应用程序或代码问题的问题。
var player: AVAudioPlayer?;
放在函数内部导致了错误。当我像你说的那样将它移动到全局作用域时,它就起作用了。 - Phat Tran