已在Info.plist添加NSSpeechRecognitionUsageDescription仍崩溃,如何解决?
这种情况我开发时也碰到过好几次,明明在Info.plist里加了权限描述,系统还是抛出崩溃提示,大概率是以下几个细节没处理到位,你可以逐个排查:
确认权限键添加到了正确的Target
很多时候开发者会不小心把键加到项目根目录的通用Info.plist里,而不是当前运行的Target对应的plist文件。你可以通过Xcode的Target -> Info -> Custom iOS Target Properties路径查看,确保这里已经添加了NSSpeechRecognitionUsageDescription键和对应的描述文本;或者直接右键打开Target对应的Info.plist文件(通常在Target文件夹下),确认键存在。检查键名拼写完全一致
系统对隐私权限键名的大小写、下划线要求非常严格,必须完全匹配NSSpeechRecognitionUsageDescription,不能少写字母、错写大小写或者漏下划线——比如写成NSspeechRecognitionUsageDescription(首字母小写)就会直接失效。确保描述字符串非空且有效
仅仅添加键但字符串值为空、只填空格或者占位符是不行的,必须填写清晰的、告知用户用途的文本,比如"需要访问语音识别功能,将你的语音转换为可编辑的文字内容",这样系统才会认可这个描述。清理缓存并重新构建
Xcode的缓存有时候会导致Info.plist的修改不生效,试试这几步:- 按下
Cmd+Shift+K清理构建文件夹 - 退出Xcode,找到Derived Data文件夹(路径:Xcode -> Preferences -> Locations -> Derived Data),删除整个文件夹
- 重新打开项目,重新构建运行
- 按下
检查是否有多个Target或扩展需要配置
如果你的应用包含App Extension(比如小组件、分享扩展),或者有多个运行Target,每个需要访问语音识别功能的Target都必须单独在自己的Info.plist里添加这个权限键,不能只配置主应用的。
内容的提问来源于stack exchange,提问作者salma209

