web-dev-qa-db-fra.com

react-native-permissions renvoyant RNPermissions null dans le projet expo react-native

Je suis nouveau sur Expo et je ne peux pas dire quel est le problème ici, je suis assez bon avec Android et j'essaie d'utiliser le react-native-qrcode-scanner dans un projet expo vierge de réaction native nouvellement créé. Je n'ai rien touché à l'intérieur du projet, je viens de créer un tout nouveau projet et j'obtiens une erreur indiquant RNPermissions is null. Je pense que c'est révélateur de transmettre des détails sur mon Android App, quelqu'un peut-il m'aider à démarrer? J'utilise react-native-permissions au besoin par le code de QR Code Scanner, j'ai tout désinstallé dans les dépendances et je n'ai laissé que celles-ci:

"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"
}

il y a donc juste un message de bienvenue basique pour réagir dans App.js comme ceci:

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;

CECI est le fichier 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
    }
  }
}
2

Ce paquet react-native-qrcode-scanner suggère d'utiliser la caméra native react et avec cela nécessite une liaison. si vous utilisez expo, vous ne pourrez pas créer de lien car expo n'autorise pas la liaison de bibliothèques. Donc, si vous prévoyez d'utiliser la même bibliothèque, éjectez-vous d'abord de l'expo pour réagir en natif, puis essayez avec cela car vous ne pouvez pas accéder aux bibliothèques de liaison.

Si vous souhaitez l'implémenter dans expo, alors expo a son propre lecteur de codes-barres, consultez-le ci-dessous. scanner de codes-barres expo . il a une belle doc. lisez-le.

J'espère que ça aide. n'hésitez pas à avoir des doutes

3
Gaurav Roy

D'après ce que vous avez partagé sur App.js, vous n'avez utilisé aucune des fonctions de react-native-permissions

Vous devrez obtenir l'autorisation du propriétaire de l'appareil pour utiliser la caméra. Quelques éléments que vous avez probablement manquants et vous souhaitez vérifier les éléments suivants:

Pour Android

  1. AndroidManifest.xml - si vous avez l'autorisation requise demandée. Vous pouvez vous y référer .
    <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. Assurez-vous que la bibliothèque est liée

Pour iOS

  1. Vous devez ajouter ce qui suit à votre Info.plist
    <key>NSCameraUsageDescription</key>
    <string>Our app need your permission to use your camera phone</string>
  1. Assurez-vous que la bibliothèque est liée
1
TommyLeong