【问题标题】:iOS convert CFUUID to MAC AddressiOS 将 CFUUID 转换为 MAC 地址
【发布时间】:2012-01-30 06:03:04
【问题描述】:

我知道 CFUUID 是从 MAC 地址和其他一些东西生成的。那么有没有办法从 CFUUID 取回 MAC 地址?

我们有一些蓝牙设备,用户只知道写在设备上的 MAC 地址的最后 3 部分。所以我们想给用户和选项来选择正确的设备。在 iOS 端,看起来我们只有 CFUUID。那么有没有办法将 UUID 转换回 mac 地址?

Or even better would be if there's a way to get a peripheral's MAC address directly instead of UUID, but doesn't seem like that's possible

谢谢

【问题讨论】:

  • CFUUID 不是从 MAC 生成的。你会如何得出这个结论?我很确定获取 MAC 并通过 HTTP 或任何其他协议发送它会更容易。
  • 我不是在谈论 iPhone 的 UUID,而是在谈论 Peripheral 的 UUID。我在网上看到 UUID 是根据 MA​​C 地址和当前时间的组合创建的。
  • 您应该更清楚您是在 CoreBluetooth 的上下文中谈论 CFUUID,更具体地说是在 CBPeripheral 的上下文中。奇怪的是,CBPeripherals 具有 UUID 属性而不是地址属性,因为它们所代表的蓝牙设备具有地址而不是 UUID。因此,附加到 CBPeripheral 的特定 UUID 基于蓝牙设备地址是有道理的,但我还没有看到任何确认。
  • 请问您为什么要这样做?
  • 显示人类可读的设备名称而不是大的十六进制字符串会更加用户友好。

标签: ios5 core-bluetooth


【解决方案1】:

有一种方法可以获取 ios 设备的 mac 地址。但仅适用于 ios8 及更高版本。没有私有 api .https://github.com/Baoge2012/MacAddressLibDemo

【讨论】:

    【解决方案2】:

    我一直在寻找一种方法来部署独立于平台的 BLE 设备静态配置。我越来越气馁(Apple 的 UUID 是 +/- 无意义的,并且可以在大多数/所有其他平台上获得的 MAC/BDADDR 无法从 CoreBluetooth 访问)。幸运的是,我注意到“设备信息服务”配置文件 (0x180A) 包含一个“系统 ID”属性 (0x2A23),它对设备的唯一 MAC/BDADDR 地址进行编码。但是,我不知道 BLE 设备是否必须公开此服务。

    【讨论】:

      【解决方案3】:

      好吧,正如您可能从 cmets 那里了解到的那样,答案很明显:不。 (实际上)不可能获得生成特定 UUID 的种子。假设实际上生成你的 UUID 的算法确实使用了你设备的 MAC 地址来生成它,我猜你不能保证你使用的 UUID 生成器就是这种情况,除非你可以访问 UUID 生成器代码或算法(UUID Version 1 probably?),这对您来说不是不透明的操作(立即破坏了 uuid 生成算法的目的)。

      当您说 UUID 的生成可能使用设备的 MAC 地址时,您显然是在做某事,其他组件,如时间戳、散列、UDID(iOS 设备)等。事实是 MAC 地址可能只是用于生成 UUID 的众多因素之一,因此如果您要花费大量计算能力尝试从同一系统下生成的大量 UUID 样本中解构它相同的条件;我们可能会谈论一台浪费计算能力的量子计算机,试图探索与可观察宇宙中的粒子一样多的组合,因此您可以获得一个 MAC 地址,如果您愿意,您也可以从蓝牙外围设备中获得一个特性,并顺便击败再次拥有 UUID 的目的。

      另一方面,除了有人对您的问题发表的评论之外:您发现 UUID 如此无聊的原因是建立在上一段的想法之上,这样您就可以避免冲突:生成重复项不仅仅是来自生成的重复项由您的计算机生成,但由每天每时每刻由每个设备生成的所有其他设备生成(用于验证请求、在数据库中创建字符串索引键或识别服务和特征),因此您的酷服务或特征命名为:

      AAAAAAAA-BBBB-CCCC-DDDD-EEEEFFFF6666 
      

      不会与另一个具有相同 UUID 的酷 foo 服务或特性混淆。

      一般而言,有关更多信息,请查看维基百科或仅查看核心蓝牙编程指南,形成开发人员门户。它仍处于 NDA 之下,因此您必须是注册的 iOS 开发者并拥有有效的开发者计划凭证才能阅读它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        • 2017-10-07
        • 1970-01-01
        • 1970-01-01
        • 2020-08-08
        • 2014-03-13
        相关资源
        最近更新 更多