← Todos os projetos open sourceOPEN SOURCE

react-native-zebra-bluetooth-printer

Ver no GitHub ↗

react-native-zebra-bluetooth-printer

Getting started

$ npm install react-native-zebra-bluetooth-printer --save

Mostly automatic installation

$ react-native link react-native-zebra-bluetooth-printer

Note : For react-native > 0.59, don't use above command it uses auto-linking.

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-zebra-bluetooth-printer and add RNZebraBluetoothPrinter.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNZebraBluetoothPrinter.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainActivity.java
  • Add import com.reactlibrary.RNZebraBluetoothPrinterPackage; to the imports at the top of the file
  • Add new RNZebraBluetoothPrinterPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-zebra-bluetooth-printer'
    project(':react-native-zebra-bluetooth-printer').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-zebra-bluetooth-printer/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-zebra-bluetooth-printer')
    

Update Android Manifest

 <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Usage

RNZebraBluetoothPrinter

RNZebraBluetoothPrinter is a module for Bluetooth management and supports print functionality for zebra bluetooth printers ( only ble devices ). It includes features like bluetooth enable/disable, pair/unpair a BLE/Bluetooth device, scan for nearby bluetooth devices and printing using bluetooth.

import RNZebraBluetoothPrinter from "react-native-zebra-bluetooth-printer";
  1. isEnabledBluetooth == > async function, check the status of bluetooth service in the bluetooth client(mobile phone) .Returns true if already enabled, false if not enabled.
RNZebraBluetoothPrinter.isEnabledBluetooth().then((res) => {
  //do something with res
});
  1. enableBluetooth == > async function, Android: requests for bluetooth on/off permission on the android device. iOS: resolves to nil.
RNZebraBluetoothPrinter.enableBluetooth().then((res) => {
  //do something with res
});
  1. disableBluetooth == > async function, Android: disables bluetooth if bluetooth is switched on. iOS: simply resolves by nil.
RNZebraBluetoothPrinter.disableBluetooth().then((res) => {
  //do something with res
});
  1. scanDevices == > async function, scans for available nearby bluetooth devices for a specific period of time.
RNZebraBluetoothPrinter.scanDevices().then((deviceArray) => {
  //do something with res
});
  1. pairedDevices == > async function, Android: returns already paired devices. iOS: resolves to nil.
RNZebraBluetoothPrinter.pairedDevices().then((deviceArray) => {
  //do something with deviceArray
});
  1. connectDevice == > async function, for both android and iOS
RNZebraBluetoothPrinter.connectDevice(deviceAddress).then((res) => {
  //do something with res
  //for android, device address is mac address
  //for iOS, device address is a long string like 0C347F9F-2881-9CCB-43B0-205976944626
});
  1. unpairDevice == > async function, Android: unpair/disconnect a paired device from paired device list.
RNZebraBluetoothPrinter.unpairDevice(deviceAddress).then((res) => {
  //do something with res
});
iOS: function resolves to nil.
  1. print == > async function, prints specific zpl string from a zebra printer for both android and iOS. CPCL strings can also be printed using this for Android.
const zpl =
  "^XA^FX Top section with company logo, name and address.^CF0,60^FO50,50^GB100,100,100^FS^ FO75,75 ^ FR ^ GB100, 100, 100 ^ FS^ FO88, 88 ^ GB50, 50, 50 ^ FS ^XZ";

Android

RNZebraBluetoothPrinter.print(deviceAddress, zpl).then((res) => {
  //do something with res
});

iOS

RNZebraBluetoothPrinter.print(zpl).then((res) => {
  //do something with res
});
  1. isConnected == > async function, returns a boolean value to indicate whether or not there is an open connection. For example :

Android

const isConnected = await RNZebraBluetoothPrinter.isConnected();
  1. getPrinterControlLanguage == > async function, returns a String containing the connected printer language. For example :

Android

const tags = {
  ZPL: "...",
  CPCL: "...",
  PDF: "...",
};

const printerLanguage =
  await RNZebraBluetoothPrinter.getPrinterControlLanguage();

await RNZebraBluetoothPrinter.print(tags[printerLanguage]);

Fast Print - [Android only]

You can control the start and end of the connection for faster printing. For this to work, you need to open the connection at the beginning of your code, and close it only at the end of the whole process. An example would be:

  • I open the connection when starting the screen, print all the labels that are requested, and finally close the connection.
  • The fastPrint function will print to the connected printer.
...

useEffect(() => {
  const connectPrinter = async (device) => {
    await RNZebraBluetoothPrinter.connect(device.address);
  }

  if(device){
    connectPrinter(device);
  }

  return () => RNZebraBluetoothPrinter.disconnect();
}, [device])

...

const printTags = async (quantity) => {
  for(let i=0; i<quantity; i++){
    await RNZebraBluetoothPrinter.fastPrint("...");
  }
}

...
VAMOS TIRAR O PRÓXIMO PASSO DO PAPEL

Seu projeto pode ir mais longe.

Me conte onde você está. Vamos entender o que vem depois.

Conversar sobre meu projeto