更新记录

1.0.0(2026-03-19)

  • 扫描附近 BLE 设备
  • 连接设备
  • 发现服务和特征
  • 原始读写
  • 通知订阅
  • Android MTU 调整

平台兼容性

uni-app(4.75)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.75)

Chrome Safari Android iOS 鸿蒙 微信小程序
× ×

点击“试用插件”即可直接体验 BLE 通信模板页

试用页面就是插件同级目录下的 index.vue

页面里已经包含:

  • 蓝牙状态和权限检查
  • 扫描附近 BLE 设备
  • 连接设备
  • 服务与特征发现
  • 原始读写
  • 通知订阅
  • Android MTU 调整

功能特性

  • 支持 Android / iOS App 作为 BLE Central 扫描附近设备
  • 支持连接 BLE GATT 设备并发现服务、特征
  • 支持读取特征值、写入特征值、通知订阅
  • 支持原始 HEX / UTF-8 文本调试
  • 支持 Android 请求 MTU
  • 附带完整模板页,方便没有真实协议时先验证通信链路

适用场景

  • 智能灯、门锁、插座、传感器
  • 体脂秤、血压计、温度计
  • 医疗或工业小设备
  • 任何需要 App 和 BLE 外设交换业务数据的场景

这版只做 BLE GATT 通信层,不做:

  • 经典蓝牙
  • 蓝牙耳机 / 键盘 / 鼠标
  • 手机作为蓝牙外设
  • 后台长连
  • 具体设备协议

安装

uni_modules/austin-ble 复制到项目的 uni_modules 目录下。

权限说明

Android

  • BLUETOOTH
  • BLUETOOTH_ADMIN
  • ACCESS_FINE_LOCATION
  • BLUETOOTH_SCAN
  • BLUETOOTH_CONNECT

iOS

  • NSBluetoothAlwaysUsageDescription
  • NSBluetoothPeripheralUsageDescription

原生权限或 manifest.json 修改后,需要重新编译并重新安装 App / 自定义基座。

API

方法

方法名 说明
getBleStatus() 获取当前 BLE 状态
requestBlePermissions(options) 申请或检查 BLE 权限
openBluetoothSettings() 打开系统蓝牙相关设置
startBleScan(options) 开始扫描附近 BLE 设备
stopBleScan() 停止扫描
connectBleDevice(options) 连接 BLE 设备
disconnectBleDevice(options) 断开 BLE 设备
discoverBleServices(options) 发现设备服务列表
discoverBleCharacteristics(options) 发现服务下的特征列表
readBleCharacteristicValue(options) 读取特征值
writeBleCharacteristicValue(options) 写入特征值
setBleCharacteristicNotify(options) 开启或关闭通知订阅
requestBleMtu(options) 请求调整 MTU
onBleScanResult(callback) 监听扫描结果
onBleConnectionChange(callback) 监听连接状态变化
onBleCharacteristicValueChange(callback) 监听特征值通知
onBleStateChange(callback) 监听蓝牙状态变化

常用参数

startBleScan(options)

参数名 类型 是否必填 说明
serviceUuids string[] 按服务 UUID 过滤扫描结果
allowDuplicatesKey boolean 是否允许重复上报设备,默认 false
success (res:any)=>void 成功回调
fail (res:any)=>void 失败回调

connectBleDevice(options)

参数名 类型 是否必填 说明
deviceId string 设备唯一标识
success (res:any)=>void 成功回调
fail (res:any)=>void 失败回调

discoverBleCharacteristics(options)

参数名 类型 是否必填 说明
deviceId string 设备唯一标识
serviceId string 服务 UUID
success (res:any)=>void 成功回调
fail (res:any)=>void 失败回调

writeBleCharacteristicValue(options)

参数名 类型 是否必填 说明
deviceId string 设备唯一标识
serviceId string 服务 UUID
characteristicId string 特征 UUID
value string 要写入的数据
encoding string hexutf8,默认 hex
writeType string withResponsewithoutResponse

setBleCharacteristicNotify(options)

参数名 类型 是否必填 说明
deviceId string 设备唯一标识
serviceId string 服务 UUID
characteristicId string 特征 UUID
state boolean true 开启通知,false 关闭通知

返回值字段

通用返回

