Package Exports
- @scandit/web-barcode-link
Readme
@scandit/web-barcode-link
The Barcode Link SDK allows you to scan barcodes on your smartphone and automatically send them to a desktop device.
Table of contents
Installation
You can install the package via NPM:
$ npm i @scandit/web-barcode-linkUsage
First, import the BarcodeLink class:
import { BarcodeLink } from "@scandit/web-barcode-link";Then create an instance using your Scandit license key:
import { BarcodeLink } from "@scandit/web-barcode-link";
const barcodeLink = BarcodeLink.forLicenseKey("-- ENTER YOUR SCANDIT LICENSE KEY HERE --");From there you have various methods that you can use to configure your barcode link instance.
For example:
import { BarcodeLink, BarcodeLinkMode } from "@scandit/web-barcode-link";
const barcodeLink = BarcodeLink.forLicenseKey('-- ENTER YOUR SCANDIT LICENSE KEY HERE --')
 .setBarcodeLinkMode(BarcodeLinkMode.SingleScanning)
 .addListener({
        onCapture(barcodes) {
            console.log('Scanned:' barcodes)
        }
 })Finally you just initialize the barcode link instance with a specific flow.
For example:
import { BarcodeLink, BarcodeLinkMode, BarcodeLinkUiFlow } from "@scandit/web-barcode-link";
const barcodeLink = BarcodeLink.forLicenseKey('-- ENTER YOUR SCANDIT LICENSE KEY HERE --')
 .setBarcodeLinkMode(BarcodeLinkMode.SingleScanning)
 .addListener({
        onCapture(barcodes) {
            console.log('Scanned:' barcodes)
        }
 })
