更新记录
1.0.1(2020-04-12)
1.同步方法改为异步方法 2.更换connected方法为 connect({name:'',address:''},callback),callback 返回 {code:0,message:'连接成功',data:连接的设备信息} 3.可以直接连接设备打印 4.部分逻辑优化
1.0.0(2019-12-17)
Changelog: 1.0.0 1.打包Android和iOS原生SDK 2.暴露打印接口(除打印图片) 3.使用同步方式
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
√ | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | √ |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
启锐 QR-396A QR-380 蓝牙打印机 UNI-APP原生插件 本插件在QR-386A设备上测试通过,并未在QR-380上测试。
使用方法:
// 引用插件
const printer = uni.requireNativePlugin('YHTech-QR38XPrinter');
let device = {} //注意不能为null IOS会崩溃
// 调用 connect方法判断蓝牙打印机是否已连接,根据返回值进行操作
// 注意:直接点取消,不选择设备,会无法进入回调函数
printer.connect(device, ({ code, message, data }) => {
console.log(`device:${JSON.stringify(device)} 蓝牙连接返回:code=${code},message=${message},data=${JSON.stringify(data)}`)
if (code !== 0) {
// 连接失败,具体原因可以参考message返回
return
}
// 注意 data = { name:'', address:''}
// IOS 和 Android 的Address并不一致
// data指保存后,下次直接connect(data,callback)可以直接连接设备使用
device = data
// 设置纸张尺寸
printer.pageSetup(759,500)
// 打印文本(示例)
printer.drawText(10,10,'测试信息',1,0,0,0,0)
// 打印条码(示例)
printer.drawBarCode(40,40,'12330403',0,0,2,40)
// 打印二维码(示例)
printer.drawQrCode(120,120,'https://www.example.cn',0,4,20)
// 通知打印机打印
printer.print(0,0)
})
整个流程很简单,但是有以下注意点:
蓝牙设备连接错误,需要手工去系统的蓝牙菜单设置项,取消连接。 必须先 pageSetup ,然后执行相应画图语句,最后调用print方法实际打印至纸张,如果print不调用,则不会打印。 画图语句不要有图形重叠,否则打印机设备会直接断电关机!!! 相关接口: 接口详细说明请参照设备厂商提供的SDK包!
boolean connect({name:'', address:''}, callback) 连接打印机
pageSetup(int pageWidth, int pageHeight) 设置打印纸张大小(打印区域)的大小
print(int horizontal, int skip) 页模式下打印
drawBarCode(int start_x, int start_y, String text, int type, int rotate, int linewidth, int height) 打印一维条码
drawBox(int lineWidth, int top_left_x, int top_left_y, int bottom_right_x, int bottom_right_y) 打印边框
drawLine(int lineWidth, int start_x, int start_y, int end_x, int end_y, boolean fullline) 打印线条
drawQrCode(int start_x, int start_y, String text, int rotate, int ver, int lel) 打印二维码
drawText(int text_x, int text_y, String text, int fontSize, int rotate, int bold, boolean reverse, boolean underline) 打印文本
drawText2(int text_x, int text_y, int width, int height, String text, int fontSize, int rotate, int bold, boolean underline, boolean reverse) 打印文本框文字