This native module is a wrapper over the Socket Mobile SDK. If you have a developer account and valid credentials, you will be able to use your scanner within your React Native application.
Add the library using yarn
or npm
:
yarn add react-native-socket-mobile
This library depends on the SKTCaptureObjC SDK. We will be using Cocoapods.
- Install CocoaPods on your marchine.
- Within you application, go to the
ios/
directory and runpod init
- Replace the content within your brand-new
Podfile
with:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
target 'YourAppName' do
node_modules_path = '../node_modules'
pod 'yoga', path: "#{node_modules_path}/react-native/ReactCommon/yoga/yoga.podspec"
pod 'React', path: "#{node_modules_path}/react-native"
pod 'ReactNativeSocketMobile', path: path: "#{node_modules_path}/react-native-socket-mobile/ios"
end
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "React"
target.remove_from_project
end
end
end
- Run
pod install
. - Open <YOUR_PROJECT_NAME>.xcworkspace file (you'll need to use it as a starting file from now on).
- Important: You need to add the following to your XCode project:
Info | |
---|---|
Supported external accessory protocols | com.socketmobile.chs |
No support for now.
Start listening for a scanner to be connected.
start = async () => {
try {
await SocketMobile.start({
bundleId,
developerId,
appKey,
});
} catch (e) {
// Handle the error
}
};
Stop connection to the scanner.
stop = async () => {
try {
await SocketMobile.stop();
} catch (e) {
// Handle the error
}
};
Get current list of connected devices.
updateStatusFromDevices = async () => {
const status = await SocketMobile.updateStatusFromDevices();
};
Listens for scanning results (after we got connected to the device).
SocketMobile.setDataListener(({ data }) => {
this.setState({ lastScan: data });
});
Listen for scanner connection changes.
SocketMobile.setDeviceStatusListener(status => {
if (status === 'connected') {
this.setState({ status: 'connected' });
} else {
this.setState({ status: 'disconnected' });
}
});
Remove all listeners, typically called in componentWillUmmount
.
componentWillUnmount() {
SocketMobile.clearAllListeners();
}