await barcodeLink.initialize(new BarcodeLinkUiFlow())API
BarcodeLink
The main class for configuring and initializing your Barcode Link instance.
static forLicenseKey(licenseKey: string): BarcodeLink
const barcodeLink = BarcodeLink.forLicenseKey("-- ENTER YOUR SCANDIT LICENSE KEY HERE --");Create a new BarcodeLink instance with the given Scandit license key.
setBarcodeLinkMode(barcodeLinkMode: BarcodeLinkMode): BarcodeLink
barcodeLink.setBarcodeLinkMode(BarcodeLinkMode.ContinuousListBuilding);Configure your BarcodeLink instance to use the given BarcodeLinkMode.
Available values:
| Value | Description | 
|---|---|
| SingleScanning | Scan one barcode and close the session | 
| ContinuousScanning | Send barcodes in realtime and manually close the session | 
| SingleListBuilding | Send a list of barcodes and close the session | 
| ContinuousListBuilding | Send multiple lists of barcodes and manually close the session | 
Defaults to BarcodeLinkMode.SingleScanning.
setListBehavior(listBehavior: BarcodeLinkListBehavior): BarcodeLink
barcodeLink.setListBehavior(BarcodeLinkListBehavior.Count);Configure your BarcodeLink instance to use the given BarcodeLinkListBehavior.
Available values:
| Value | Description | 
|---|---|
| Unique | Each barcode appears only once per list | 
| Count | Keep track of how many times a barcode was scanned | 
Defaults to BarcodeLinkListBehavior.Unique.
NOTE: The property is taken into consideration only for the following modes:
- BarcodeLinkMode.SingleListBuilding
- BarcodeLinkMode.ContinuousListBuilding
setPlatform(platform: BarcodeLinkPlatform): BarcodeLink
barcodeLink.setPlatform(BarcodeLinkPlatform.Web);Configure your BarcodeLink instance to use the given BarcodeLinkListPlatform.
Available values:
| Value | Description | 
|---|---|
| Express | Launch the Scandit Express app to start scanning | 
| Web | Launch a browser tab with the Scandit Web SDK to start scanning | 
Defaults to BarcodeLinkPlatform.Express.
setBarcodeRegexValidation(barcodeRegexValidation: RegExp): BarcodeLink
barcodeLink.setBarcodeRegexValidation(/\d+/);Configure your BarcodeLink instance to use the given regex to validate barcodes. Only barcodes that pass the validation regex will be scanned.
By default, no validation regex is set.
setBarcodeTransformations(barcodeTransformations: unknown): BarcodeLink
barcodeLink.setBarcodeTransformations({ ... });Configure your BarcodeLink instance to use the given barcode transformations.
By default, no transformation is set.
NOTE: The property is taken into consideration only when the platform is BarcodeLinkPlatform.Express.
setSymbologies(symbologies: BarcodeLinkConfiguration['symbologies']): BarcodeLink
barcodeLink.setSymbologies({
    ean13upca: {
        enabled: true,
    },
});Enable specific symbologies for scanning.
For a full list of supported symbologies, read here: https://docs.scandit.com/barcode-symbologies/
addListener(listener: BarcodeLinkListener): BarcodeLink
barcodeLink.addListener({
    onCapture(barcodes) {
        console.log("Scanned:", barcodes);
    },
});Add a listener to the Barcode Link instance.
Available Callbacks:
onCancel
barcodeLink.addListener({
    onCancel() {
        console.log("Session closed.");
    },
});Called when the desktop closes the scanning session.
NOTE: This callback is only available in a BarcodeLinkUiFlow.
onCapture
barcodeLink.addListener({
    onCapture(barcodes: BarcodeLinkBarcode[], finished: boolean) {
        // Do something with the barcodes
    },
});Called when the remote device (ie: smartphone) sends captured barcodes to the main device (ie: desktop).
The second parameter finished is used in continuous modes (ie: ContinuousScanning and ContinuousListBuilding) to indicate whether the remote device has finished scanning or not.
When finished is true, the session has been closed.
onConnectionStateChanged
barcodeLink.addListener({
    onConnectionStateChanged(connectionState: BarcodeLinkConnectionState) {
        switch (connectionState) {
            ...
        }
    },
});Called when the connection state of either the main device or the remote device changes.
Available values:
| Value | Description | 
|---|---|
| MainDeviceDisconnected | The desktop disconnected from the session | 
| MainDeviceReconnected | The desktop reconnected to the session | 
| MainDeviceConnectionFailed | The desktop repeatedly failed to reconnect to the session | 
| RemoteDeviceConnected | The smartphone connected to the session | 
| RemoteDeviceDisconnected | The smartphone disconnected from the session | 
NOTE: This callback is only available in a BarcodeLinkUilessFlow.
removeListener(listener: BarcodeLinkListener): BarcodeLink
barcodeLink.removeListener(myListener);Remove a listener from the Barcode Link instance.
initialize(flow: BarcodeLinkFlow): Promise  
await barcodeLink.initialize(new BarcodeLinkUiFlow());Initialize Barcode Link with the given BarcodeLinkFlow.
Available values:
BarcodeLinkUiFlow
This flow initializes a pre-built UI, so you can start scanning right away.
This UI will show a QR code that you can use to connect your smartphone to the session.
BarcodeLinkUilessFlow
This flow initializes a headless barcode link session, so you will have to build your own UI around it.
To do this, you will have access to a special onConnectionStateChanged callback when adding a listener:
barcodeLink.addListener({
    onConnectionState(connectionState) {
        // Handle desktop/smartphone connection state changes
    },
});When using this flow, BarcodeLink.initialize will return a BarcodeLinkQrCode object that you can use to connect.
For example:
const qrcode = await barcodeLink.initialize(new BarcodeLinkUilessFlow());
const img = document.createElement("img");
img.src = qrcode.src;
const a = document.createElement("a");
a.href = qrcode.href;
a.append(img);
document.body.append(a);dispose(): void
await barcodeLink.dispose();Close the Barcode Link session. Useful for example if you want to close the session when unmounting a component.