iOS 蓝牙开发获取kCBAdvDataManufacturer

作者: Noskthing | 来源:发表于2017-09-29 23:43 被阅读219次

    出现问题的部分逻辑非常的简单,我们的蓝牙产品在广播包中会以某个字节标识自己的类型,扫描到设备以后代理方法中会以字典的形式提供给我们。

    - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *, id> *)advertisementData RSSI:(NSNumber *)RSSI
    {
            id data = advertisementData[@"kCBAdvDataManufacturerData"];
    }
    

    要解决问题之前必须要声明一点,在蓝牙的标准协议当中,设备的发现流程如下。

    发现流程

    按照协议,第15个字节就是设备的类型。但是提供给客户之后,发现在iOS 8上设备类型获取错误,iOS 9及以后版本没有问题。出现这个情况的原因在于,iOS 8及以前kCBAdvDataManufacturerData这个数据提供的是scan response (SCAN_RSP),但是iOS 9及以后会把advertising packet (ADV_IND)scan response (SCAN_RSP)两部分合并在一起提供给了我们。所以不同版本的情况下我们获取kCBAdvDataManufacturerData会出现不同。

    官方相关问答

    相关文章

      网友评论

        本文标题:iOS 蓝牙开发获取kCBAdvDataManufacturer

        本文链接:https://www.haomeiwen.com/subject/bkwwextx.html