<CoreBluetooth>庫中CBCentralManagerDelegate和CBPeripheralDelegate

CBCentralManagerDelegate協(xié)議方法注解

   //當(dāng)中央管理者的狀態(tài)更新時,回調(diào)此方法。
  func centralManagerDidUpdateState(_ central: CBCentralManager)

實現(xiàn)此必須的方法,以確保支持藍(lán)牙低功耗,并可在中央設(shè)備上使用。只有在中央管理器的狀態(tài)打開時,才應(yīng)該給中央管理器發(fā)送命令,正如CBCentralManagerStatePoweredOn常量所示。值低于CBCentralManagerStatePoweredOn的狀態(tài)表明掃描已停止,并且任何已連接的外設(shè)已經(jīng)斷開連接。如果狀態(tài)移動到CBCentralManagerStatePoweredOff之下,所有從中央管理器獲得的外設(shè)將變得無效,必須重新檢索或重新發(fā)現(xiàn)。


//當(dāng)中央管理器即將由系統(tǒng)恢復(fù)時調(diào)用
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any])

對于選擇使用CoreBluetooth的狀態(tài)保存和恢復(fù)功能的應(yīng)用,這是當(dāng)應(yīng)用程序重新啟動到后臺來完成一些藍(lán)牙相關(guān)任務(wù)時調(diào)用的第一個方法,使用此方法來同步應(yīng)用程序的狀態(tài)和藍(lán)牙系統(tǒng)的狀態(tài)


//當(dāng)在掃描時中央管理者發(fā)現(xiàn)了一個外設(shè),回調(diào)此方法。
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)

廣播包數(shù)據(jù)可以通過廣播包數(shù)據(jù)檢索鍵中列出的鍵來訪問。如果要對其執(zhí)行任何命令,則必須要保留外設(shè)的本地副本。在應(yīng)用程序自動連接到位于特定范圍內(nèi)的外設(shè)的情況下,可以使用RSSI數(shù)據(jù)來確定發(fā)現(xiàn)的外設(shè)的接近程度。


//與一個外設(shè)成功的建立了連接時調(diào)用
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)

當(dāng)調(diào)用connectPeripheral:options:成功時,回調(diào)此方法,通常實現(xiàn)這個方法來設(shè)置外設(shè)的代理并發(fā)現(xiàn)它的服務(wù)


//與一個外設(shè)建立連接失敗時調(diào)用
func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?)

當(dāng)通過connectPeripheral:options:方法啟動的連接無法完成時,回調(diào)此方法。由于連接嘗試不會超時,故障連接通常表示暫時性問題,在這種情況下,你可以嘗試再次連接該外設(shè)。


//在與外設(shè)的現(xiàn)有連接斷開時調(diào)用
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) 

當(dāng)通過connectPeripheral:options方法連接的外設(shè)斷開時,回調(diào)此方法。如果這個斷開連接未由cancelPeripheralConnection:方法啟動,那么詳細(xì)的原因會描述在error中。在這個方法調(diào)用之后,將不會在外圍設(shè)備的CBPeripheralDelegate對象中調(diào)用其它更多方法。注意當(dāng)外設(shè)被斷開時,它的所有服務(wù),特征和特征描述都被無效化。


CBPeripheralDelegate協(xié)議方法注解

//當(dāng)外設(shè)名稱更改時調(diào)用此方法。
func peripheralDidUpdateName(_ peripheral: CBPeripheral)

每當(dāng)外圍設(shè)備的通用訪問配置文件(GAP)設(shè)備名稱已更改時,調(diào)用此方法。由于外圍設(shè)備可以更改它的通用訪問配置文件(GAP)設(shè)備名稱,如果你的應(yīng)用程序需要顯示外圍設(shè)備的當(dāng)前名稱時,你可以實現(xiàn)這個方法。


//當(dāng)你發(fā)現(xiàn)外設(shè)的可用服務(wù)時調(diào)用
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?)

當(dāng)你的應(yīng)用程序調(diào)用discoverServices:時將調(diào)用此方法。如果成功發(fā)現(xiàn)外設(shè)的服務(wù),你可以通過外設(shè)的services屬性訪問它們。如果成功則error參數(shù)是nil,如果不成功,則error參數(shù)返回失敗的原因。


//在外設(shè)已經(jīng)與中央管理器連接上時,你調(diào)用readRSSI方法來檢索其當(dāng)前RSSI的值后,調(diào)用此方法
func peripheral(_ peripheral: CBPeripheral, didReadRSSI RSSI: NSNumber, error: Error?)

當(dāng)你的應(yīng)用程序調(diào)用readRSSI方法時會調(diào)用此方法,如果成功,則error參數(shù)為nil, 并且RSSI參數(shù)報告接收器的信號強(qiáng)度,單位是分貝(decibels)。如果不成功,則error參數(shù)返回失敗的原因。


//當(dāng)外設(shè)的服務(wù)已更改時調(diào)用此方法
func peripheral(_ peripheral: CBPeripheral, didModifyServices invalidatedServices: [CBService])

