美文网首页iOS
ios蓝牙BLE读写设备信息(一)

ios蓝牙BLE读写设备信息(一)

作者: 幻风0628 | 来源:发表于2019-04-29 11:08 被阅读0次

前言:最近公司的一个关于beacon设备管理的app端,用到蓝牙BLE,第一次接触踩了不少坑,大致介绍一下开发的思路。

初始化蓝牙

项目中使用的框架<CoreBluetooth/CoreBluetooth.h> 蓝牙管理类CBCentralManager

self.bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

代理监听蓝牙状态,蓝牙状态可用的情况下扫描外设,这里ServiceUUID需要找硬件厂商获取,扫描特定的beacon设备,如果ServiceUUID为空,那就是扫描所有的蓝牙设备。

- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
    switch (central.state)
    {
        case CBManagerStateUnsupported:
            [ToolClass showMsg:@"蓝牙不可用"];
            break;
        case CBManagerStateUnauthorized:
            [ToolClass showMsg:@"蓝牙未授权"];
            break;
        case CBManagerStatePoweredOff:
            [ToolClass showMsg:@"蓝牙未打开"];
            break;
        case CBManagerStatePoweredOn:
        {
            CBUUID *uuid = [CBUUID UUIDWithNSUUID:ServiceUUID];
            [self.bluetoothManager scanForPeripheralsWithServices:@[uuid] options:nil];
        }
            break;
        case CBManagerStateUnknown:
            [ToolClass showMsg:@"蓝牙状态未知"];
        default:
            NSLog(@"不明情况了");
    }
}

扫描后发现设备

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
}
image.png

注意:坑来了,这里扫描到蓝牙外设之后,获取的peripheral中只有name、identifier、RSSI等属性,但是项目中要求要读取设备的major、minor值、电量等等。只有通过获取蓝牙广播的信息advertisementData获取,此时安卓端已经能够通过广播读取全部信息,iOS中获取的广播信息advertisementData中的字段并没有这些字段,网上查了诸多资料都没能解决。后来发现了一篇文档,附上地址 https://blog.csdn.net/zh_kun/article/details/50920434 上面介绍外设设置成了iBeacon模式了,ibeacon会限制ios可接受的广播信息。我就尝试着让硬件工程师将广播模式改成了ble模式,终于从advertisementData获取到了kCBAdvDataManufacturerData,需要通过顺序截取相应的属性值。

后记:刚拿到这个项目时准备使用iOS中的CLBeaconRegion进行开发,后来发现只能获取蓝牙属性值,不能进行连接读写,果断放弃。

未完待续

相关文章

  • ios蓝牙BLE读写设备信息(一)

    前言:最近公司的一个关于beacon设备管理的app端,用到蓝牙BLE,第一次接触踩了不少坑,大致介绍一下开发的思...

  • Android蓝牙4.0 Ble读写数据详解 -1

    Android蓝牙4.0 Ble读写数据详解 -1 Android蓝牙4.0 Ble读写数据详解 -2 因为最近公...

  • Android蓝牙4.0 Ble读写数据详解 -2

    Android蓝牙4.0 Ble读写数据详解 -2 Android蓝牙4.0 Ble读写数据详解 -1 上一篇说了...

  • iOS CoreBluetooth

    CoreBluetooth 在iOS和Mac应用中,CoreBluetooth框架用来与BLE(低功耗蓝牙)设备通...

  • iOS开发蓝牙

    iOS蓝牙模块支持BLE4.0设备通讯。 在使用蓝牙的过程中,如果是iOS10及以上机型需要在info.plist...

  • iOS蓝牙开发

    iOS蓝牙模块支持BLE4.0设备通讯。 在使用蓝牙的过程中,如果是iOS10及以上机型需要在info.plist...

  • iOS BLE蓝牙基础详解(两种模式)

    iOS BLE框架详解 概述 使用蓝牙开发无外乎两种,当做主设备(Central)或者外设(Peripheral)...

  • Linux BLE使用说明

    1.启动蓝牙适配器与搜索蓝牙 2.使用gatttool与BLE设备通讯 3.与BLE设备非交互式通讯 4.BLE的...

  • CoreBluetooth

    iOS-BLE蓝牙开发持续更新 - 简书 蓝牙打印小票 一个第三方 IOS BLE4.0蓝牙和外设连接和收发数据的...

  • 蓝牙相关基础知识

    蓝牙常见名称和缩写 BLE:(Bluetooth low energy)蓝牙4.0设备因为低耗电,也叫BLE pe...

网友评论

    本文标题:ios蓝牙BLE读写设备信息(一)

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