iOS CBCentralManager以及CBCentralManagerDelegate

CBCentralManager对象用于管理客户端扫描设备、连接设备和数据传输

相关属性

  • state : 获取当前CentralManager状态

    CBManagerStateUnknown = 0,//未知 
    CBManagerStateResetting,//复位 
    CBManagerStateUnsupported,//该设备不支持蓝牙低功耗 
    CBManagerStateUnauthorized,//该程序无权使用蓝牙低功耗 
    CBManagerStatePoweredOff,//蓝牙关闭 
    CBManagerStatePoweredOn,//蓝牙打开
    
  • isScanning:中心设备是否正在扫描

初始化

- (instancetype)initWithDelegate:(nullable id<CBCentralManagerDelegate>)delegate queue:(nullable dispatch_queue_t)queue;

- (instancetype)initWithDelegate:(nullable id<CBCentralManagerDelegate>)delegate queue:(nullable dispatch_queue_t)queue options:(nullable NSDictionary<NSString *, id> *)options;
  • delegate:设置代理
  • queue:指明在哪个队列处理事件,为nil时表示在主线程处理
  • options:这个字典有俩个官方的key
    CBCentralManagerOptionShowPowerAlertKey:提示蓝牙开关未打开时会弹出警告框
    CBCentralManagerOptionRestoreIdentifierKey:系统使用此UID来识别特定的CentralManager。 因此,为了继续执行应用程序,UID必须保持不变,以便CentralManager成功恢复。

扫描和停扫

- (void)scanForPeripheralsWithServices:(NSArray<CBUUID *> *)serviceUUIDs options:(NSDictionary<NSString *,id> *)options;
  • serviceUUIDs:为nil时,会扫描正在广播的所有Peripheral。如果你指定某个Service或者一组Service,只能扫描提供这些Service的Peripheral。(Service里面放的是CBUUID)
  • options:这个字典有俩个官方的key
    CBCentralManagerScanOptionAllowDuplicatesKey:为NO,表示不会重复扫描已经发现的设备。为YES,扫描中会出现已经扫到的设备。默认为NO
    CBCentralManagerScanOptionSolicitedServiceUUIDsKey:以一个数组的形式存在,指定这个选项后central便会找指定的服务的CBUUID
- (void)stopScan;

连接和取消连接

连接设备

- (void)connectPeripheral:(CBPeripheral *)peripheral options:(NSDictionary<NSString *,id> *)options;
  • peripheral:将要连接的peripheral,需要保持一下peripheral
  • options:这个字典有俩个官方的key
    这些key值和蓝牙后台有关,没有多做研究
    CBConnectPeripheralOptionNotifyOnConnectionKey
    CBConnectPeripheralOptionNotifyOnDisconnectionKey
    CBConnectPeripheralOptionNotifyOnNotificationKey

取消某个设备的连接Peripheral

- (void)cancelPeripheralConnection:(CBPeripheral *)peripheral;

获取Peripherals

通过Peripheral的serviceUUID获取当前已经连接的Peripheral

- (NSArray<CBPeripheral *> *)retrieveConnectedPeripheralsWithServices:(NSArray<CBUUID *> *)serviceUUIDs;

通过Peripheral的Identifiers获取对应的Peripheral

- (NSArray<CBPeripheral *> *)retrievePeripheralsWithIdentifiers:(NSArray<NSUUID *> *)identifiers;

关于CBCentralManager代理方法

监听Peripheral连接状态

连接成功会被调用

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral;

断开连接会被调用

- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error;

连接失败会被调用

- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error;

获取Peripheral的状态

当centralManager扫描到peripheral会被调用

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI;
- (void)centralManager:(CBCentralManager *)central didRetrieveConnectedPeripherals:(NSArray<CBPeripheral *> *)peripherals;

- (void)centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray<CBPeripheral *> *)peripherals;

监听CentralManager的状态

当CentralManager状态变化的时候会被调用

- (void)centralManagerDidUpdateState:(CBCentralManager *)central;
- (void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary<NSString *,id> *)dict;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值