字段 类型 说明
ok boolean 是否成功
platform string 平台,androidios
action string 当前操作名
deviceId string 设备唯一标识
serviceId string 服务 UUID
characteristicId string 特征 UUID
errCode number 错误码,成功时一般为 0
errMsg string 错误信息
note string 当前操作说明

getBleStatus() 返回字段

字段 类型 说明
supported boolean 是否支持 BLE
enabled boolean 系统蓝牙是否开启
authorized boolean 蓝牙权限是否可用
scanning boolean 当前是否扫描中
permissionState string 权限状态
adapterState string 蓝牙开关状态
supportsMtu boolean 是否支持 MTU 调整
supportsOpenSettings boolean 是否支持打开系统设置
notes string 当前状态说明

扫描结果字段

字段 类型 说明
deviceId string 设备唯一标识
name string 设备名称
localName string 本地广播名称
rssi number 信号强度
connectable boolean 当前广播是否标记为可连接
isConnected boolean 当前页面内记录的连接状态
serviceUuids string[] 广播里的服务 UUID 列表
manufacturerData string 厂商数据,HEX 文本

服务字段

字段 类型 说明
deviceId string 设备唯一标识
serviceId string 服务 UUID
isPrimary boolean 是否主服务

特征字段

字段 类型 说明
deviceId string 设备唯一标识
serviceId string 服务 UUID
characteristicId string 特征 UUID
properties string[] 特征支持能力,如 readwritenotify
descriptors string[] 描述符 UUID 列表

读写结果字段

字段 类型 说明
valueHex string 原始 HEX 结果
valueText string 按 UTF-8 解码后的文本
bytesLength number 数据字节长度

MTU 结果字段

字段 类型 说明
mtu number 实际 MTU 值

使用示例

<script>
import {
  requestBlePermissions,
  startBleScan,
  onBleScanResult,
  connectBleDevice,
  discoverBleServices,
  discoverBleCharacteristics,
  readBleCharacteristicValue,
} from '@/uni_modules/austin-ble'

export default {
  methods: {
    setupBle() {
      requestBlePermissions({
        success: () => {
          startBleScan()
        },
        fail: (res) => {
          uni.showToast({ title: res && res.errMsg ? res.errMsg : '蓝牙权限不可用', icon: 'none' })
        },
      })

      onBleScanResult((device) => {
        console.log('scan device', device)
      })
    },

    connectAndRead(deviceId, serviceId, characteristicId) {
      connectBleDevice({
        deviceId,
        success: () => {
          discoverBleServices({ deviceId })
          discoverBleCharacteristics({
            deviceId,
            serviceId,
            success: () => {
              readBleCharacteristicValue({
                deviceId,
                serviceId,
                characteristicId,
                success: (res) => {
                  console.log('read result', res)
                },
              })
            },
          })
        },
      })
    },
  },
}
</script>

试用方法

  1. 点击“试用插件”
  2. 先点“申请权限”
  3. 点击“开始扫描”
  4. 选中一个可连接设备并尝试连接
  5. 读取服务与特征
  6. 对支持 read / write / notify 的特征做原始调试

注意事项

  • 附近很多普通 BLE 设备只能短连接,读完标准信息后可能会主动断开,这是正常设备行为。
  • 插件解决“扫描、连接、收发数据”,具体写什么指令、是否鉴权、是否允许控制,取决于真实设备协议。
  • requestBleMtu 主要用于后续长数据通信,普通读设备名、读标准信息时通常不需要。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android: 1. android.permission.BLUETOOTH:用于基础蓝牙通信能力。 2. android.permission.BLUETOOTH_ADMIN:用于蓝牙扫描和基础管理。 3. android.permission.ACCESS_FINE_LOCATION:用于 Android 11 及以下系统的 BLE 扫描兼容。 4. android.permission.BLUETOOTH_SCAN:用于 Android 12 及以上扫描附近 BLE 设备。 5. android.permission.BLUETOOTH_CONNECT:用于 Android 12 及以上连接 BLE 设备、发现服务与特征、原始读写和通知订阅。 iOS: 1. NSBluetoothAlwaysUsageDescription:用于扫描、连接和调试 BLE 设备。 2. NSBluetoothPeripheralUsageDescription:用于扫描、连接和调试 BLE 设备。 说明: 本插件仅申请 BLE 通信相关权限,用于扫描附近 BLE 设备、建立连接、发现服务与特征、进行原始读写和通知订阅,不涉及与插件功能无关的权限申请。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。