![]() | 1 mobileloft 2015-12-28 09:20:52 +08:00 你可以抓包看下设备广播信息里面的内容是什么。 |
![]() | 2 czwen1993 OP @mobileloft 设备的文档我是有的,我只想找一个唯一的标志, Android 使用 mac 地址(太 tm 简单了) |
![]() | 3 airqj 2015-12-28 10:29:11 +08:00 让设备广播 然后抓包不就有了 |
![]() | 5 wanganjun 2015-12-28 12:53:52 +08:00 想要唯一标识可以用 CBPeripheral.identifier |
![]() | 6 allenforrest 2015-12-28 13:02:36 +08:00 不要想了, UUID 和 Mac 不是一个概念, CB 的 API 只能获取 UUID , Mac 是不可能拿到的(处于安全考虑) 如果这个蓝牙设备可以修改的话,让它在广播的设备名里加上 Mac |
![]() | 7 czwen1993 OP @allenforrest 我的 app 不上架 App Store ,有私有的方法吗? |
![]() | 8 airqj 2015-12-28 13:48:54 +08:00 设备在广播的时候是带有 mac 地址的 找个蓝牙设备器一试便知 |
![]() | 10 allenforrest 2015-12-28 14:10:27 +08:00 @czwen1993 没有私有方法,只能获取到给这个蓝牙设备分配的 UUID ( CBPeripheral.identifier ),基本上可以认为是唯一的(除非换 iOS 设备或者 DFU 刷机之类的 maybe ),如果你只是需要一个唯一标识,那取 UUID 就够了。如果一定要取 MAC ,除了改设备之外,没什么好的办法。 |
![]() | 11 shanksxiao 2015-12-28 14:19:10 +08:00 两种办法: 1 、因为 iOS CoreBluetooth 现在不支持直接获取 mac 地址,但会在广播包里给你传 uuid ,你可以在服务端建立一个完整的 uuid 对应 mac 地址的表,得到 uuid 后通过 HTTP 查询。 2 、硬件修改广播信息的内容,其中设备名一项可以直接修改为当前蓝牙 Mac 地址的 HEXString 。 |
![]() | 12 czwen1993 OP @shanksxiao 你说的广播 是指 Device Information 这个 service 吗? |
![]() | 13 sloppysop 2015-12-28 15:26:09 +08:00 有没有可能直接通过蓝牙设备的 USB 充电数据线直接读取设备信息呢? |
14 daniellu 2015-12-29 13:29:08 +08:00 @shanksxiao UUID 也未必靠谱的啊,有些板子的 UUID ,可能都是一样的…… |
![]() | 15 shanksxiao 2015-12-30 09:55:10 +08:00 @daniellu 表达有点问题,我是说那个 identifier |
![]() | 16 LSBs 2016-01-25 09:52:27 +08:00 ios corebluetooth 是拿不到 Mac 地址的只能拿到一个 identifier. identifier 也不可靠会变化. 可以让设备发一个 发一个 notification 你订阅这个设备,让硬件把他的 Mac 地址传给你,硬件是知道自己的 Mac 地址的. |