小引
隨著穿戴設(shè)備和智能家居的熱情不斷,app藍(lán)牙的開發(fā)也很火熱,基于iOS藍(lán)牙的開發(fā)資料有不少钦勘,但是最最值得學(xué)習(xí)的必然是apple自家的文檔啦示血,我之前的項目基于藍(lán)牙4.0棋傍,開發(fā)過程中用到Core Bluetooth
框架,算是我學(xué)習(xí)的筆記吧矾芙!涉及到幾個部分舍沙,我打算分開把他們整理出來,本篇文章通過對Core Bluetooth Programming Guide的翻譯剔宪,為大家介紹iOS藍(lán)牙4.0編程的一些術(shù)語和概念,后續(xù)文章將會簡單介紹下代碼的流程壹无。本人實力有限葱绒,了解的深度不是很廣,還請各位看官輕點拍磚斗锭!
話不多說說地淀,讓我們進(jìn)入正題吧:
注:本文譯自Core Bluetooth Programming Guide
核心藍(lán)牙概述
Core Bluetooth
框架使你的 Mac/iOS app 能夠與低功耗藍(lán)牙設(shè)備進(jìn)行通訊。例如岖是,你的app能夠搜尋帮毁,探索低功耗藍(lán)牙設(shè)備,并與之互動豺撑,如心率監(jiān)聽器烈疚,數(shù)字恒溫器,甚至能夠與其它iOS設(shè)備進(jìn)行交互聪轿。
該框架基于BLE4.0規(guī)范爷肝,直接適用于藍(lán)牙低功率設(shè)備的使用。也就是說陆错,該框架隱藏了很多開發(fā)規(guī)范的底層實現(xiàn)細(xì)節(jié)灯抛,使您更容易開發(fā)出與藍(lán)牙低功耗設(shè)備進(jìn)行交互的app。因為該說明中涉及到藍(lán)牙框架的一些概念和術(shù)語在本說明中已經(jīng)被廣泛采用音瓷,本文將向你介紹這個 Core Bluetooth
框架中的一些關(guān)鍵術(shù)語和概念对嚼。
Central 和 Peripheral 在藍(lán)牙交互中的角色
所有涉及藍(lán)牙低功耗的交互中有兩個主要的角色:中心Central
和外圍設(shè)備Perpheral
。根據(jù)一些傳統(tǒng)的客戶端-服務(wù)端
結(jié)構(gòu)绳慎,Peripheral
通常具有其他設(shè)備所需要的數(shù)據(jù)纵竖,而Central
通常通過使用Perpheral
的信息來實現(xiàn)一些特定的功能。如下圖所示偷线,例如磨确,一個心率監(jiān)聽器可能含有一些有用的信息,你的 Mac/iOS app 可能需要以用戶友好的方式顯示用戶的心率声邦。
Central 發(fā)現(xiàn)并連接廣播中的 Peripheral
Peripheral
向外廣播一些廣告包形式的數(shù)據(jù)乏奥,廣告包是一個相對較小的束,可能包含Peripheral
提供的有用信息資料亥曹,如外設(shè)的名稱和主要功能邓了。例如恨诱,一個數(shù)字恒溫器可以廣告包含其中的一個房間的即時溫度。在低功耗藍(lán)牙中骗炉,廣播是Peripheral
被獲知的主要方式照宝。
從另一方面說,Central
可以掃描和監(jiān)聽任何對廣播內(nèi)容感興趣的Peripheral
句葵。如下圖厕鹃,Central
可以請求連接任何已對外廣播內(nèi)容的Peripheral
。
數(shù)據(jù)在 Peripheral 中如何構(gòu)成
連接到Peripheral
的目的是為了對它所提供的數(shù)據(jù)進(jìn)行探索和交互乍丈。在此之前剂碴,理解數(shù)據(jù)在Peripheral
中是怎樣構(gòu)成的將會對我們有所幫助。
Peripheral
包含一個或者多個Service
以及有關(guān)其連接信號強(qiáng)度的有用信息轻专。Service
是指實現(xiàn)一個函數(shù)或者功能的設(shè)備(或者設(shè)備的一部分)的數(shù)據(jù)采集和相關(guān)行為的集合忆矛。例如,一個心率監(jiān)聽器的Service
可能包含從監(jiān)聽心率傳感器采集的心率數(shù)據(jù)请垛。
而Service
本身由Characteristic
或者其他被包含的Service
所組成催训。Characteristic
提供了更多有關(guān)Peripheral
的Service
中的詳細(xì)內(nèi)容。例如宗收,剛才描述的心率service
中可以包含一個用來描述該設(shè)備的心率傳感器所記錄身體位置的characteristic
或者包含發(fā)送測量心率數(shù)據(jù)的Characteristic
漫拭。如下圖,表示了一個心率監(jiān)聽器可能包含的Service
和Characteristic
镜雨。
Central 在 Peripheral 上的數(shù)據(jù)探索及交互
在Central
成功與Peripheral
建立連接后嫂侍,就能發(fā)現(xiàn)到Peripheral
提供的所有的Service
和Characteristic
。(廣播數(shù)據(jù)可能只包含一部分可見的Service
)
Central
可以通過讀取或者寫入Service
中Characteristic
的value
與Peripheral
進(jìn)行交互荚坞。例如挑宠,你的 app 可能從數(shù)字恒溫器上請求當(dāng)前的室內(nèi)溫度,或者為恒溫器提供一個數(shù)值以設(shè)置室內(nèi)溫度颓影。
Central,Peripherals 以及 Peripheral數(shù)據(jù)如何表示
有關(guān)低功耗藍(lán)牙交互中的主要角色和數(shù)據(jù)在Core Bluetooth
中以簡單明了的方式表示各淀。
Central 端的對象
當(dāng)你使用本地Central
和遠(yuǎn)程Peripheral
進(jìn)行交互,您將在低功耗藍(lán)牙Central
側(cè)執(zhí)行操作诡挂。除非你是建立一個本地Peripheral
設(shè)備碎浇,并使它由一個Central
端請求響應(yīng),大多數(shù)的藍(lán)牙交互由Central
端完成璃俗。
本地 Central 和遠(yuǎn)程 Peripheral
在Central
端奴璃,本地Central
設(shè)備表示為CBCentralManager。這些對象用來管理發(fā)現(xiàn)或連接遠(yuǎn)程Peripheral
設(shè)備(表示為CBPeripheral)城豁,包括掃描苟穆,發(fā)現(xiàn)和連接廣播中的Peripheral
。如下圖所示:
遠(yuǎn)程 Peripheral 數(shù)據(jù)表示為 CBService 和CBCharacteristic
當(dāng)你與遠(yuǎn)程Peripheral
(表示為CBPeripheral
)進(jìn)行數(shù)據(jù)交互時,你將處理它的Service
和Characteristic
雳旅。在Core Bluetooth
框架中跟磨,遠(yuǎn)程Peripheral
的Service
表示為CBService
。相類似的攒盈,遠(yuǎn)程Peripheral
中Service
的Characteritic
表示為CBCharacteristic
抵拘。如下圖所示:
Peripheral 端的對象
OS X v10.9和iOS6以上的Mac/iOS設(shè)備能夠可以設(shè)置成低功耗藍(lán)牙的Peripheral
,為其他Mac/iPhone/iPad 傳輸數(shù)據(jù)型豁。當(dāng)你設(shè)置好你的設(shè)備使其能夠?qū)崿F(xiàn)Peripheral
的角色僵蛛,你就可以完成低功耗藍(lán)牙交互的Peripheral
端功能。
本地 Peripheral 和遠(yuǎn)程 Central
在Peripheral
端迎变,一個Peripheral
設(shè)備表示為CBPeripheralManager
墩瞳。該對象用于管理那些包含本地Peripheral
設(shè)備的Service
和Characteristic
數(shù)據(jù)的Service
,通過廣播這些服務(wù)的方式發(fā)布到遠(yuǎn)程Central
設(shè)備(表示為CBCentral
)氏豌。Peripheral manager
對象同樣可以響應(yīng)遠(yuǎn)程Central
的讀取和寫入請求。如下圖所示:
本地 Peripheral 數(shù)據(jù)表示為 CBMutableService 和 CBMutableCharacteristic
當(dāng)你設(shè)置好和本地Peripheral
(表示為CBPeripheralManager
)數(shù)據(jù)交互热凹,就可以處理Service
和Characteristic
的可變版本泵喘。在Core Bluetooth
框架中,本地Peripheral
的Service
表示為CBMutableService
般妙。同樣地纪铺,本地Peripheral
中Service
的Characteristic
表示為CBMutableCharacteristic
。如下圖所示: