IOS CoreBluetooth系列一:理論
核心藍芽概述
Core Bluetooth
框架使你的 Mac/iOS app 能夠與低功耗藍芽裝置進行通訊。例如,你的app能夠搜尋,探索低功耗藍芽裝置,並與之互動,如心率監聽器,數字恆溫器,甚至能夠與其它iOS裝置進行互動。
該框架基於BLE4.0規範,直接適用於藍芽低功率裝置的使用。也就是說,該框架隱藏了很多開發規範的底層實現細節,使您更容易開發出與藍芽低功耗裝置進行互動的app。因為該說明中涉及到藍芽框架的一些概念和術語在本說明中已經被廣泛採用,本文將向你介紹這個
Core Bluetooth
框架中的一些關鍵術語和概念。
Central 和 Peripheral 在藍芽互動中的角色
所有涉及藍芽低功耗的互動中有兩個主要的角色:中心Central
Perpheral
。根據一些傳統的客戶端-服務端
結構,Peripheral
通常具有其他裝置所需要的資料,而Central
通常通過使用Perpheral
的資訊來實現一些特定的功能。如下圖所示,例如,一個心率監聽器可能含有一些有用的資訊,你的 Mac/iOS app 可能需要以使用者友好的方式顯示使用者的心率。
Central 發現並連線廣播中的 Peripheral
Peripheral
向外廣播一些廣告包形式的資料,廣告包是一個相對較小的束,可能包含Peripheral
提供的有用資訊資料,如外設的名稱和主要功能。例如,一個數字恆溫器可以廣告包含其中的一個房間的即時溫度。在低功耗藍芽中,廣播是Peripheral
從另一方面說,Central
可以掃描和監聽任何對廣播內容感興趣的Peripheral
。如下圖,Central
可以請求連線任何已對外廣播內容的Peripheral
。
資料在 Peripheral 中如何構成
連線到Peripheral
的目的是為了對它所提供的資料進行探索和互動。在此之前,理解資料在Peripheral
中是怎樣構成的將會對我們有所幫助。
Peripheral
包含一個或者多個Service
以及有關其連線訊號強度的有用資訊。Service
是指實現一個函式或者功能的裝置(或者裝置的一部分)的資料採集和相關行為的集合。例如,一個心率監聽器的Service
可能包含從監聽心率感測器採集的心率資料。
而Service
本身由Characteristic
或者其他被包含的Service
所組成。Characteristic
提供了更多有關Peripheral
的Service
中的詳細內容。例如,剛才描述的心率service
中可以包含一個用來描述該裝置的心率感測器所記錄身體位置的characteristic
或者包含傳送測量心率資料的Characteristic
。如下圖,表示了一個心率監聽器可能包含的Service
和Characteristic
。
Central 在 Peripheral 上的資料探索及互動
在Central
成功與Peripheral
建立連線後,就能發現到Peripheral
提供的所有的Service
和Characteristic
。(廣播資料可能只包含一部分可見的Service
)
Central
可以通過讀取或者寫入Service
中Characteristic
的value
與Peripheral
進行互動。例如,你的 app 可能從數字恆溫器上請求當前的室內溫度,或者為恆溫器提供一個數值以設定室內溫度。
Central,Peripherals 以及 Peripheral資料如何表示
有關低功耗藍芽互動中的主要角色和資料在Core Bluetooth
中以簡單明瞭的方式表示。
Central 端的物件
當你使用本地Central
和遠端Peripheral
進行互動,您將在低功耗藍芽Central
側執行操作。除非你是建立一個本地Peripheral
裝置,並使它由一個Central
端請求響應,大多數的藍芽互動由Central
端完成。
本地 Central 和遠端 Peripheral
在Central
端,本地Central
裝置表示為CBCentralManager。這些物件用來管理髮現或連線遠端Peripheral
裝置(表示為CBPeripheral),包括掃描,發現和連線廣播中的Peripheral
。如下圖所示:
遠端 Peripheral 資料表示為 CBService 和CBCharacteristic
當你與遠端Peripheral
(表示為CBPeripheral
)進行資料互動時,你將處理它的Service
和Characteristic
。在Core
Bluetooth
框架中,遠端Peripheral
的Service
表示為CBService
。相類似的,遠端Peripheral
中Service
的Characteritic
表示為CBCharacteristic
。如下圖所示:
Peripheral 端的物件
OS X v10.9和iOS6以上的Mac/iOS裝置能夠可以設定成低功耗藍芽的Peripheral
,為其他Mac/iPhone/iPad 傳輸資料。當你設定好你的裝置使其能夠實現Peripheral
的角色,你就可以完成低功耗藍芽互動的Peripheral
端功能。
本地 Peripheral 和遠端 Central
在Peripheral
端,一個Peripheral
裝置表示為CBPeripheralManager
。該物件用於管理那些包含本地Peripheral
裝置的Service
和Characteristic
資料的Service
,通過廣播這些服務的方式釋出到遠端Central
裝置(表示為CBCentral
)。Peripheral
manager
物件同樣可以響應遠端Central
的讀取和寫入請求。如下圖所示:
本地 Peripheral 資料表示為 CBMutableService 和 CBMutableCharacteristic
當你設定好和本地Peripheral
(表示為CBPeripheralManager
)資料互動,就可以處理Service
和Characteristic
的可變版本。在Core
Bluetooth
框架中,本地Peripheral
的Service
表示為CBMutableService
。同樣地,本地Peripheral
中Service
的Characteristic
表示為CBMutableCharacteristic
。如下圖所示: