@pqthanh/expo-datawedge
v0.1.2
Published
My new module
Maintainers
Readme
@pqthanh/expo-datawedge (DataWedge Expo Module)
🎯 Overview
This is an Expo Module (using the Expo Modules SDK in Kotlin) designed to facilitate two-way communication with the Zebra Technologies DataWedge Intents API on Android devices.
It allows your React Native/Expo application to send commands to DataWedge (e.g., Soft Scan Trigger, Profile Configuration) and receive the resulting barcode scan data or API responses back via Android Broadcast Intents.
Platform Compatibility: This module is strictly for Android devices running Zebra DataWedge.
✨ Features
Send API Commands: Easily send any DataWedge API command using the
sendBroadcastWithExtrasmethod, including complex configuration objects (e.g.,SET_CONFIG).Real-time Scan Data: Listen for barcode scan data broadcasted by DataWedge profiles.
API Result Reception: Receive responses from critical DataWedge API calls (e.g.,
ENUMERATE_SCANNERS, configuration status).Backward Compatibility: Includes support for both the new V2 broadcast format and the older V1 (deprecated) format.
Kotlin & Expo SDK: Built with modern Kotlin on the robust Expo Modules SDK for enhanced stability and modern Android API compliance (including Android 13+ broadcast restrictions).
🚀 Installation
This module requires a custom build of your Expo application.
- Install the package:
npm install @pqthanh/expo-datawedge
# or
yarn add @pqthanh/expo-datawedge
# or
pnpm add @pqthanh/expo-datawedge- Rebuild your application:
Since this is a native module, you must use
expo prebuildor run the development build.
npx expo run:android💻 Basic Usage (JavaScript/TypeScript)
The module exposes three main events for listening to DataWedge broadcasts.
import DataWedgeIntents from "@pqthanh/expo-datawedge";
// 1. Register the receiver in Native code (Crucial Step)
// This should match the Action/Category set in your DataWedge Profile settings.
// Example: Register to listen for the Action 'com.myapp.ACTION'
if (Platform.OS === "android") {
DataWedgeIntents.registerBroadcastReceiver(
["com.myapp.ACTION"],
["android.intent.category.DEFAULT"]
);
}
// 2. Subscribe to the event
const subscription = DataWedgeIntents.addListener(
"onReceive", // Use this for V2 API results and scan data
(intent) => {
console.log("DataWedge Intent Received:", intent);
// Example: Extract scan data from the intent extras
const scanData = intent["com.symbol.datawedge.data_string"];
const labelType = intent["com.symbol.datawedge.label_type"];
if (scanData) {
console.log(`Scanned Data: ${scanData} (${labelType})`);
}
}
);
// Don't forget to unsubscribe when the component unmounts
// return () => subscription.remove();
// 3. Send a command to DataWedge (e.g., Soft Trigger Start)
const SOFT_TRIGGER_START = "com.symbol.datawedge.api.SOFT_SCAN_TRIGGER";
const ACTION_TOGGLE = "START_SCANNING";
DataWedgeIntents.sendBroadcastWithExtras(SOFT_TRIGGER_START, {
"com.symbol.datawedge.api.SOFT_SCAN_TRIGGER": ACTION_TOGGLE,
});