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

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

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

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

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

【问题讨论】:

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

标签: ios objective-c macos bluetooth-lowenergy objective-c-2.0


【解决方案1】:

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

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

【讨论】:

  • 外设mac地址不可能。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多