Socket
Socket
Sign inDemoInstall

react-native-infy-qrcode-scanner

Package Overview
Dependencies
3
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    react-native-infy-qrcode-scanner

A QR code scanner for React Native.


Version published
Weekly downloads
1.9K
increased by42.53%
Maintainers
1
Install size
1.61 MB
Created
Weekly downloads
 

Readme

Source

react-native-infy-qrcode-scanner

npm version Backers on Open Collective Sponsors on Open Collective

QR code scanner component is used for React Native applications, built on top of react-native-infy-camera by Satish Attada

This prototype will used as barcode scanner and was built for QR code scanning

Getting started

Requirements

Android 8

With Android 8 and higher you should add "Vibration" permission on your AndroidManifest.xml of your project. This should be found in your android/app/src/main/AndroidManifest.xml Add the following:

<uses-permission android:name="android.permission.VIBRATE"/>

You should add "missingDimensionStrategy" defaultConfig to the 'react-native-infy-camera' by placing it to 'general', this should be found in android/app/build.gradle of your project, please add the following:

android {
  ...
  defaultConfig {
    ...
    missingDimensionStrategy 'react-native-infy-camera', 'general' 
  }
}
react-native-infy-camera

There is a dependency with react-native-infy-camera to this package. Install react-native-infy-camera

  1. npm install react-native-infy-camera --save
  2. react-native link react-native-infy-camera

To install and start react-native-infy-qrcode-scanner:

  1. npm i react-native-infy-qrcode-scanner
  2. react-native link react-native-infy-qrcode-scanner

Please note: If you are using react-native version 0.60 or above, then please ignore react-native link.

react-native-permissions

You should also need to install react-native-permissions to handle camera related permissions

  1. npm install react-native-permissions --save
  2. react-native link react-native-permissions

Please note: If you are using react-native version 0.60 or above, then please ignore react-native link.

Please note: You may also need to reset your simulator/emulator data after adding the permissions Device -> Erase All Content and Settings... .

Usage

To use react-native-infy-qrcode-scanner, import the react-native-infy-qrcode-scanner module and use the <QRCodeScanner /> tag. Here is an example of basic usage:

'use strict';

import React, { Component } from 'react';

import {
  AppRegistry,
  StyleSheet,
  Text,
  TouchableOpacity,
  Linking
} from 'react-native';

import QRCodeScanner from 'react-native-infy-qrcode-scanner';
import { RNCamera } from 'react-native-infy-camera';

class ScanQRComponent extends Component {
  onSuccess = e => {
    Linking.openURL(e.data).catch(err =>
      console.error('Error', err)
    );
  };

  render() {
    return (
      <QRCodeScanner
        onRead={this.onSuccess}
        flashMode={RNCamera.Constants.FlashMode.torch}
        topContent={
          <Text style={styles.centerText}>
            Go to{' '}
            <Text style={styles.textBold}>https://www.qr-code-generator.com/</Text> 
            and add some TEXT QR code generator on
            your computer and scan the QR code.
          </Text>
        }
        bottomContent={
          <TouchableOpacity style={styles.buttonTouchable}>
            <Text style={styles.buttonText}>Confirm</Text>
          </TouchableOpacity>
        }
      />
    );
  }
}

const styles = StyleSheet.create({
  centerText: {
    flex: 1,
    fontSize: 16,
    padding: 20,
    color: '#eee'
  },
  textBold: {
    fontWeight: '600',
    color: '#000'
  },
  buttonText: {
    fontSize: 21,
    color: '#009b00'
  },
  buttonTouchable: {
    padding: 10
  }
});

AppRegistry.registerComponent('default', () => ScanQRComponent);

Methods

reactivate()

To enable the scan again, use this method <QRCodeScanner ref={(node) => { this.scanner = node }}> and call this.scanner.reactivate()

Props

onRead (required)

propType: func.isRequired default: (e) => (console.log('QR code scanned!', e)) After scanning the QR code, onRead method is used to read the QR code and this method is required.

fadeIn

propType: bool default: true

Camera view fades after scanning, it is like animation fading.

reactivate

propType: bool default: false

After scanning the QRCodeScanner, You cannot scan another, if set to false if set to true it will reactivate the scanning

reactivateTimeout

propType: number default: 0

reactivate with some time (in milliseconds). reactivateTimeout is used, by default it is 0

cameraTimeout

propType: number default: 0

This is used to take some time ( in milliseconds) before the QRCodeScanner displayed.

cameraTimeoutView

propType: element

Pass component to show when the camera is inactive in cameraTimeout (another prop) milliseconds. If the cameraTimeout is 0 or not specified, this prop will be never used.

flashMode

propType: RNCamera.Constants.FlashMode default: RNCamera.Constants.FlashMode.auto

Flash modes

  • RNCamera.Constants.FlashMode.off turns it to off.
  • RNCamera.Constants.FlashMode.on means camera flash will be used for all photos.
  • RNCamera.Constants.FlashMode.auto used to flash automatically based on lightening conditions.
  • RNCamera.Constants.FlashMode.torch on camera open, light will be opened for scanning.
topContent

propType: oneOfType([ PropTypes.element, PropTypes.string, ])

This us used to render any additional content at the top of the camera view.

bottomContent

propType: oneOfType([ PropTypes.element, PropTypes.string, ])

This us used to render any additional content at the bottom of the camera view.

containerStyle

propType: any

This us used pass styling for the outermost container. Useful for adding margin/padding to account for navigation bar.

cameraStyle

propType: any

This us used to pass or overwrite styling for the camera window rendered.

cameraContainerStyle

propType: any

This us used to pass or overwrite styling for the camera container (view) window rendered.

topViewStyle

propType: any

This us used to pass or overwrite styling for the <View> that contains the topContent prop.

bottomViewStyle

propType: any

This us used to pass or overwrite styling for the <View> that contains the bottomContent prop.

showMarker

propType: boolean default: false

This us used to show marker on the camera scanning window.

customMarker

propType: element

This us used for custom marker.

markerStyle

propType: any

This us used to add custom styling to the default marker.

notAuthorizedView

propType: element

Pass a RN element/component to use it when no permissions given to the camera (iOS only).

cameraType

propType: oneOf(['front', 'back']) default: 'back'

This us used to control which camera to use for scanning QR codes, defaults to rear camera.

checkAndroid6Permissions

propType: bool default: false

This us used to enable permission checking on Android 6

permissionDialogTitle

propType: string default: 'Info'

This us used to set permission dialog title (Android only).

permissionDialogMessage

propType: string default: 'Need camera permission'

This us used to set permission dialog message (Android only).

buttonPositive

propType: string default: 'OK'

This us used to set permission dialog button text (Android only).

cameraProps

propType: object

Properties to be passed to the Camera component.

License

See LICENSE.md

Keywords

FAQs

Last updated on 09 Nov 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc