8

我是 Expo 的新手,我不知道这里有什么问题,我对 Android 已经足够好了,我正在尝试在一个新创建的空白 react-native expo 项目中使用react-native-qrcode-scanner 。我没有触及项目内部的任何内容,只是创建了一个全新的项目,我收到一个错误消息RNPermissions is null。我认为它告诉传递有关我的 android 应用程序的详细信息,有人可以帮助我如何开始吗?我正在使用QR Code Scanner 的代码所需的react-native-permissions ,我卸载了依赖项中的所有内容,只留下了这些:

"dependencies": {
    "expo": "~36.0.0",
    "react": "~16.9.0",
    "react-dom": "~16.9.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz",
    "react-native-permissions": "^2.0.2",
    "react-native-web": "~0.11.7"
}

所以只有基本的欢迎在 App.js 中响应消息,如下所示:

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { check, PERMISSIONS, RESULTS } from 'react-native-permissions';

class App extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    return (
      <View style={styles.container}>
        <Text>Open up App.js to start working on your app!</Text>
      </View>  
    );
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',     
  },
});
export default App;

这是 app.json 文件:

{
  "expo": {
    "name": "App1",
    "slug": "App1",
    "privacy": "public",
    "sdkVersion": "36.0.0",
    "platforms": [
      "ios",
      "android",
      "web"
    ],
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {  
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "supportsTablet": true
    }
  }
}
4

2 回答 2

5

这个包react-native-qrcode-scanner建议使用 react-native 相机,并且需要链接。如果您使用 expo ,您将无法链接,因为 expo 不允许链接库。因此,如果您打算使用相同的库,那么首先从 expo 中弹出以响应本机,然后尝试使用它,因为您无法访问链接库。

如果你想在 expo 中实现,那么 expo 有自己的条码扫描器,请在下面查看。世博条形码扫描仪。它有一个漂亮的文档。读它。

希望能帮助到你。随时怀疑

于 2019-12-12T08:32:40.717 回答
1

根据您在 App.js 上分享的内容,您没有使用任何来自react-native-permissions

您需要获得设备所有者的许可才能使用相机。您可能遗漏了一些事情,并且您想检查以下内容:

安卓版

  1. AndroidManifest.xml - 您是否拥有请求的所需权限。你可以参考这个
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.CAMERA" />
  1. 确保您已链接库

对于 iOS

  1. 您需要将以下内容附加到您的 Info.plist
    <key>NSCameraUsageDescription</key>
    <string>Our app need your permission to use your camera phone</string>
  1. 确保您已链接库
于 2019-12-12T08:13:36.917 回答