更新记录

v1.0.2(2025-06-05) 下载此版本

v1.0.2

v1.0.1(2025-06-03) 下载此版本

v1.0.1

v1.0.0(2025-06-03) 下载此版本

v1.0.0

查看更多

平台兼容性

uni-app(4.35)

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

uni-app x(4.35)

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

微信小程序低功耗蓝牙插件

插件简介

  • 基于 uni-app、Vue3 和 TypeScript 的轻量级蓝牙组件,支持一次连接,多页面共享使用。
  • 无需重复连接蓝牙设备,连接一次即可在所有页面直接调用蓝牙功能。
  • 蓝牙开关状态可实时同步到页面。
  • 使用 Vue3 的 <script setup lang="ts"> 语法糖开发,简洁高效。
  • 对于 Vue2 项目,可通过将代码转换为选项式 API 以实现兼容。

使用方法

1. 安装插件

将插件文件复制到 UniApp 项目的 components/ 目录中。

2. 引入组件

在需要的页面或组件中引入蓝牙组件:

<template>
  <Bluetooth />
</template>

<script setup lang="ts">
import Bluetooth from "@/components/zy-Bluetooth/index.vue";
</script>

或者将其作为页面使用,在 pages.json 中配置路径:

{
  "pages": [
    {
      "path": "pages/zy-Bluetooth/index",
      "style": {
        "navigationBarTitleText": "蓝牙",
        "enablePullDownRefresh": true
      }
    }
  ]
}

3. 发送数据示例

<template>
<button :loading="isScan" @click="handleSendData">发送数据</button>
</template>

<script setup lang="ts">
import { computed, unref } from "vue";
import { useSendBLEData } from "../components/zy-Bluetooth/hooks/useBluetooth";

const { hasConnectedDevice, writeBLEData, stopBluetoothScan } =
  useSendBLEData();

const isConnectedDevice = computed(() => hasConnectedDevice());

const isScan = ref(false)

const handleSendData = () => {
  if (!unref(isConnectedDevice)) {
    uni.navigateTo({ url: "/pages/zy-bluetooth/index" });
    return;
  }
  if (isScan.value) return
  let first = true;
  writeBLEData({
    valueChangeCallback: (epc) => {
      console.log(epc, "epc--------------");
      if (!first) return;
      first = false;
      // 这里是扫描一次就发送关闭扫描功能,
      //如果不需要关闭,则可以删除
      stopBluetoothScan({
        valueChangeCallback: () => {
          isScan.value = false;
        },
      });

      if (!epc) return;
      console.log(epc);
    },
    failCallback: () => {
      isScan.value = false;
    },
    startScanCallback: () => {
      isScan.value = true;
    },
  });
};
</script>

4. 功能说明

  • 蓝牙设备扫描:自动发现周围蓝牙设备。
  • 设备连接:支持与目标设备建立稳定连接。
  • 数据传输:实现蓝牙数据的高效发送与接收。
  • 多页面共享:一次连接,全局可用。

注意事项

  1. 确保设备已开启蓝牙功能。
  2. 插件需运行在支持蓝牙的设备上。
  3. 使用 TypeScript 时,请确保项目已正确配置类型支持。
  4. 目前 useBluetooth 中使用了固定了 SERVICE_UUID、WRITE_UUID、NOTIFY_UUID,逻辑代码已经存在,可自行赋值

结语

本插件旨在简化蓝牙功能开发,提升开发效率。如有建议或问题,欢迎反馈!

隐私、权限声明

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

蓝牙

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

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

包含

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问