BLE 之centralManagerDelegate类介绍

来源:互联网 发布:scp 端口号 编辑:程序博客网 时间:2024/06/18 10:07

概述

 CBCentralManager代理 协议定义了代理对象CBCentralManager必须采取的方法,一些可选的方法能够被用来发现、连接、以及检索peripheral的服务,被要求实现的方法仅仅只有当Central管理者更新状态时回调使用,用来表明当前central设备是否可利用。

任务

检测连接的peripheral设备

-centralManager:didConnectPeripheral:当和一个peripheral设备成功建立连接时调用。

-centralManager:didDisconnectPeripheral:error:当已经与peripheral建立的连接断开时调用。

-centralManager:didFailToConnectPeripheral:error:当central管理者与peripheral建立连接失败时调用。

发现和检索peripheral

-centralManager:didDiscoverPeripheral:advertisementData:RSSI:当central管理者正在寻找时发现了一个peripheral时调用。

-centralManager:didRetrieveConnectedPeripherals:当central管理者检索与系统连接的一系列peripheral设备时调用。

-centralManager:didRetrievePeripherals:当central管理者检索一系列已知的peripherals的设备时调用。

监视central管理器的状态变化

-centralManagerDidUpdateState:当central管理器的状态发生更新时调用。

-centralManager:willRestoreState:当central管理器涉及到要被系统来恢复时调用。

实例方法

-centralManager:didConnectPeripheral:当与peripheral成功建立连接时调用。当调用connectPeripheral:options成功时,此方法被调用,当然也可以专门实现该方法来设置peripheral的代理以及发现它的服务。

-centralManager:didDisconnectPeripheral:error:当已经建立的连接被断开时调用。这个方法在connectPeripheral:options方法建立的连接断开是调用,如果断开连接不是有cancelPeripheralConnection方法发起的,那么断开连接的详细信息就在error参数中,当这个方法被调用只有peripheral代理中的方法不在被调用。注意:当peripheral断开连接时,peripheral所有的service、characteristic、descriptors都无效。

-centralManager:didDiscoverPeripheral:advertisementData:RSSI:当central管理器发现一个peripheral时调用,广播的数据被以AdvertisementDataRetrievalKeys键值的形式接受。你必须建立一个本地的副本,当需要对他进行操作时。在一般的情况下,你的APP要保证能够在一定的范围内自动连接还是上peripheral,你能够使用RSSI的值来判断与发现的peripheral的距离。

-centralManager:didFailToConnectPeripheral:error:这个方法在方法connectPeripheral:options建立的连接断开时调用,应为建立连接的动作是不能超时的,通常在失败连接时你需要再次试图连接peripheral。

-centralManager:didRetrieveConnectedPeripherals:这个返回retrieveConnectedperipherial调用的值,这里面的数组参数包括系统中与其他APP连接的peripheral,当指定实现这个方法时便可以重新连接APP感兴趣的peripheral。

-centralManager:didRetrivePeripheral:这个方法返回retriveperipherals的数组,该数组能够与central提供的UUID来进行匹配。如果指定实现它,那么便可以重新连接已知的peripheral。

-centralManager:willRestoreState:这个方法是说coreBluetooth为APP提供了一个保留和回复的功能,当APP需要在后台完成蓝牙相关的任务时,这是你第一个调用的方法,用这个方法可以是APP与系统蓝牙进行同步。

-centralManagerDidUpdateState:当central管理器更新状态时调用。这个方法是必须实现的,为了确保当前的central设备是否支持BLE以及当前是否可以被利用,当检测到central蓝牙已经打开时,需要做一些操作,比如开始寻找Peripheral。当状态改变为CBCentralManagerStatePoweredOff时,会结束当前的寻找以及断开当前连接的peripheral。当检测到PoweredOff这个状态是所有的APP必须重新开始检索以及寻找。

常亮

检索广播数据的keys

CBAdverisementDataLocalNameKey:一个包含了peripheral设备名称的字符串。

CBAdvertisementDataManudfactureDataKey:一个包含了制造商信息的NSdata对象。

CBAdvertisementDataServiceDataKey:这个keys是一个CBUUID的对象代表了CBServicesUUID,这个NSData代表了服务指定的Data。

CBAdvertisementDataServiceUUIDsKey:这是一包含了服务的UUID的数组。

 CBAdvertisementDataOverflowServiceUUIDsKey:这个数组包含了一个或者更多的CBUUID对象,这些对象代表了被广播在溢出区域的数据,关于这个keys的详细介绍请看我的上一篇译文《CBPeripheralManager 类介绍》。

CBAdvertisementDataTxPowerLeverlKey:这个NSnumber对象包含了peripheral传输功率的强弱。如果peripheral广播的数据中包含了传输的功率是这个key值将可以被使用,使用RSSI和传输功率可以计算之间的距离。

CBAdvertisementDataIsconnectable:这个BOOL值指明当前广播的事件是否可连接。

CBAdvertisementDataSolicitedServiceUUIDsKEy:一个包含了CBServices UUIDs的数组。

译文如果又不当的地方,还请大家多指点!!

0 0
原创粉丝点击