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-mobileThis 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
Podfilewith:
source'https://github.com/CocoaPods/Specs.git'platform:ios,'9.0'target'YourAppName'donode_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: "#{node_modules_path}/react-native-socket-mobile/ios"endpost_installdo |installer|
installer.pods_project.targets.eachdo |target|
iftarget.name == "React"target.remove_from_projectendendend- 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{awaitSocketMobile.start({
bundleId,
developerId,
appKey,});}catch(e){// Handle the error}};Stop connection to the scanner.
stop=async()=>{try{awaitSocketMobile.stop();}catch(e){// Handle the error}};Get current list of connected devices.
updateStatusFromDevices=async()=>{conststatus=awaitSocketMobile.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();}