美文网首页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读写设备信息(一)

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