微信小程序BLE开发踩坑记02|系统蓝牙可见却搜不到?

发布时间:2026/10/21 21:05:04
微信小程序BLE开发踩坑记02|系统蓝牙可见却搜不到? 背景上一篇刚把安卓搜不到设备那事摆平我还挺得意以为扫描这块算是摸清了。结果一接血压计又懵了同一台手机、同一套扫描代码血氧仪一搜就出来血压计扫半天页面干干净净。更邪门的是这台血压计在手机自带的蓝牙设置里明明看得到点配对也没问题。先说结论不是所有 BLE 设备都会在广播里带名字。我那台血压计的广播包里压根没有设备名字段而我的扫描层写了一句名字为空就丢弃——于是它被我自己筛掉了。一句话记住扫描层的活儿是上报设备认不认得出目标是识别层的事。现象血氧仪扫描页 1~2 秒就列出来了。血压计页面毫无反应等再久也不出来。手机系统蓝牙里这台血压计可见、可配对。两条信息又打架了。不过这回我没慌——上次刚学会对照实验直接套用。排查先看日志。把设备发现回调里的原始数据整条打出来name、localName、advertisData全打。可一开始什么都印不出来。我反应过来是我那句丢弃执行在打印之前设备根本没机会出现在日志里。于是我把丢弃那行先注释掉、只留打印才第一次看到这台设备的广播原貌——name: 、localName: 但advertisData里带着一串非空数据。再用 BLE 调试 App比如 nRF Connect 这类连上它看原始广播确认它广播的只有 Flags、服务 UUID、制造商数据三块没有设备名字段。回头翻协议文档广播包格式那节也对上了——它就是设计成这样。根因BLE 扫描时周围会扫到一堆没名字的杂散设备邻居的耳机、手环、电视。所以很多示例代码里都有一句没名字的丢掉我的扫描层也照抄了// 【踩坑写法】扫描层里名字为空就丢弃if(!device.name!device.localName)return;// 血压计天生无名 → 直接被筛掉所有 BLE 设备都有广播名这个前提本身就不成立。血氧仪的广播里带名字所以一直正常血压计天生无名于是全灭。代码一个字没改变量是设备。解决扫描层只上报识别交给上层扫描层不再做任何认设备的判断来者一律上报是不是目标设备交给设备识别模块综合判断型号码 名字关键词 服务 UUID 一起看// 【修复】扫描层不做识别无名设备也一律上报wx.onBluetoothDeviceFound(function(res){res.devices.forEach(function(device){// 不再按 name 是否为空丢弃直接交给上层识别reportToDeviceManager(device);});});顺带在扫描层开了一条广播 hex 诊断日志无名设备从此有据可查// 把广播原始数据打成 hex形如 AA 4C 41 ...无名设备也能排查if(device.advertisData){console.log([扫描] 无名设备广播:,hexDump(device.advertisData),device.deviceId);}hexDump就是把ArrayBuffer逐字节转成大写十六进制字符串调 BLE 这活儿离不了它。改完把手机拿来再跑一遍血压计和血氧仪都稳稳地出来了。预防 / 复盘要点对接新硬件前先抓一遍它的原始广播包拿工具看一眼别用别的设备都这样去假设它。扫描层负责上报识别层负责过滤。过滤逻辑要放在掌握完整判据名字 / 型号码 / 服务 UUID的那一层扫描层越单纯越好。出现别的设备都正常唯独这台不正常先怀疑这台设备的广播格式特殊而不是扫描代码有 bug。常见问题Q1蓝牙设备在系统设置里能看到小程序就是搜不到一般是什么原因最常见两类一是本文这种设备广播里没有名字字段被无名即丢弃的过滤逻辑筛掉了二是安卓定位权限没给全扫描根本起不来。区分方法很简单——把扫描回调的原始日志打开看有没有这台设备的记录。有记录 被自己筛了没记录 扫描压根没起来。Q2怎么知道我的设备广播里到底有没有名字用 BLE 调试 App 看一眼原始广播最快没有的话就在小程序里把advertisData打成 hex 打出来看。别猜看一眼就有答案。Q3无名设备该怎么确认它是我要连的那台看广播里的其他东西——制造商数据、服务 UUID、广播内容的特征都能当判据。我后面会专门写一篇名字没有、型号也不对时怎么认出设备。最后扫描层和识别层这层分工我后来整理成了那套开源 BLE SDK 的一部分——设备发现一律上报认不认得出来交给识别模块接入方不用自己写过滤逻辑Giteehttps://gitee.com/wanrendi75/jingjin-ble-sdk这个连载我才写到第二篇踩的坑一个比一个刁钻后面接着记。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询