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

Ionic App在Xcode报错NSCameraUsageDescription未设置,iOS扫码器无法打开

问题原因与解决方案

嘿,这个问题我之前帮好几个Ionic开发者排查过,其实根源就是iOS严格的隐私权限机制在起作用,咱们一步步拆解:

为什么会出现这个问题?

从iOS 10开始,苹果强制要求所有访问敏感隐私模块(比如相机、相册、麦克风)的App,必须在Info.plist文件中添加对应的权限用途描述。NSCameraUsageDescription就是专门对应相机权限的描述键——如果没配置它:

  • Xcode会直接抛出你看到的报错,提醒你缺失必要的权限声明;
  • 当你的App尝试调用扫码器(本质是调用相机)时,系统会直接拒绝这个请求,导致扫码器完全打不开,甚至可能让App闪退。

简单说:没给相机权限的“合法理由”,iOS就不让你用相机,扫码器自然歇菜。

怎么解决?

有两种常用的解决方式,根据你的Ionic项目类型选择就行:

方式1:直接在Xcode中编辑Info.plist

  1. 打开你的Ionic项目对应的Xcode工程;
  2. 找到项目根目录下的Info.plist文件,右键选择「Open As」→「Property List」(可视化编辑);
  3. 点击列表顶部的「+」号,添加一个新的Key:
    • Key栏输入 Privacy - Camera Usage Description(Xcode会自动匹配对应的系统键NSCameraUsageDescription);
    • Value栏填写清晰的用途描述,比如用于扫描条形码以快速识别信息(注意:描述要真实,苹果审核时会检查);
    • 如果你习惯编辑源码,也可以右键选择「Open As」→「Source Code」,插入这段代码:
      <key>NSCameraUsageDescription</key>
      <string>用于扫描条形码以快速识别信息</string>
      

方式2:在Ionic的配置文件中统一配置(推荐)

如果你用Cordova或Capacitor,可以直接在config.xml中配置,这样每次构建iOS项目时会自动同步到Info.plist,不用每次手动改Xcode:

  1. 打开项目根目录的config.xml;
  2. 在<platform name="ios">标签内添加这段代码:
    <config-file parent="NSCameraUsageDescription" target="*-Info.plist">
        <string>用于扫描条形码以快速识别信息</string>
    </config-file>
    
  3. 执行同步命令:
    • 用Cordova的话:ionic cordova build ios
    • 用Capacitor的话:ionic cap sync ios

额外注意事项

如果你的设备上已经安装过旧版本的App,一定要先卸载旧版本再重新安装——因为iOS的权限提示只会在App第一次安装时弹出,旧版本的权限缓存会导致新的权限声明不生效。

内容的提问来源于stack exchange,提问作者Tanzeel U Rehman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:44:42