引入方式
npm引入
npm install @cniot/cainiao-appx --save
// /es/core 是按需引入 core 部分的API, 不会包含 pda 部分的api
import { Bridge } from '@cniot/cainiao-appx/es/core';
js文件引入
注意:这里的版本号可能没有及时更新,请参考 @cniot/cainiao-appx
库的版本号。
// 未压缩
https://cn.alicdn.com/lemo/iot-runtime/0.1.12/core/index.js
// 已压缩
https://cn.alicdn.com/lemo/iot-runtime/0.1.12/core/index.min.js
cosnt Bridge = Appx.Bridge;
接口列表
.isPow
判断当前环境是否是core设备
if(Bridge.isPow()){
// core
}else{
// 非 lemo core
}
.onScan
监听扫码枪的输入,返回取消监听的函数
const removeOnScan = Bridge.onScan((event)=>{
// event.barcode 是扫码内容
console.log(event.barcode);
});
// 取消监听, 请调用
removeOnScan()
.getAppInfo
获取设备详情
Bridge.getAppInfo().then((appInfo)=>{
// appInfo = {
// endpoint, // 边缘服务器地址
// mac,
// iotId,
// version,
// sn,
// productKey,
// ... 其他信息可能与core的版本相关
// }
}).catch((error)=>{
// 错误信息 error.message
})
.playVoiceText
文字声音播放
const text = "你好"; // 文字
const rate = 1; // 速度 默认1
const volume = 1; // 音量默认1
Bridge.playVoiceText(text, rate = 1, volume = 1).then(()=>{
// 成功回调
}).catch(()=>{
// 失败回调
})
.playVoiceComplete
播放core内置成功提示语
Bridge.playVoiceComplete().then(()=>{}).catch(()=>{})
.playVoiceError
播放core内置错误提示语
Bridge.playVoiceError().then(()=>{}).catch(()=>{})
.playVoiceWarn
播放core内置警告提示语
CNBridge.core.playVoiceWarn().then(()=>{}).catch(()=>{})
.addPowWeighEventListener
监听称重器重量变化。PS:Core必须正确链接称重器,并且在内置称重器中测试数据正常。
Bridge.addPowWeighEventListener((weight)=>{
// 称重器变化回调函数,会循环调用,weight称重器读数,单位克
}).then((removePowWeighEventListener)=>{
// removePowWeighEventListener 溢出称重器监听的函数
// 在组件卸载,或者页面卸载的时候可直接调用 removePowWeighEventListener()
}).catch((error)=>{
// 添加监听异常回调 error.message
})
标准wms打印数据格式
const param = {} // wms打印数据格式
Bridge.print(param).then(()=>{
// 打印成功,表示打印机已出纸
}).catch((error)=>{
// 打印异常
})
.printPDF
const param = {
success: true,
message: null,
data: {
cloudPrintParamList: [
{
documentID: "900255715588",
contents: [
{
encryptedData: "",
signature: "",
templateURL:
"http://cdn-cloudprint.cainiao.com/waybill-print/test_image/20180828_135351_961_5881.pdf",
templateURLs: null,
contentType: null,
// 面单号
// waybillCode: "", //当 printMode = rfidReadWrite 需要,把面单号填写到当前字段
// 如果是rfid打印机需要此字段
// printMode: "rfidReadOnly", // rfidReadOnly 只读模式, rfidReadWrite 读写模式
},
],
},
],
paperSize: { width: 100, height: 50 },// 必要
},
resultData: null,
intSign: 1,
alertMessage: null,
confirmICON: null,
confirmMessage: null,
};
// wms打印数据格式
Bridge.printPDF(param).then(()=>{
// 打印成功,表示打印机已出纸
}).catch((error)=>{
// 打印异常
})
.edgeStartRequest
请求边缘服务器, start接口
// gs应用id 咨询, 不拒
const appId = "10118"; // gs应用id
// 业务 bizKey 咨询,不拒
const bizKey = "4PX_Oversea_DEV"; // 4PX_Oversea_DEV(测试), 4PX_Oversea_PRO(生产)
// 任意格式 JSON 业务参数
const bizParams = {
consignmentNos: ["123123123"],
needPrintDeliveryList: "Y",
mock: true,
};
Bridge.edgeStartRequest(appId, bizKey, [JSON.stringify(bizParams)]).then((ret)=>{
// lemo app 第一个指令下发的数据
}).catch((error)=>{
// 请求异常 error.message
})
.setAccount
设置系统栏显示的用户昵称
Bridge.setAccount({
nickName:"hello"
})
.clearAccount
清除系统栏的用户昵称
Bridge.clearAccount();
.setVideoPreview
设置摄像头预览窗口的位置和大小
Bridge.setVideoPreview(x, y, width, height)
.closeVideoPrevidw
关闭摄像头预览窗口
Bridge.closeVideoPreview();
.onBluetoothStatusChange
监听系统蓝牙的状态变化。消息发送,请对照PDA的蓝牙发送
Bridge.onBluetoothStatusChange((event)=>{
// event.status = "connect|break|message" 链接,断开,新消息
// status === "message" 的时候,可以通过 payload 拿到消息
// event.payload = { msgType:107, data:"hello" }
}).then((removeBluetoothStatusChange)=>{
// removeBluetoothStatusChange 清除监听函数
})
4px海外仓接口说明说明
1. 首先通过业务参数调用边缘服务器(Bridge.edgeStartRequest),拿到需要打印的pdf url
// gs应用id 咨询, 不拒
const appId = "10118"; // gs应用id
// 业务 bizKey 咨询,不拒
const bizKey = "4PX_Oversea_DEV"; // 4PX_Oversea_DEV(测试), 4PX_Oversea_PRO(生产)
// 任意格式 JSON 业务参数
const bizParams = {
consignmentNos: ["123123123"],
needPrintDeliveryList: "Y",
mock: true,
};
Bridge.edgeStartRequest(appId, bizKey, [JSON.stringify(bizParams)]).then((ret)=>{
// lemo app 第一个指令下发的数据
// 10118 ret 的反馈例子 {"params":{"data":{"type":"router","url":"https://gs.cainiao.com/proxy/4PX_Oversea_DEV/resource/4PX_Oversea_DEV/10118/0.0.0-20210115111611450.gar!/pages/scan/index.core.json","params":null,"data":{"msg":"系统处理成功","result":"1","data":{"action":null,"appKey":null,"dataDTOS":[{"data":{"configResult":"Common","shipUrl":"http://fpx-bss-oss-eu.oss-eu-central-1.aliyuncs.c/channel-service-d721a1a8-57cf-4549-982e-db1d80005a73.pdf","consignmentNoBarcode":"","bizNoBarcode":""},"expandField":null,"remark":"OC:OC88802192011127400SKU:623400814737","transportChannel":"DI74","type":"PLDHL"}],"operater":"S16013","printDate":1610356108129,"sign":null},"success":true,"$flowId":"8583499570805441792","$stepNum":"1","errors":null},"style":{},"attr":null,"app_id":"10118","menu_data":{},"action_data":{},"default_params":null},"success":true,"errorCode":null,"errorMsg":null},"success":true,"errorCode":null,"errorMsg":null}
}).catch((error)=>{
// 请求异常 error.message
})
2. 拿到PDF url 后再调用CorePDF打印接口 (Bridge.printPDF), 请务必保证传入的数据格式如下
const param = {
success: true,
message: null,
data: {
cloudPrintParamList: [
{
documentID: "900255715588",
contents: [
{
encryptedData: "",
signature: "",
// 必要
templateURL:
"http://cdn-cloudprint.cainiao.com/waybill-print/test_image/20180828_135351_961_5881.pdf",
templateURLs: null,
contentType: null,
},
],
},
],
paperSize: { width: 100, height: 50 },// 必要
},
resultData: null,
intSign: 1,
alertMessage: null,
confirmICON: null,
confirmMessage: null,
};
// wms打印数据格式
Bridge.printPDF(param).then(()=>{
// 打印成功,表示打印机已出纸
}).catch((error)=>{
// 打印异常
})
- 灭灯接口 ```javascript const appId = “10131”; //@周昌恩 灭灯接口, 还是用10131
// 业务 bizKey 咨询,不拒 const bizKey = “4PX_Oversea_DEV”; // 4PX_Oversea_DEV(测试), 4PX_Oversea_PRO(生产) // 任意格式 JSON 业务参数 const bizParams = { putwall:”100” // 播种墙号 };
Bridge.edgeStartRequest(appId, bizKey, [JSON.stringify(bizParams)]).then(()=>{ //.. }).catch(()=>{ //… }) ```