AudioKit 5.2.2 MIDI功能在iOS项目失效 macOS项目运行正常问题求助
解决方案
按优先级依次排查调整:
- 首先补全iOS隐私权限配置
iOS 14及以上系统要求申请MIDI使用权限,你需要在项目的Info.plist中添加配置项:NSMIDIUsageDescription,值可以填“需要MIDI权限接收外设消息”之类的自定义描述,没有这个权限配置的话,系统会直接拦截MIDI数据,只会保留连接状态变更的通知,就是你现在能收到receivedMIDISetupChange但收不到业务消息的典型表现。 - 调整API调用顺序
你当前的调用顺序是先开输入端口再加监听,会导致端口开启瞬间的消息漏报,部分AudioKit版本还会出现后续消息无法回调的问题,把viewDidLoad里的代码顺序调换:midi.addListener(self) midi.openInput() - 明确指定监听的MIDI输入端口
无参数的openInput()在iOS上有时无法自动识别所有外接MIDI设备,你可以先打印已识别的输入设备列表确认设备被系统识别,再主动打开对应端口:print("可用MIDI输入:\(midi.inputNames)") // 遍历所有输入端口打开,或者指定你要监听的设备名打开 for inputName in midi.inputNames { midi.openInput(name: inputName) } - 检查虚拟MIDI场景的额外配置
如果你监听的是App内部或者其他App的虚拟MIDI端口,还需要在项目Signing & Capabilities中开启Background Modes,勾选Audio, AirPlay, and Picture in Picture选项,否则App退到后台或者系统资源调度时会切断虚拟MIDI数据流。
内容的提问来源于stack exchange,提问作者Jonny123
相关产品推荐
相关产品推荐

