uni-app ios微信小程序低功耗蓝牙开发连接设备成功后弹出蓝牙配对请求
uni-app ios微信小程序低功耗蓝牙开发连接设备成功后弹出蓝牙配对请求
代码示例
getBLEDeviceServices() {
let that = this
console.log('获取设备服务');
uni.getBLEDeviceServices({
deviceId: that.deviceId,
success: res => {
console.log('获取设备服务成功');
let services = res.services.filter(item => {return (item.uuid === bleServerUUID || item.uuid === omAServerUUID || item.uuid === omCServerUUID);})
for (let i = 0; i < services.length; i++) {
if (services[i].isPrimary) {
let uuid = services[i].uuid
that.getBLEDeviceCharacteristics(uuid)
}
},
},
}),
// 获取设备特征值
getBLEDeviceCharacteristics(serviceID) {
let that = this
console.log('获取设备特征值');
uni.getBLEDeviceCharacteristics({
deviceId: that.deviceId,
serviceId: serviceID,
success: res => {
console.log('获取设备特征值成功');
console.log(res.characteristics, 8888);
console.log(this.deviceId, 9999);
const characteristics = res.characteristics;
for (let i = 0; i < characteristics.length; i++) {
let item = characteristics[i]
// 该特征值是否支持 notify或indicate 操作
if (item.uuid == '000036F6-0000-1000-8000-00805F9B34FB') {
readData = {
deviceId: that.deviceId,
serviceID: serviceID,
characteristicID: item.uuid
}
console.log('开启notify');
that.notifyBLECharacteristicValueChange()
}
// 该特征值是否支持 write 操作
if (item.uuid == '000036F5-0000-1000-8000-00805F9B34FB') {
writeData = {
deviceId: that.deviceId,
serviceID: serviceID,
characteristicID: item.uuid
}
bleControl.connectStateListen(BLUE_STATE.WRITEREADY);
}
}
}
})
}
到uni.getBLEDeviceCharacteristics 成功后弹出蓝牙配对请求
1 回复
在处理uni-app中的iOS微信小程序低功耗蓝牙开发时,成功连接设备后弹出蓝牙配对请求这一场景,我们通常需要结合微信小程序的蓝牙API来完成。以下是一个简要的代码示例,展示如何在连接成功后处理蓝牙设备的配对请求。
首先,确保你的uni-app项目已经配置了蓝牙权限,并在manifest.json
中启用了微信小程序的相关设置。
1. 初始化蓝牙适配器
在页面的onLoad
或onReady
生命周期函数中初始化蓝牙适配器:
uni.openBluetoothAdapter({
success: function (res) {
console.log('蓝牙适配器初始化成功', res)
// 开始发现周围的蓝牙设备
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false,
success: function (res) {
console.log('开始搜索蓝牙设备', res)
}
});
},
fail: function (err) {
console.error('蓝牙适配器初始化失败', err)
}
});
2. 连接蓝牙设备
假设你已经获取到了设备的UUID,并尝试连接:
uni.createBLEConnection({
deviceId: deviceUUID, // 设备UUID
success: function (res) {
console.log('蓝牙设备连接成功', res)
// 连接成功后尝试读取服务
uni.getBLEDeviceServices({
deviceId: deviceUUID,
success: function (serviceRes) {
console.log('获取服务成功', serviceRes)
// 这里可以进一步处理服务、特征值等
// 假设需要配对,则调用以下逻辑(注意:配对通常由系统处理,开发者无法直接触发)
}
});
},
fail: function (err) {
console.error('蓝牙设备连接失败', err)
}
});
3. 处理配对请求(注意:此部分由系统自动处理)
在iOS上,当尝试连接一个未配对的蓝牙设备时,系统会自动弹出配对请求对话框。开发者无法直接控制这个对话框的显示,但可以通过监听蓝牙连接的状态来给用户相应的提示。
4. 监听蓝牙连接状态变化
可以通过监听蓝牙连接的状态变化来给用户提示:
uni.onBLEConnectionStateChange(function (res) {
console.log('蓝牙连接状态变化', res)
if (res.connected) {
uni.showToast({
title: '连接成功',
icon: 'success'
});
} else {
uni.showToast({
title: '连接断开',
icon: 'none'
});
}
});
总结
在uni-app的iOS微信小程序低功耗蓝牙开发中,连接设备后的配对请求是由系统自动处理的。开发者需要关注的是蓝牙连接的状态变化,并根据状态变化给用户相应的提示。上述代码示例展示了如何初始化蓝牙适配器、连接蓝牙设备以及监听蓝牙连接状态变化。