我正在寻找一种从设备的硬件条形码扫描仪获取输入数据的方法。我发现了一个据说可以完成这项工作的库,它是 React Native KeyEvent。
但是,说明主要引导我编辑 android 文件夹内的 gradle 文件。由于我使用的是 Expo,所以我没有 android 文件夹来遵循文档。
如果不弹出到ExpoKit,还有其他方法可以集成它们吗?
我设法让插件工作......但这是一个挑战。以下是步骤(由于某种原因,我不得不使用“yarn”。“npm”不起作用):
yarn add react-native-keyevent
yarn add --dev react-native-keyevent-expo-config-plugin
将以下行添加到 app.json 文件的“expo”部分:
"plugins": ["react-native-keyevent-expo-config-plugin"],
编辑您的组件以导入包:
import KeyEvent from "react-native-keyevent";
设置监听器:
KeyEvent.onKeyDownListener((keyEvent) => {....}
组件卸载时不要忘记删除侦听器:
KeyEvent.removeKeyDownListener();
现在这是棘手的部分 - 它不适用于 Expo Go。 您仍然可以在 Expo Go 中运行您的应用程序,但您的应用程序不会接收外部键盘上的击键。 因此,要测试它,您需要实际构建应用程序,然后将其安装在设备上。
另外,我只设法让它在 Android 上运行。 我不需要它在 iOS 上工作,所以没有花任何时间在上面。 因此,我不确定它是否可以在 iOS 上运行。
您需要为其编写一个博览会插件。幸运的是,似乎有人已经这么做了。参见:
接受的答案不再适用于最新的 Expo 50 和 51
答案中提到的插件: react-native-keyevent-expo-config-plugin
此插件尚未更新以支持 Expo SDK 50 和 51 然而它有一个分支可以工作 https://github.com/bamlab/react-native-keyevent-expo-config-plugin
您也可以使用 npm as 添加它
npm i react-native-keyevent
然后是插件
npm install --save-dev @bam.tech/react-native-keyevent
-expo-config-plugin
然后在 App.json 中
"plugins": [
"<Your other plugins>..",
"@bam.tech/react-native-keyevent-expo-config-plugin"
],