iOS 16 Beta中AVSpeechSynthesisVoice.speechVoices()返回空数组求助
AVSpeechSynthesisVoice.speechVoices() 返回空数组的排查方案 针对iOS 16 Beta版本里调用AVSpeechSynthesisVoice.speechVoices()始终返回空数组的问题,可尝试以下几个排查方向:
检查Info.plist权限配置
虽然官方文档未提及API变更,但iOS 16 Beta可能新增了语音合成的权限要求。确保Info.plist中添加NSSpeechSynthesisUsageDescription键,填写合理的权限说明文本,避免因权限缺失导致API无法正常返回数据。验证设备语音包状态
进入设备的设置 > 辅助功能 > 语音内容 > 语音,确认已安装至少一个系统语音包。部分iOS 16 Beta版本可能默认未预装完整语音资源,手动下载一个语音包后再测试API调用。重启应用或设备
Beta版本的系统服务偶尔会出现初始化异常,完全关闭应用后重新启动,或者直接重启设备,能解决不少临时的进程缓存问题。延迟调用API时机
iOS 16 Beta中语音合成服务的初始化可能存在延迟,避免在App启动的早期阶段(比如application:didFinishLaunchingWithOptions:方法内)直接调用speechVoices(),可以将调用时机延后,比如放在用户触发的操作事件中,或者用DispatchQueue.main.asyncAfter延迟几秒执行。向Apple提交Bug反馈
如果上述方法都无法解决问题,这大概率是iOS 16 Beta的系统bug。通过Apple的Feedback Assistant提交问题,附上设备型号、Beta版本号、复现步骤和代码片段,帮助官方定位修复。
内容的提问来源于stack exchange,提问作者marcgg

