如何解决安卓/IOS获取蓝牙ID不一致问题

本文探讨了在安卓和iOS小程序中使用低能蓝牙(BLE)时遇到的蓝牙ID不一致问题,即Android获取deviceId为MAC地址,而iOS获取为uuid。通过版本判断和解析广播数据,提出了一种适配器模式的解决方法,实现跨平台数据一致性。
摘要由CSDN通过智能技术生成

不知道大家对低能蓝牙的技术应用了解的怎么样,其实这是一个比较广的应用,比如可以应用于一些信标、家庭娱乐或者医疗方面都有应用。

01 前言

因为小程序官方是支持接入低能蓝牙(BLE)的,所以在一个项目中也尝试使用如何接入蓝牙,我们从微信的官方网站就可以清楚知道如何使用,但是其中也是有很多坑的。本着学习的心态,自己也手把手带你摸坑,一起处理一些平台兼容性的问题以及一些逻辑判断问题。

02 问题抛出

因为蓝牙在IOS客户端6.5.6版本开始支持,安卓6.5.7开始支持,所以一开始我们就应该判断版本问题,以免后面的功能不能使用。

我们从文档上面看到这样一段话:

由于系统限制,Android 上获取到的 deviceId 为设备 MAC 地址,iOS 上则为设备 uuid。因此 deviceId 不能硬编码到代码中。

看到这里我就想着,完犊子了,因为我们的手机平台有安卓和苹果,唯一标识蓝牙的就是deviceId,但是苹果搜索出来就不是这个了,而是uuid的一串字符串。因为苹果官方认为透露deviceId(MAC地址)会有安全问题,索性直接屏蔽了。

03 使用方法

为了保证本文的完整性,我就大概介绍一下怎么使用在小程序接入低能蓝牙,大家也可以去官网看一下。

  • 初始化蓝牙模块
openBluetoothAdapter() {
   
    var that = this;
    if (wx.openBluetoothAdapter) {
   
      wx.openBluetoothAdapter({
   
        success: function (res) {
   
          wx.showToast({
   
            title: "正在获取蓝牙列表",
            icon: "loading",
          });
          that.getBluetoothAdapterState();
        },
        fail: function (err) {
   
          wx.showModal({
   
            title: "提示",
            content: "请先打开蓝牙",
            showCancel: false,
          });
          that.stopBluetoothDevicesDiscovery();
        },
      })
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值