Flutter应用提审App Store报ITMS-90683麦克风权限错误咨询
Flutter应用提交App Store触发NSMicrophoneUsageDescription缺失报错的排查方案
问题场景
Flutter应用未主动开发麦克风相关功能,首次提交App Store审核时收到ITMS-90683报错,错误信息如下:
ITMS-90683: Missing Purpose String in Info.plist - Your app‘s code references one or more APIs that access sensitive user data. The app‘s Info.plist file should contain a NSMicrophoneUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required.
在Info.plist中手动添加NSMicrophoneUsageDescription配置后重新提交,仍然触发相同报错,可按照以下方向逐一排查解决:
排查步骤与解决方案
校验Info.plist配置的有效性与写入位置
配置不生效最常见的原因是写错了配置文件路径或者xml格式错误:- 必须修改
ios/Runner/Info.plist文件,不要修改Pods目录、测试Target下的同名Info.plist文件 - 配置必须写在根节点
<dict>标签内部,key的拼写、大小写完全匹配NSMicrophoneUsageDescription,标准配置写法如下:
<key>NSMicrophoneUsageDescription</key> <string>应用不会主动访问麦克风,相关API为第三方SDK基础依赖,不会在未获得用户授权的情况下采集麦克风数据</string>- 添加完成后可打开Xcode,选中Runner Target的Info标签页,确认列表中存在「Privacy - Microphone Usage Description」项且文案与填写内容一致,注意:key值的大小写必须与官方要求完全一致,任何拼写、标签闭合错误都会导致配置不被识别。
- 必须修改
全链路清理构建缓存,避免旧包残留
Flutter与Xcode的构建缓存会导致新添加的配置没有被打包进最终的ipa文件,按顺序执行以下操作清理缓存:- 在项目根目录执行
flutter clean,完成后执行flutter pub get重新拉取依赖 - 打开Xcode,顶部菜单栏选择Product -> Clean Build Folder,也可手动删除
~/Library/Developer/Xcode/DerivedData目录下对应当前项目的缓存文件夹 - 重新执行
flutter build ipa --release生成全新的正式安装包,禁止复用之前导出的旧ipa文件上传。
- 在项目根目录执行
校验构建版本号,避免App Store Connect缓存旧检测结果
每次上传新包时,需要同步递增pubspec.yaml中的版本号、Xcode中Runner Target对应的Build版本号,和之前触发报错的构建版本做区分。如果版本号完全一致,App Store Connect可能直接复用旧包的检测结果,不会重新扫描新上传的包体。定位触发麦克风检测的依赖来源,按需裁剪冗余能力
未主动使用麦克风却触发权限检测,本质是项目引入的第三方Flutter插件、原生SDK代码中引用了AVFoundation的麦克风相关接口,被苹果的静态扫描规则命中:- 在项目根目录执行以下命令,可定位具体是哪个依赖引用了麦克风相关API:
grep -r "AVAudioSession" ios/Pods/ grep -r "requestRecordPermission" ios/Pods/ - 如果定位到的插件所带的麦克风能力完全用不到,可升级到支持权限裁剪的插件版本,或在Podfile中添加对应编译宏关闭麦克风相关模块的编译,减少不必要的权限声明。
- 若暂时无法移除SDK对麦克风API的引用,只要Info.plist中的权限声明描述清晰准确,即使说明应用不会实际使用麦克风能力,也可以通过审核,无需额外开发麦克风相关功能。
- 在项目根目录执行以下命令,可定位具体是哪个依赖引用了麦克风相关API:
内容的提问来源于stack exchange,提问作者Vepa Sabyrow
相关产品推荐
相关产品推荐

