web-dev-qa-db-ja.com

反応ネイティブエキスポプロジェクトでRNPermissions nullを返すreact-native-permissions

私はExpoを使い始めたばかりですが、ここでは何が問題なのかわかりません。Androidで十分で、 react-native-qrcode-scannerを使用しようとしています。 新しく作成された空白の反応ネイティブエキスポプロジェクトです。プロジェクト内で何も変更せず、新しいプロジェクトを作成しただけで、RNPermissions is null。私のAndroidアプリに関する詳細を渡すように言っていると思います。これを開始する方法を誰かが手伝ってくれますか?私は react-native-permissions を必要に応じて使用していますQRコードスキャナーのコード、依存関係のすべてをアンインストールして、これらだけを残しました:

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

このパッケージ react-native-qrcode-scanner は、reactネイティブカメラの使用を提案しており、それに伴いリンクが必要です。 expoを使用している場合、expoはライブラリのリンクを許可しないため、リンクできません。したがって、同じライブラリを使用する場合は、最初にexpoから取り出してネイティブに反応させてから、リンクライブラリにアクセスできないのでそれを試してください。

Expoに実装したい場合は、expoに独自のバーコードスキャナーがあります。以下を確認してください。 expoバーコードスキャナー 。美しいドキュメントがあります。それを読んでください。

それが役に立てば幸い。疑いなくお気軽に

3
Gaurav Roy

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. ライブラリがリンクされていることを確認してください
1
TommyLeong