使用 MAC ios 连接到 BLE 设备

Posted

技术标签:

【中文标题】使用 MAC ios 连接到 BLE 设备【英文标题】:Connect to a BLE device using MAC ios 【发布时间】:2016-09-08 10:50:23 【问题描述】:

我正在开发适用于 ios (Objective-C) 的应用程序。

我正在寻找一种连接到 BLE 设备的方法,以便您可以指定此设备的 MAC 或 UUID。

目前我有两个同名的 BLE 设备,所以应用程序无法区分两者,这会带来很多问题(这些设备没有相同的功能)。

有没有办法在连接到BLE设备时指定MAC或UUID?

【问题讨论】:

没有。 CoreBluetooth 将创建一个基于 MAC 的标识符,但您通常会通过它们与名称相结合的广告服务来区分设备。一旦用户最初连接到设备,您就可以存储标识符。下次看到该设备时,它将具有相同的标识符。 【参考方案1】:

RSSI 信号强度发现区分两个或多个设备。 如果有一次 UUID 从外设获取,则还要区分外设。

注意:iOS 不允许读取外围设备的 MAC 地址。

【讨论】:

外设mac地址不可能。【参考方案2】:

设备的 MAC 不可用,也没有任何其他特别有用的标识符。然而,由于“这些设备没有相同的功能”,它们应该有不同的宣传服务。调用 scanForPeripherals(withServices:options:) 时,您应该传递您感兴趣的特定服务或服务。这对于性能来说要好得多,并且还会自动过滤掉您不感兴趣的设备。为 serviceUUID 传递 nil 应该只为通用 BLE 扫描仪完成。

如果您控制设备固件,您可以添加服务来识别设备类型,或者在制造商的广告数据中添加信息以在扫描时区分设备。

如果这些设备宣传相同的服务并且在其他方​​面完全相同,那么您需要连接到两者并查询它们以确定您想要的设备。但是,您仍然不会收到 MAC,除非设备通过某些特性提供它。

通常,给定设备将继续具有相同的 CBPeripheral UUID,这可用于重新连接到以前已知的设备。但是,如果设备从不安全配对,则此 UUID 也不总是稳定的。

【讨论】:

以上是关于使用 MAC ios 连接到 BLE 设备的主要内容,如果未能解决你的问题,请参考以下文章

Android上的BLE(蓝牙低功耗蓝牙),创建并重新连接到并不总是存在的设备

NFC 或 BLE 读取设备的 Mac 地址

Android 8.1 连接到调用 connectGatt 的 BLE 外围设备。回调总是说断开连接。从不连接

来自 2 个 BLE 设备的 ios 通知

外围设备未连接到 iOS

目标 C-是不是可以从 iWatch 连接到 BLE 设备?