General React Native Example
Requirements: #
Before starting, ensure that your development environment is set up for React Native:
- Install Node.js and npm.
 - Install React Native CLI (optional but recommended for native build).
 - Set up Android Studio and Xcode (for iOS development).
 
Create a New React Native Project #
Open your terminal and create a new React Native project:
                npx react-native init BarkoderApp
cd BarkoderApp
            
        Add the barkoder-react-native Package #
To add the barkoder-react-native package to your project, you have two options. You can either use the barkoder-react-native package from npm or from a local path.
To use the package from npm run this command:
                npm install barkoder-react-native
            
        if you are using YARN run this command:
                yarn add barkoder-react-native
            
        If you prefer to use a local package, download the package from the barKoder Developer Portal, unzip the archive and add the package with setting the package path
                npm install <path to barkoder-react-native package>
            
        if you are using npm run this command:
                npm install <path to barkoder-react-native package>
            
        if you are using YARN run this command:
                yarn add <path to barkoder-react-native package>
            
        If you are having trouble with iOS, try to reinstall the dependencies by running pod install command inside ios folder:
                cd ios
pod install
            
        Add package #
Install the barkoder-react-native package:
                npm install barkoder-react-native
            
        Import the barkoder-react-native package in your project with:
                import { Barkoder, BarkoderView } from 'barkoder-react-native';
            
        Implement the Barcode Scanner Component #
- Create a New Component: Create a file named
 - BarcodeScanner.js: Implement the barcode scanner functionality:
 
                import React, { useState, useRef } from 'react';
import { SafeAreaView, View, Text, Button, StyleSheet, Image, Alert } from 'react-native';
import { Barkoder, BarkoderView } from 'barkoder-react-native';
const BarcodeScanner = () => {
  const [barkoder, setBarkoder] = useState(null);
  const [scannedResult, setScannedResult] = useState(null);
  const [isScanning, setIsScanning] = useState(false);
  const onBarkoderViewCreated = async (_barkoder) => {
    try {
      await _barkoder.setBarcodeTypeEnabled(Barkoder.BarcodeType.qr, true);
      await _barkoder.setRegionOfInterestVisible(true);
      await _barkoder.setZoomFactor(2.0);
      setBarkoder(_barkoder);
    } catch (error) {
      console.error('Error initializing Barkoder:', error);
      Alert.alert('Error', 'Failed to initialize Barkoder');
    }
  };
  const startScanning = () => {
    if (!barkoder) return;
    setIsScanning(true);
    barkoder.startScanning((result) => {
      setScannedResult({
        textualData: result.textualData,
        type: result.barcodeTypeName,
        thumbnailImage: "data:image/jpeg;base64," + result.resultThumbnailAsBase64,
      });
      setIsScanning(false);
    }, (error) => {
      console.error('Scanning error:', error);
      Alert.alert('Error', 'Scanning failed');
      setIsScanning(false);
    });
  };
  const stopScanning = () => {
    if (barkoder) {
      barkoder.stopScanning();
      setIsScanning(false);
    }
  };
  return (
    <SafeAreaView style={styles.container}>
      <BarkoderView
        style={styles.barkoderView}
        licenseKey="ADD_YOUR_LICENSE_KEY_HERE"
        onBarkoderViewCreated={onBarkoderViewCreated}
      />
      <View style={styles.btnContainer}>
        <Button title="Start Scanning" onPress={startScanning} disabled={isScanning} />
        <Button title="Stop Scanning" onPress={stopScanning} disabled={!isScanning} />
      </View>
      {scannedResult && (
        <View style={styles.resultContainer}>
          <Text>Result: {scannedResult.textualData}</Text>
          <Text>Type: {scannedResult.type}</Text>
          <Image
            style={styles.resultImage}
            source={{ uri: scannedResult.thumbnailImage }}
          />
        </View>
      )}
    </SafeAreaView>
  );
};
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  barkoderView: {
    width: '100%',
    height: 400,
  },
  btnContainer: {
    marginTop: 20,
  },
  resultContainer: {
    marginTop: 20,
    alignItems: 'center',
  },
  resultImage: {
    width: 200,
    height: 200,
    marginTop: 10,
    borderRadius: 5,
  },
});
export default BarcodeScanner;
            
        Use the BarcodeScanner Component in Your App #
Replace the content in App.js to use the BarcodeScanner component:
                import React from 'react';
import BarcodeScanner from './src/BarcodeScanner';
const App = () => {
  return <BarcodeScanner />;
};
export default App;
            
        Run the React Native Application #
For Android:
                npx react-native run-android
            
        For iOS:
                npx react-native run-ios