概述
CBCentralManager对象是被用来管理central发现以及管理远端设备(用CBperipheral创建的对象)的。包括寻找、发现、以及连接peripheral。
在使用CBCentralManager方法之前需要使用CBCentralManagerStatePoweredOn常亮来判断central设备当前的状态,指明当前的central设备是不是支持BLE以及是否处于蓝牙打开、可利用状态。
任务
初始化central管理器
-initWithDelegate:queue:初始化central管理器以及指定他的代理方法和运行队列。
-initWithDelegate:queue:options:初始化central管理器以及指定他的代理方法和运行队列、以及初始化选项。
建立或者取消与peripheral的连接
-connectPeripheral:options:与一个本地的peripheral建立连接。
-cancelPeripheralConnection:取消一个与peripheral正在运行或者挂起的连接。
检索一系列的peripheral设备
-retrieveConnectedPeripheralWithService:返回当前系统连接的一系列的有特定Services的peripheral。
-retrivePeripheralsWithIdentifiers:返回一系列的标识符已知的peripherals。
-retriveConnectedPeripherals:检索出一系列当前与系统连接的peripherals,但是在IOS 7以后用retrieveConnectedPeripheralWithService方法取代。
-retrievePeripherals:检索出UUID已知的peripherals,但是在IOS 7之后被-retrivePeripheralsWithIdentifiers方法取代。
开始或者停止找peripherals
-scanForPeripheralsWithServices:options:开始找peripheral正在广播的services。
-stopScan:要求Central管理器停止当前找的动作。
监控参数
state:返回当前centrals管理器的状态。当central管理者初始化创建了central对象,那么这个State值默认是CBCentralManagerStateUnknown,当central的状态改变,会回调centralManagerDidUndateState:这个代理方法。而state一些可能的值如下(它们是一些枚举的类型):
CBCentralManagerStateUnknown:当前central管理器的状态未知,马上会有更新。
CBCentralManagerStateResetting:与系统连接的service回随时断开,这个状态也会马上更新。
CBCentralManagerStateUnsuported:当前的平台不支持BLE。
CBCentralManagerStateUnauthorized:当前APP没被授权使用BLE。(自己觉得应该是在Plist文件中没假如BLE的key)。
CBCentralManagerStatePoweredOff:当前设备的蓝牙处于关闭状态。
CBCentralManagerStatePoweredOn:蓝牙已经打开可以使用了。
delegate:你想要接受centrals时间的代理对象。至于关于central管理者代理的具体介绍请看下篇译文《BLE之CBCentralManagerDelegate类介绍》
常亮
central管理器初始化选项
这个keys值被用在initWithDelegate:queue:options方法中。
CBCentralManagerOptionShowPowerAlertKey:这个key值是一个NSnumber类型的对象,默认情况为NO,这个值是用来要求系统当蓝牙处于关闭状态时是否弹出一个警告框给用户,当然前期是central管理器被实例化了。
CBCentralManagerOptionsRestoreIdentifierKey:这个是一个字符串,当central管理器被实例化时分配的UID,这个UID相当重要,而且要相同当central被成功修复时。
寻找Peripheral的选项
这个Keys被用在scanForPeripheralsWithServices:options:方法中。
CBCentralManagerScanOptionAllDuplicatesKey:这也是一个NSNUmber类型的对象,当指定其为YES时,说明过滤功能是不启用的,也就是说central每次都能接受到来自peripherals的广播包数据,这样的话对电池的寿命会有很大的影响。当设定为NO是每次寻找都会合并相同的peripheral。如果这个key值不指定则默认为NO。
CBCentralManagerSCanOptionSolicitedServiceUUIDsKey:想要扫描的服务的UUID,以一个数组的形式存在。也就是说指定这个选项后central便会找指定的服务的UUID。
peripheral连接选项
这个选项值被用在connectPeripheral:options方法中。
CBConnectPeripheralOptionNotifyOnConnectionKey:当成功建立连接之后,这个key值说明在不使用bluetooth-central后台模式的情况下的,APP被挂起时,这时如果APP连接到peripheral时,是否要给APP一个提示框,当然是在APP支持后台运行的前期下。如果又不止一个peripheral设备发出NOtification的话,那么离前台最近的设备会接受到这个提示框,如果这个KEy不指定那么他默认为NO。
CBConnectPeripheralOptionNotifyOnDisconnectionKey:这是一个BOOL值,表明当APP处于挂起状态时,恰好在这个时候断开连接,要不要给APP一个断开提示。这种情况只有指定了该APP指定在后台能够运行时才显示,也是一样当有多个APP同时请求该通知时,只有离得最近的一个才能够显示,如果不设置这个值默认为NO。
CBConnectPeripheralOptionNotifyOnNotificationKey :这个BOOL值说明central在处于挂起状态时,是否接受到所有的来自peripheral的包都要弹出提示框。当然这个key值也是以APP能够在后台运行为前期的。
centralManager类基本上讲完了,要是又不对的地方望大神指点。