CBCentralManagerDelegate
协议方法注解
//当中央管理者的状态更新时,回调此方法。
func centralManagerDidUpdateState(_ central: CBCentralManager)
实现此必须的方法,以确保支持蓝牙低功耗,并可在中央设备上使用。只有在中央管理器的状态打开时,才应该给中央管理器发送命令,正如
CBCentralManagerStatePoweredOn
常量所示。值低于CBCentralManagerStatePoweredOn
的状态表明扫描已停止,并且任何已连接的外设已经断开连接。如果状态移动到CBCentralManagerStatePoweredOff
之下,所有从中央管理器获得的外设将变得无效,必须重新检索或重新发现。
//当中央管理器即将由系统恢复时调用
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any])
对于选择使用
CoreBluetooth
的状态保存和恢复功能的应用,这是当应用程序重新启动到后台来完成一些蓝牙相关任务时调用的第一个方法,使用此方法来同步应用程序的状态和蓝牙系统的状态
//当在扫描时中央管理者发现了一个外设,回调此方法。
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
广播包数据可以通过广播包数据检索键中列出的键来访问。如果要对其执行任何命令,则必须要保留外设的本地副本。在应用程序自动连接到位于特定范围内的外设的情况下,可以使用RSSI数据来确定发现的外设的接近程度。
//与一个外设成功的建立了连接时调用
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)
当调用
connectPeripheral:options:
成功时,回调此方法,通常实现这个方法来设置外设的代理并发现它的服务
//与一个外设建立连接失败时调用
func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?)
当通过
connectPeripheral:options:
方法启动的连接无法完成时,回调此方法。由于连接尝试不会超时,故障连接通常表示暂时性问题,在这种情况下,你可以尝试再次连接该外设。
//在与外设的现有连接断开时调用
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?)
当通过
connectPeripheral:options
方法连接的外设断开时,回调此方法。如果这个断开连接未由cancelPeripheralConnection:
方法启动,那么详细的原因会描述在error
中。在这个方法调用之后,将不会在外围设备的CBPeripheralDelegate
对象中调用其它更多方法。注意当外设被断开时,它的所有服务,特征和特征描述都被无效化。
CBPeripheralDelegate
协议方法注解
//当外设名称更改时调用此方法。
func peripheralDidUpdateName(_ peripheral: CBPeripheral)
每当外围设备的通用访问配置文件(GAP)设备名称已更改时,调用此方法。由于外围设备可以更改它的通用访问配置文件(GAP)设备名称,如果你的应用程序需要显示外围设备的当前名称时,你可以实现这个方法。
//当你发现外设的可用服务时调用
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?)
当你的应用程序调用
discoverServices:
时将调用此方法。如果成功发现外设的服务,你可以通过外设的services
属性访问它们。如果成功则error
参数是nil
,如果不成功,则error
参数返回失败的原因。
//在外设已经与中央管理器连接上时,你调用readRSSI方法来检索其当前RSSI的值后,调用此方法
func peripheral(_ peripheral: CBPeripheral, didReadRSSI RSSI: NSNumber, error: Error?)
当你的应用程序调用
readRSSI
方法时会调用此方法,如果成功,则error
参数为nil
, 并且RSSI
参数报告接收器的信号强度,单位是分贝(decibels
)。如果不成功,则error
参数返回失败的原因。
//当外设的服务已更改时调用此方法
func peripheral(_ peripheral: CBPeripheral, didModifyServices invalidatedServices: [CBService])
每当外设的一个或者更多的服务已更改时,调用此方法。 外设的服务已更改如果:
* 一个服务从外设的数据段中被移除
* 一个新的服务被添加到外设的数据段中
* 先前从外设数据段中删除的服务将重新添加到位于不同位置的数据段
如果先前发现任何已更改的服务,则它们将在invalidatedServices
参数中提供,并且无法再使用。你可以使用discoverServices:
方法来发现已经添加到外设数据段的任何新服务,或者查明你使用(并希望继续使用)的任何无效服务是否已添加回到在外设的数据段中其它不同的位置。
//当你写入数据到一个特征描述的值时调用此方法。
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor descriptor: CBDescriptor, error: Error?)
当你的应用程序调用
writeValue:forDescriptor:
方法时,调用此方法。如果成功,则error
参数是nil
, 如果不成功,则error
参数返回失败的原因。
// 当你检索到一个指定特征描述的值时调用此方法
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor descriptor: CBDescriptor, error: Error?)
当你的应用程序调用
readValueForDescriptor:
方法时,调用此方法。如果成功,则error
参数是nil
, 如果不成功,则error
参数返回失败的原因。
//当你发现指定服务的特征时调用此方法
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?)
当你的应用程序调用
discoverCharacteristics:forService:
方法时调用此方法。如果成功发现指定服务的特征,你可以通过服务的characteristics
属性访问它们。如果成功,则error
参数是nil
,如果不成功,则error
参数返回失败的原因。
//当发现指定服务中包含的服务时调用
func peripheral(_ peripheral: CBPeripheral, didDiscoverIncludedServicesFor service: CBService, error: Error?)
当你的应用程序调用
discoverIncludedServices:forService:
方法时调用此方法。如果成功发现指定服务中包含的服务,你可以通过服务的includedServices
属性访问它们。如果成功,则error
参数是nil
,如果不成功,则error
参数返回失败的原因。
//当写入数据到一个特征的值时调用此方法。
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?)
仅仅当你的应用程序调用
writeValue:forCharacteristic:type:
方法时,并指定的写入类型常量为CBCharacteristicWriteWithResponse
时,调用此方法。如果成功,则error
参数是nil
, 如果不成功,则error
参数返回失败的原因。
//当检索到指定特征的值时调用,或者当外围设备通知你的应用程序该特征值已更改时调用。
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?)
当你的应用程序调用
readValueForCharacteristic:
方法时,或者当外设通知你的应用程序,(通过成功调用setNotifyValue:forCharacteristic:
方法)使通知(notifications
)和指示(indications
)启用时的特征的值已更改时 调用此方法。如果成功,则error
参数是nil
, 如果不成功,则error
参数返回失败的原因。
//当发现指定特征的描述时调用此方法
func peripheral(_ peripheral: CBPeripheral, didDiscoverDescriptorsFor characteristic: CBCharacteristic, error: Error?)
当你的应用程序调用
discoverDescriptorsForCharacteristic:
方法时调用此方法。如果成功发现指定特征的特征描述时,你可以通过特征的descriptors
属性访问它们。如果成功,则error
参数是nil
,如果不成功,则error
参数返回失败的原因。
//当外设接受到一个请求为一个指定特征的值来开始或者停止提供通知(notifications)时调用此方法
func peripheral(_ peripheral: CBPeripheral, didUpdateNotificationStateFor characteristic: CBCharacteristic, error: Error?)
当你的应用程序调用
setNotifyValue:forCharacteristic:
方法时,调用此方法。如果成功,则error
参数是nil
, 如果不成功,则error
参数返回失败的原因。
网友评论