引入方式

  • npm引入

    1. npm install @cniot/cainiao-appx --save
    1. // /es/core 是按需引入 core 部分的API, 不会包含 pda 部分的api
    2. import { Bridge } from '@cniot/cainiao-appx/es/core';
  • js文件引入

注意:这里的版本号可能没有及时更新,请参考 @cniot/cainiao-appx 库的版本号。

  1. // 未压缩
  2. https://cn.alicdn.com/lemo/iot-runtime/0.1.12/core/index.js
  3. // 已压缩
  4. https://cn.alicdn.com/lemo/iot-runtime/0.1.12/core/index.min.js
  5. cosnt Bridge = Appx.Bridge;

接口列表

.isPow

判断当前环境是否是core设备

  1. if(Bridge.isPow()){
  2. // core
  3. }else{
  4. // 非 lemo core
  5. }

.onScan

监听扫码枪的输入,返回取消监听的函数

  1. const removeOnScan = Bridge.onScan((event)=>{
  2. // event.barcode 是扫码内容
  3. console.log(event.barcode);
  4. });
  5. // 取消监听, 请调用
  6. 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
})

.print

标准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(()=>{ //… }) ```