You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文件,按顺序执行以下操作清理缓存:

    1. 在项目根目录执行flutter clean,完成后执行flutter pub get重新拉取依赖
    2. 打开Xcode,顶部菜单栏选择Product -> Clean Build Folder,也可手动删除~/Library/Developer/Xcode/DerivedData目录下对应当前项目的缓存文件夹
    3. 重新执行flutter build ipa --release生成全新的正式安装包,禁止复用之前导出的旧ipa文件上传。
  • 校验构建版本号,避免App Store Connect缓存旧检测结果
    每次上传新包时,需要同步递增pubspec.yaml中的版本号、Xcode中Runner Target对应的Build版本号,和之前触发报错的构建版本做区分。如果版本号完全一致,App Store Connect可能直接复用旧包的检测结果,不会重新扫描新上传的包体。

  • 定位触发麦克风检测的依赖来源,按需裁剪冗余能力
    未主动使用麦克风却触发权限检测,本质是项目引入的第三方Flutter插件、原生SDK代码中引用了AVFoundation的麦克风相关接口,被苹果的静态扫描规则命中:

    1. 在项目根目录执行以下命令,可定位具体是哪个依赖引用了麦克风相关API:
      grep -r "AVAudioSession" ios/Pods/
      grep -r "requestRecordPermission" ios/Pods/
      
    2. 如果定位到的插件所带的麦克风能力完全用不到,可升级到支持权限裁剪的插件版本,或在Podfile中添加对应编译宏关闭麦克风相关模块的编译,减少不必要的权限声明。
    3. 若暂时无法移除SDK对麦克风API的引用,只要Info.plist中的权限声明描述清晰准确,即使说明应用不会实际使用麦克风能力,也可以通过审核,无需额外开发麦克风相关功能。

内容的提问来源于stack exchange,提问作者Vepa Sabyrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:27:20