更新记录
1.0.2(2021-11-29)
(1)更新MTU设置方法 (2)插件名称修改为 KY-KunYuBluetooth 具体引用修改为 uni.requireNativePlugin("KY-KunYuBluetooth");
1.0.1(2021-08-05)
更新接口文档
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:6.0 - 11.0 | 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原生插件配置”->”云端插件“列表中删除该插件重新选择
1、插件介绍
KunYuBluetooth 插件主要解决 uniapp中蓝牙协议对接BUG问题,具体为 notify 与 indicate 协议监听不生效,无法获取监听数据问题。并且增加对蓝牙多设备同时通讯的支持,避免资源冲突。
该插件所有API调用方式及参数沿用uniapp中原有的方式,并且将uniapp所有的接口都重新实现了一遍,并且优化业务代码,实现更加高性能的对接及蓝牙传输,并且简化了蓝牙连接步骤,提供简化连接步骤API,简化连接步骤。
该插件可以友好实现与原生Android蓝牙对接,当前实现了与多家医疗器械产品的对接,比如:欧姆龙血压计、脉搏波血压计、好糖血糖仪、三诺血糖仪、各厂家体重秤等产品,并且提供简化连接步骤,提高连接性能。
该插件只支持Android,IOS不支持,具体打包参考下面文档
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android Android 云打包另见文档 https://www.cnblogs.com/nanyang520/p/11930864.html
注意事项:使用 HBuilderX2.7.14 以下版本,如果同一插件且同一 appid 下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在 HBuilderX 项目中 manifest.json->“App 原生插件配置”->”云端插件“列表中删除该插件重新选择
2、使用说明
该插件所有接口名称及返回参数都和uniapp插件使用一致,具体接口使用和返回都可参考uniapp蓝牙文档。
具体地址:
蓝牙
https://uniapp.dcloud.io/api/system/bluetooth
低功耗蓝牙
[https://uniapp.dcloud.io/api/system/ble]()
2.1、引入插件
const KY_UNI = uni.requireNativePlugin("KY-KunYuBluetooth");
2.2、常用方法
1、初始化蓝牙
KY_UNI.openBluetoothAdapter( (res) => {
// kyBlue.showToast("成功:"+JSON.stringify(res)+"---"+this.title);
this.blueStatus = "成功:---"+res.code+"--"+res.message;
uni.showToast({title:res.message,icon:'none'});
// this.list.push("成功:"+JSON.stringify(res)+"---"+this.title)
},
(res) => {
// kyBlue.showToast("失败:"+JSON.stringify(res)+"---"+this.title);
this.blueStatus = "失败:---"+res.code+"--"+res.message;
uni.showToast({title:res.message,icon:'none'});
});
2、启动蓝牙搜索
KY_UNI.startBluetoothDevicesDiscovery(
{
services:[],
allowDuplicatesKey:false,
interval:"0"
},
(result)=> {
this.blueScanStatus = "开启搜索成功:---"+result.code+"--"+result.message;
this.blueScanListen = "----准备监听----";
uni.showToast({title:result.message,icon:'none'});
},
(result)=> {
this.blueScanStatus = "开启搜索失败:---"+result.code+"--"+result.message;
this.blueScanListen = "----重新扫描----";
uni.showToast({title:result.message,icon:'none'});
}
);
3、停止蓝牙搜索
KY_UNI.closeBluetoothAdapter( (res) => {
// kyBlue.showToast("成功:"+JSON.stringify(res)+"---"+this.title);
this.blueStatus = "关闭成功:---"+res.code+"--"+res.message;
uni.showToast({title:res.message,icon:'none'});
// this.list.push("成功:"+JSON.stringify(res)+"---"+this.title)
},
(res) => {
// kyBlue.showToast("失败:"+JSON.stringify(res)+"---"+this.title);
this.blueStatus = "关闭失败:---"+res.code+"--"+res.message;
uni.showToast({title:res.message,icon:'none'});
});
4、开启搜索监听
KY_UNI.onBluetoothDeviceFound(
(res) => {
var a = res;
// uni.showToast({title:""+JSON.stringify(res),icon:'none'});
var tempResult = res.devices;
if(tempResult.length>0){
this.blueScanInfo = "---"+tempResult[0].name+"--"+tempResult[0].deviceId;
}else{
this.blueScanInfo = "Device Not Find";
}
// this.list.push("---"+tempResult[0].name+"--"+tempResult[0].deviceId);
}
);
5、开启连接蓝牙
KY_UNI.createBLEConnection(
{
deviceId:this.deviceId,
timeout:"0"
},
(result)=> {
this.blueConnect = "等待连接成功:---"+result.code+"--"+result.message;
uni.showToast({title:result.message,icon:'none'});
},
(result)=> {
this.blueConnect = "等待连接失败:---"+result.code+"--"+result.message;
uni.showToast({title:result.message,icon:'none'});
}
);
6、开启连接监听
KY_UNI.onBLEConnectionStateChange(
(res) => {
var a = res;
uni.showToast({title:""+JSON.stringify(res),icon:'none'});
this.blueConnect = "连接状态---"+res.connected+"--"+res.deviceId;
// this.list.push("---"+tempResult[0].name+"--"+tempResult[0].deviceId);
}
);
7、获取蓝牙服务值
KY_UNI.getBLEDeviceServices(
{
deviceId:this.deviceId
},
(result)=> {
this.BlueServices = "成功服务值----:"+JSON.stringify(result);
uni.showToast({title:JSON.stringify(result),icon:'none'});
},
(result)=> {
this.BlueServices = "失败服务值----:"+JSON.stringify(result);
uni.showToast({title:JSON.stringify(result),icon:'none'});
}
);
8、获取服务特征值
KY_UNI.getBLEDeviceCharacteristics(
{
deviceId:this.deviceId,
serviceId:this.AServiceId
},
(result)=> {
this.BlueServices = "成功服务值----:"+JSON.stringify(result);
uni.showToast({title:JSON.stringify(result),icon:'none'});
},
(result)=> {
this.BlueServices = "失败服务值----:"+JSON.stringify(result);
uni.showToast({title:JSON.stringify(result),icon:'none'});
}
);
9、设置服务协议
KY_UNI.notifyBLECharacteristicValueChange(
{
deviceId:this.deviceId,
serviceId:this.AServiceId,
characteristicId:this.BCharactorsId,
protocol:this.protocol
},
(result)=> {
this.notifyStatus = "设置协议----:"+JSON.stringify(result);
uni.showToast({title:JSON.stringify(result),icon:'none'});
},
(result)=> {
this.notifyStatus = "设置协议----:"+JSON.stringify(result);
uni.showToast({title:JSON.stringify(result),icon:'none'});
}
);
10、开启服务协议通讯监听
KY_UNI.onBLECharacteristicValueChange(
(res) => {
uni.showToast({title:""+JSON.stringify(res),icon:'none'});
this.notifyValue = "监听数值---"+JSON.stringify(res.value);
// this.list.push("---"+tempResult[0].name+"--"+tempResult[0].deviceId);
}
);
11、写数据
KY_UNI.writeBLECharacteristicValue(
{
deviceId:this.deviceId,
serviceId:this.AServiceId,
characteristicId:this.writeCharatorsId,
value:this.writeData
},
(result)=> {
this.writeStatus = "写数据成功----:"+JSON.stringify(result);
uni.showToast({title:JSON.stringify(result),icon:'none'});
},
(result)=> {
this.writeStatus = "写数据失败----:"+JSON.stringify(result);
uni.showToast({title:JSON.stringify(result),icon:'none'});
}
);
12、关闭蓝牙适配器
KY_UNI.closeBluetoothAdapter( (res) => {
// kyBlue.showToast("成功:"+JSON.stringify(res)+"---"+this.title);
this.blueStatus = "关闭成功:---"+res.code+"--"+res.message;
uni.showToast({title:res.message,icon:'none'});
// this.list.push("成功:"+JSON.stringify(res)+"---"+this.title)
},
(res) => {
// kyBlue.showToast("失败:"+JSON.stringify(res)+"---"+this.title);
this.blueStatus = "关闭失败:---"+res.code+"--"+res.message;
uni.showToast({title:res.message,icon:'none'});
});
3、其他接口参考请参考
蓝牙
https://uniapp.dcloud.io/api/system/bluetooth
低功耗蓝牙
[https://uniapp.dcloud.io/api/system/ble]()