使用 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(蓝牙低功耗蓝牙),创建并重新连接到并不总是存在的设备