uni-app 蓝牙解决方案 解决鸿蒙系统无法发送数据的问题

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app 蓝牙解决方案 解决鸿蒙系统无法发送数据的问题

求蓝牙解决方案
解决鸿蒙系统无法发送监听数据的问题
可以加qq:20746470

4 回复

公司承接项目外包开发、双端(Android,iOS)原生插件开发。
为什么选择我们: 1、1000+项目开发积累,数百种商业模式开发经验,更懂您的需求,沟通无障碍。 2、一年免费技术保障,系统故障或被攻击,2小时快速响应提供解决方案落地。 3、软件开发源码定制工厂,去中间商降低成本,提高软件开发需求沟通效率。 4、纯原生开发,拒绝模板和封装系统,随时更新迭代,增加功能,无需重做系统。 5、APP定制包办软件著作权申请,30天内保证拿到软著证书,知识产权受保护。 6、中软云科技导入严谨的项目管理系统,确保项目准时交付,快速抢占市场商机。 7、软件开发费、维护费、第三方各种费用公开透明,不花冤枉钱,不玩套路。
已有大量双端插件、App、小程序、公众号、PC、移动端、游戏等案例。
行业开发经验:银行、医疗、直播、电商、教育、旅游、餐饮、分销、微商、物联网、零售等
商务QQ:1559653449 商务微信:fan-rising
7x24小时在线,欢迎咨询了解

更多关于uni-app 蓝牙解决方案 解决鸿蒙系统无法发送数据的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


智密科技承接安卓/IOS双端插件开发、安卓/IOS App外包开发、项目整体外包、各类硬件产品开发
我们的优势: 1、全职UI、前端、安卓、IOS、后端、硬件工程师,每个岗位都是专职开发更专业,选择智密您就拥有了一个完整的技术支持团队; 2、定制的产品无论是插件、APP、整套系统,一年内免费Bug修复; 3、定制的APP和整体项目软件著作权归客户所有,并协助软件著作权申请; 4、软件开发源头工厂,定价合理,与开发人员直接沟通,避免需求理解问题,提高开发效率; 5、软件均为自主开发,不基于网上代码进行二次开发,保障系统安全性; 6、软件源码自己开发,出现BUG能快速修复,新需求能快速实现; 7、签订开发合同,通过条款约定双方权利义务,服务和售后有保障; 8、我们的插件尽可能做到让用户UI自定义,用户改变UI之后无需联系我们修改插件,只要前端调整UI即可。
我们唯一的劣势:价格可能会比别人高 我们不提供廉价的插件和服务,服务和收费是成正比的。 我们的插件定价基本都在千元以上,插件使用成本=插件购买费用+插件集成成本+插件填坑成本+后续更新成本 在没有好的技术支持前提下,后面三项成本将远远大于插件购买费用,选择智密科技,实现双赢
经过几年积累,已拥有大量双端插件,常见功能的插件几乎都能直接试用,欢迎各位进群了解
插件沟通交流群:755910061(欢迎进群了解我们的技术支持方式及我们的技术能力) 商务QQ:57570616(这是传说中的搅屎棍,光动嘴皮子不干活的,进群最实在) 商务微信:ZhimiTec(同上…)

是hbuilder3.7.11及以上版本的bug,以前的3.2.16在鸿蒙2 3上蓝牙都没问题,hbuilder维护人员给看看吧

针对uni-app在鸿蒙系统上蓝牙通信无法发送数据的问题,这通常与系统的API兼容性和权限设置有关。以下是一个基本的蓝牙通信代码示例,并包含了一些可能的解决方案来尝试解决鸿蒙系统上数据发送失败的问题。

蓝牙通信基础代码示例

1. 初始化蓝牙适配器

uni.openBluetoothAdapter({
    success: function (res) {
        console.log('蓝牙适配器初始化成功', res)
        // 开始搜索设备
        uni.startBluetoothDevicesDiscovery({
            allowDuplicatesKey: false,
            success: function (devRes) {
                console.log('开始搜索设备', devRes)
                // 搜索到设备后的处理逻辑
            }
        })
    },
    fail: function (err) {
        console.error('蓝牙适配器初始化失败', err)
    }
})

2. 搜索并连接设备

uni.onBluetoothDeviceFound(function (devices) {
    devices.devices.forEach(function (device) {
        if (device.name === '目标设备名称') {
            // 停止搜索
            uni.stopBluetoothDevicesDiscovery({
                success: function (stopRes) {
                    // 连接设备
                    uni.createBLEConnection({
                        deviceId: device.deviceId,
                        success: function (connRes) {
                            console.log('设备连接成功', connRes)
                            // 发送数据
                            sendDataToDevice(device.deviceId)
                        },
                        fail: function (connErr) {
                            console.error('设备连接失败', connErr)
                        }
                    })
                }
            })
        }
    })
})

3. 发送数据

function sendDataToDevice(deviceId) {
    uni.writeBLECharacteristicValue({
        deviceId: deviceId,
        serviceId: '目标服务ID',
        characteristicId: '目标特征值ID',
        value: uni.arrayBufferToBase64(new ArrayBuffer(8)), // 示例数据,根据实际情况修改
        success: function (sendRes) {
            console.log('数据发送成功', sendRes)
        },
        fail: function (sendErr) {
            console.error('数据发送失败', sendErr)
            // 鸿蒙系统可能特有的错误处理
            if (sendErr.code === '特定错误码') {
                // 特殊处理逻辑,比如重试或提示用户
            }
        }
    })
}

可能的解决方案

  • 权限检查:确保应用已请求并获得了蓝牙通信的必要权限。
  • 设备兼容性:检查目标设备是否支持所使用的蓝牙协议和服务。
  • 错误处理:针对鸿蒙系统特有的错误码进行特殊处理,如重试连接或发送。
  • 日志调试:使用console.log或更高级的日志工具记录详细的通信过程,以便定位问题。

以上代码提供了一个基本的蓝牙通信框架,并尝试通过错误处理来解决鸿蒙系统上可能遇到的问题。在实际应用中,可能需要根据具体错误信息和设备日志进行进一步的调试和优化。

回到顶部