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 地址的.
|