<CoreBluetooth>库中CBCentralManagerDelegate和CBPeripheralDelegate

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参数返回失败的原因。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 3,372评论 1 9
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,698评论 0 9
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,941评论 6 13
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,139评论 30 470