V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
czwen1993
V2EX  ›  iDev

关于低功耗蓝牙问题的请教。

  •  1
     
  •   czwen1993 · 2015-12-28 00:24:05 +08:00 · 3432 次点击
    这是一个创建于 3286 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前提:不上架 App Store

    我想从一个低功耗蓝牙设备获取他的 mac 地址。
    但是 这个设备并没有 做 Device Information ( 0x180A ) 这个模块。。。。坑死我了。。。。。
    求一种办法能获取到它的 mac 地址。。
    感激感激。能献上解决方案的 V 友,我愿意献上小小心意!
    当然,最希望硬件方面的作出修改。

    http://stackoverflow.com/questions/34482237/can-ios-get-bluetooth-device-mac-address-without-device-information
    16 条回复    2016-01-25 09:52:27 +08:00
    mobileloft
        1
    mobileloft  
       2015-12-28 09:20:52 +08:00
    你可以抓包看下设备广播信息里面的内容是什么。
    czwen1993
        2
    czwen1993  
    OP
       2015-12-28 10:02:08 +08:00 via iPhone
    @mobileloft 设备的文档我是有的,我只想找一个唯一的标志, Android 使用 mac 地址(太 tm 简单了)
    airqj
        3
    airqj  
       2015-12-28 10:29:11 +08:00
    让设备广播
    然后抓包不就有了
    czwen1993
        4
    czwen1993  
    OP
       2015-12-28 11:48:01 +08:00
    @airqj 是 notify 的意思吗?
    wanganjun
        5
    wanganjun  
       2015-12-28 12:53:52 +08:00
    想要唯一标识可以用 CBPeripheral.identifier
    allenforrest
        6
    allenforrest  
       2015-12-28 13:02:36 +08:00
    不要想了, UUID 和 Mac 不是一个概念, CB 的 API 只能获取 UUID , Mac 是不可能拿到的(处于安全考虑)
    如果这个蓝牙设备可以修改的话,让它在广播的设备名里加上 Mac
    czwen1993
        7
    czwen1993  
    OP
       2015-12-28 13:44:02 +08:00
    @allenforrest 我的 app 不上架 App Store ,有私有的方法吗?
    airqj
        8
    airqj  
       2015-12-28 13:48:54 +08:00
    设备在广播的时候是带有 mac 地址的
    找个蓝牙设备器一试便知
    czwen1993
        9
    czwen1993  
    OP
       2015-12-28 13:51:43 +08:00
    @airqj 我不是很搞得懂你们说的广播。你是说 Device Information 这个 service 吗?
    allenforrest
        10
    allenforrest  
       2015-12-28 14:10:27 +08:00
    @czwen1993 没有私有方法,只能获取到给这个蓝牙设备分配的 UUID ( CBPeripheral.identifier ),基本上可以认为是唯一的(除非换 iOS 设备或者 DFU 刷机之类的 maybe ),如果你只是需要一个唯一标识,那取 UUID 就够了。如果一定要取 MAC ,除了改设备之外,没什么好的办法。
    shanksxiao
        11
    shanksxiao  
       2015-12-28 14:19:10 +08:00
    两种办法:
    1 、因为 iOS CoreBluetooth 现在不支持直接获取 mac 地址,但会在广播包里给你传 uuid ,你可以在服务端建立一个完整的 uuid 对应 mac 地址的表,得到 uuid 后通过 HTTP 查询。
    2 、硬件修改广播信息的内容,其中设备名一项可以直接修改为当前蓝牙 Mac 地址的 HEXString 。
    czwen1993
        12
    czwen1993  
    OP
       2015-12-28 15:21:48 +08:00
    @shanksxiao 你说的广播 是指 Device Information 这个 service 吗?
    sloppysop
        13
    sloppysop  
       2015-12-28 15:26:09 +08:00
    有没有可能直接通过蓝牙设备的 USB 充电数据线直接读取设备信息呢?
    daniellu
        14
    daniellu  
       2015-12-29 13:29:08 +08:00
    @shanksxiao UUID 也未必靠谱的啊,有些板子的 UUID ,可能都是一样的……
    shanksxiao
        15
    shanksxiao  
       2015-12-30 09:55:10 +08:00
    @daniellu 表达有点问题,我是说那个 identifier
    LSBs
        16
    LSBs  
       2016-01-25 09:52:27 +08:00
    ios corebluetooth 是拿不到 Mac 地址的只能拿到一个 identifier. identifier 也不可靠会变化. 可以让设备发一个 发一个 notification 你订阅这个设备,让硬件把他的 Mac 地址传给你,硬件是知道自己的 Mac 地址的.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4544 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:04 · PVG 12:04 · LAX 20:04 · JFK 23:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.