微信蓝牙小程序开发实战,从零到上线的完整指南

文章分类:新闻资讯 发布时间:2026-10-07 原文作者:小程序开发 阅读( )

微信蓝牙小程序开发实战,从零到上线的完整指南

去年冬天,我接了个活儿,要给一家硬件公司做微信小程序,功能是控制他们的蓝牙台灯。做之前我心想,蓝牙小程序?不就是调调API吗?结果真上手才发现,这玩意儿坑比想象中多得多。写这篇文章,就是想把我踩过的坑、绕过的弯,原原本本摆出来。你要是正打算做微信蓝牙小程序,从零到上线,看这一篇,能少熬几个通宵。

先搞清楚一个概念,微信小程序里的蓝牙和传统蓝牙开发完全是两码事。传统蓝牙开发是设备端直接发起连接,但小程序里,你只能通过微信提供的wx.openBluetoothAdapter来开蓝牙适配器,然后一步步去扫描、连接、通信。这套流程,微信官方文档写得干巴巴的,但核心就一句话:所有蓝牙操作都是异步的,都得等回调。我当初犯的第一个错,就是没等openBluetoothAdapter的success回调就急着去startBluetoothDevicesDiscovery,结果直接报错“蓝牙适配器未初始化”。所以第一步,老老实实把适配器初始化成功再干别的。

接下来是扫描设备。wx.startBluetoothDevicesDiscovery这接口,你得传services参数,不然容易扫到一堆乱七八糟的设备。我那次调试,办公室里有台打印机也开着蓝牙,不指定服务UUID的话,列表里全是打印机、耳机,找自家台灯眼睛都快找瞎了。指定了service UUID后,在onBluetoothDeviceFound回调里过滤一下deviceId,把信号强度RSSI也打出来看看,太弱的直接忽略。这里有个细节,安卓和iOS在扫描行为上不一样,iOS上扫描到设备后会自动停止,安卓不会,你得手动调stopBluetoothDevicesDiscovery,不然耗电飞快。

连接设备这块,wx.createBLEConnection,传deviceId就行。但你别以为连接成功就完事了,连接成功只是第一步,关键是拿到设备服务。连接成功后,你得调wx.getBLEDeviceServices获取服务列表,再调wx.getBLEDeviceCharacteristics获取特征值。这一步最容易懵,因为服务和特征值是一串UUID,你得找对那个可读可写的特征值。我当初没仔细看文档,拿了个只读的特征值去写数据,结果writeBLECharacteristicValue回调一直报错,搞了俩小时才发现是特征值权限不对。记住,要通信,必须找properties里有write或notify的特征值。

说到通信,这才是蓝牙小程序的核心。你要往设备发数据,得调wx.writeBLECharacteristicValue,数据得转成ArrayBuffer,不能直接传字符串。我封装了个工具函数,把字符串转成ArrayBuffer再传,接收数据时在onBLECharacteristicValueChange回调里再把ArrayBuffer转回字符串。这里有个大坑,iOS上接收数据是分包的,一帧20字节,你发一条长消息,得自己拼包。安卓上倒是一次性全给,但数据格式可能有差异。所以写代码时,一定要做拆包和拼包的处理,不然数据就是缺胳膊少腿的。

测试阶段,你最好搞个真机,微信开发者工具里的模拟器对蓝牙支持很有限。我当初偷懒用模拟器调,结果连设备都搜不到。还有,安卓上你需要动态申请定位权限,因为蓝牙扫描在安卓里被归类为定位权限,不给权限根本扫不到设备。iOS上倒是不用定位权限,但需要用户主动触发蓝牙授权弹窗。这些权限处理,一定得在调用蓝牙API之前就搞定,不然用户一进来就报错,体验极差。

上线前,还有几件事得处理。第一,蓝牙功能在隐私协议里得写清楚,微信审核时对涉及个人信息的API查得很严,你得在mp后台配置好用户隐私保护指引,选上“蓝牙”相关选项,不然审核会卡住。第二,真机测试要覆盖多种机型,我那次上线前只测了iPhone,结果用户用华为手机连不上,后来发现是蓝牙版本兼容问题,得在代码里做个兼容判断。第三,小程序后台的服务器域名配置不用管,蓝牙不走网络请求,但如果你要上传数据到云端,那还得配request合法域名。

上线那天,我盯着审核状态,忐忑了一整天。结果第二天早上,通过了。那一刻我才真正体会到,微信蓝牙小程序开发,说难也难,说简单也简单。难在细节多、坑多,简单在只要按照流程一步步走,把权限、UUID、分包这些基础功打牢,整个链路其实很清晰。你要做的话,记住我这几个经验:初始化等回调、扫描指定服务、通信找准特征值、数据拆包拼包、真机多机型测试。这套路走下来,从零到上线,一周时间绰绰有余。蓝牙这东西,玩通了之后,你会发现它能做的事比想象中多得多,智能家居、外设控制、数据采集,都在等你开发呢。

原文来自:小程序开发