从ExpoGo转至开发构建后,如何启用二维码扫描器?
Expo开发构建二维码扫描问题解决方案
问题背景
从Expo Go切换到Expo开发构建后,Android设备扫描Metro bundler的二维码时,会打开Google搜索并跳转至应用链接,而非已安装的开发构建应用。Expo Go内置了Expo专属二维码扫描器,可识别并直接关联到应用,但开发构建默认仅提供手动输入Metro主机IP和端口的字段,无扫描功能。


问题原因
Expo Go是官方预构建的通用应用,内置了exp://协议的解析逻辑,扫描对应二维码时可直接唤起自身;而开发构建是定制化应用,默认未集成该扫描解析功能,也未配置exp协议的URL关联,导致系统无法识别应唤起你的应用。
启用扫描功能的两种方法
方法一:集成expo-barcode-scanner实现内置扫描
- 安装依赖:
npx expo install expo-barcode-scanner - 在开发构建的连接页面添加扫描组件,识别
exp://开头的二维码内容,通过Linking.openURL()打开链接即可连接Metro。 - 配置相机权限(编辑
app.json):{ "expo": { "ios": { "infoPlist": { "NSCameraUsageDescription": "需要相机权限扫描二维码" } }, "android": { "permissions": ["android.permission.CAMERA"] } } }
方法二:配置URL Scheme关联exp协议
在app.json中添加URL Scheme配置,让系统扫描exp://二维码时唤起你的开发构建应用:
{ "expo": { "scheme": "exp", "android": { "intentFilters": [ { "action": "android.intent.action.VIEW", "data": { "scheme": "exp" }, "category": ["android.intent.category.DEFAULT", "android.intent.category.BROWSABLE"] } ] } } }
配置完成后重新构建开发包,扫描二维码时系统会提示选择应用,选择你的开发构建应用即可直接连接。
补充说明
开发构建的设计核心是定制化,默认不会预装Expo Go的所有通用功能,你可根据需求自行集成所需能力。
内容的提问来源于stack exchange,提问作者toppsdown
相关产品推荐
相关产品推荐

