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

Expo-Camera组件onBarcodeScanned在iOS设备上无法触发求助

解决Expo Camera iOS无法扫描条形码问题

针对你遇到的iOS上CameraView扫描功能失效、onBarcodeScanned完全不触发的问题,可以按以下步骤排查解决:

  • 检查iOS权限配置
    iOS强制要求声明相机使用权限描述,确保在app.json的ios.infoPlist中添加:

    "ios": {
      "infoPlist": {
        "NSCameraUsageDescription": "需要访问相机扫描条形码"
      }
    }
    

    缺少这个配置时,相机虽能打开,但扫描功能会被系统限制。

  • 调整条形码类型配置
    iOS对条形码类型的枚举值格式更敏感,试试改用大写格式,或补充兼容类型(部分EAN13条码可能被识别为UPC_A):

    <CameraView
      onBarcodeScanned={scanned ? undefined : handleBarCodeScanned}
      barcodeScannerSettings={{
        barCodeTypes: ["EAN13", "UPC_A", "EAN8"],
      }}
      style={StyleSheet.absoluteFillObject}
    />
    
  • 简化测试逻辑
    先移除scanned状态的条件判断,直接绑定事件,排除状态逻辑干扰:

    <CameraView
      onBarcodeScanned={handleBarCodeScanned}
      barcodeScannerSettings={{
        barCodeTypes: ["EAN13"],
      }}
      style={StyleSheet.absoluteFillObject}
    />
    

    若能正常触发事件,再回头调整scanned的状态逻辑。

  • 更新expo-camera版本
    旧版本可能存在iOS兼容bug,执行命令升级到对应Expo SDK的最新稳定版:

    expo install expo-camera
    
  • 排除其他代码干扰
    新建极简测试页面,只保留基础扫描逻辑,验证是否是原有代码的其他部分导致问题:

    import { CameraView, BarcodeScanningResult } from 'expo-camera';
    import { StyleSheet, View, Text } from 'react-native';
    import { useState } from 'react';
    
    export default function TestScanScreen() {
      const [scannedData, setScannedData] = useState('');
    
      const handleBarCodeScanned = ({ data }: BarcodeScanningResult) => {
        setScannedData(data);
        alert(`扫描到:${data}`);
      };
    
      return (
        <View style={StyleSheet.absoluteFillObject}>
          <CameraView
            onBarcodeScanned={handleBarCodeScanned}
            barcodeScannerSettings={{ barCodeTypes: ["EAN13"] }}
            style={StyleSheet.absoluteFillObject}
          />
          <Text style={{ position: 'bottom', color: 'white', padding: 20 }}>{scannedData}</Text>
        </View>
      );
    }
    

内容的提问来源于stack exchange,提问作者ahmet adsay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:43:19