每當(dāng)外設(shè)的一個或者更多的服務(wù)已更改時,調(diào)用此方法。 外設(shè)的服務(wù)已更改如果:
* 一個服務(wù)從外設(shè)的數(shù)據(jù)段中被移除
* 一個新的服務(wù)被添加到外設(shè)的數(shù)據(jù)段中
* 先前從外設(shè)數(shù)據(jù)段中刪除的服務(wù)將重新添加到位于不同位置的數(shù)據(jù)段
如果先前發(fā)現(xiàn)任何已更改的服務(wù),則它們將在invalidatedServices參數(shù)中提供,并且無法再使用。你可以使用discoverServices:方法來發(fā)現(xiàn)已經(jīng)添加到外設(shè)數(shù)據(jù)段的任何新服務(wù),或者查明你使用(并希望繼續(xù)使用)的任何無效服務(wù)是否已添加回到在外設(shè)的數(shù)據(jù)段中其它不同的位置。


//當(dāng)你寫入數(shù)據(jù)到一個特征描述的值時調(diào)用此方法。
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor descriptor: CBDescriptor, error: Error?)

當(dāng)你的應(yīng)用程序調(diào)用writeValue:forDescriptor:方法時,調(diào)用此方法。如果成功,則error參數(shù)是nil, 如果不成功,則error參數(shù)返回失敗的原因。


// 當(dāng)你檢索到一個指定特征描述的值時調(diào)用此方法
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor descriptor: CBDescriptor, error: Error?)

當(dāng)你的應(yīng)用程序調(diào)用readValueForDescriptor:方法時,調(diào)用此方法。如果成功,則error參數(shù)是nil, 如果不成功,則error參數(shù)返回失敗的原因。


//當(dāng)你發(fā)現(xiàn)指定服務(wù)的特征時調(diào)用此方法
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?)

當(dāng)你的應(yīng)用程序調(diào)用discoverCharacteristics:forService:方法時調(diào)用此方法。如果成功發(fā)現(xiàn)指定服務(wù)的特征,你可以通過服務(wù)的characteristics屬性訪問它們。如果成功,則error參數(shù)是nil,如果不成功,則error參數(shù)返回失敗的原因。


//當(dāng)發(fā)現(xiàn)指定服務(wù)中包含的服務(wù)時調(diào)用
func peripheral(_ peripheral: CBPeripheral, didDiscoverIncludedServicesFor service: CBService, error: Error?) 

當(dāng)你的應(yīng)用程序調(diào)用discoverIncludedServices:forService:方法時調(diào)用此方法。如果成功發(fā)現(xiàn)指定服務(wù)中包含的服務(wù),你可以通過服務(wù)的includedServices屬性訪問它們。如果成功,則error參數(shù)是nil,如果不成功,則error參數(shù)返回失敗的原因。


//當(dāng)寫入數(shù)據(jù)到一個特征的值時調(diào)用此方法。
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?)

僅僅當(dāng)你的應(yīng)用程序調(diào)用writeValue:forCharacteristic:type:方法時,并指定的寫入類型常量為CBCharacteristicWriteWithResponse時,調(diào)用此方法。如果成功,則error參數(shù)是nil, 如果不成功,則error參數(shù)返回失敗的原因。


//當(dāng)檢索到指定特征的值時調(diào)用,或者當(dāng)外圍設(shè)備通知你的應(yīng)用程序該特征值已更改時調(diào)用。
 func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?)

當(dāng)你的應(yīng)用程序調(diào)用readValueForCharacteristic:方法時,或者當(dāng)外設(shè)通知你的應(yīng)用程序,(通過成功調(diào)用setNotifyValue:forCharacteristic:方法)使通知(notifications)和指示(indications)啟用時的特征的值已更改時 調(diào)用此方法。如果成功,則error參數(shù)是nil, 如果不成功,則error參數(shù)返回失敗的原因。


//當(dāng)發(fā)現(xiàn)指定特征的描述時調(diào)用此方法
func peripheral(_ peripheral: CBPeripheral, didDiscoverDescriptorsFor characteristic: CBCharacteristic, error: Error?)

當(dāng)你的應(yīng)用程序調(diào)用discoverDescriptorsForCharacteristic:方法時調(diào)用此方法。如果成功發(fā)現(xiàn)指定特征的特征描述時,你可以通過特征的descriptors屬性訪問它們。如果成功,則error參數(shù)是nil,如果不成功,則error參數(shù)返回失敗的原因。


//當(dāng)外設(shè)接受到一個請求為一個指定特征的值來開始或者停止提供通知(notifications)時調(diào)用此方法
func peripheral(_ peripheral: CBPeripheral, didUpdateNotificationStateFor characteristic: CBCharacteristic, error: Error?)

當(dāng)你的應(yīng)用程序調(diào)用setNotifyValue:forCharacteristic:方法時,調(diào)用此方法。如果成功,則error參數(shù)是nil, 如果不成功,則error參數(shù)返回失敗的原因。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • error code(錯誤代碼)=0是操作成功完成。error code(錯誤代碼)=1是功能錯誤。error c...
    Heikki_閱讀 3,544評論 1 9
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,098評論 0 9
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,525評論 6 13
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,656評論 30 472

友情鏈接更多精彩內(nèi)容