【譯】iOS藍芽程式設計指南 -- 核心藍芽概述
隨著穿戴裝置和智慧家居的熱情不斷,app藍芽的開發也很火熱,基於iOS藍芽的開發資料有不少,但是最最值得學習的必然是apple自家的文件啦,我之前的專案基於藍芽4.0,開發過程中用到Core
Bluetooth
框架,算是我學習的筆記吧!涉及到幾個部分,我打算分開把他們整理出來,本篇文章通過對Core
Bluetooth Programming Guide的翻譯,為大家介紹iOS藍芽4.0程式設計的一些術語和概念,後續文章將會簡單介紹下程式碼的流程。本人實力有限,瞭解的深度不是很廣,還請各位看官輕點拍磚!
話不多說說,讓我們進入正題吧:
核心藍芽概述
Core Bluetooth
框架使你的 Mac/iOS app 能夠與低功耗藍芽裝置進行通訊。例如,你的app能夠搜尋,探索低功耗藍芽裝置,並與之互動,如心率監聽器,數字恆溫器,甚至能夠與其它iOS裝置進行互動。
該框架基於BLE4.0規範,直接適用於藍芽低功率裝置的使用。也就是說,該框架隱藏了很多開發規範的底層實現細節,使您更容易開發出與藍芽低功耗裝置進行互動的app。因為該說明中涉及到藍芽框架的一些概念和術語在本說明中已經被廣泛採用,本文將向你介紹這個 Core
Bluetooth
框架中的一些關鍵術語和概念。
Central 和 Peripheral 在藍芽互動中的角色
所有涉及藍芽低功耗的互動中有兩個主要的角色:中心Central
和外圍裝置Perpheral
。根據一些傳統的客戶端-服務端
結構,Peripheral
通常具有其他裝置所需要的資料,而Central
通常通過使用Perpheral
Alt text
Central 發現並連線廣播中的 Peripheral
Peripheral
向外廣播一些廣告包形式的資料,廣告包是一個相對較小的束,可能包含Peripheral
提供的有用資訊資料,如外設的名稱和主要功能。例如,一個數字恆溫器可以廣告包含其中的一個房間的即時溫度。在低功耗藍芽中,廣播是Peripheral
被獲知的主要方式。
從另一方面說,Central
可以掃描和監聽任何對廣播內容感興趣的Peripheral
Central
可以請求連線任何已對外廣播內容的Peripheral
。
Alt text
資料在 Peripheral 中如何構成
連線到Peripheral
的目的是為了對它所提供的資料進行探索和互動。在此之前,理解資料在Peripheral
中是怎樣構成的將會對我們有所幫助。
Peripheral
包含一個或者多個Service
以及有關其連線訊號強度的有用資訊。Service
是指實現一個函式或者功能的裝置(或者裝置的一部分)的資料採集和相關行為的集合。例如,一個心率監聽器的Service
可能包含從監聽心率感測器採集的心率資料。
而Service
本身由Characteristic
或者其他被包含的Service
所組成。Characteristic
提供了更多有關Peripheral
的Service
中的詳細內容。例如,剛才描述的心率service
中可以包含一個用來描述該裝置的心率感測器所記錄身體位置的characteristic
或者包含傳送測量心率資料的Characteristic
。如下圖,表示了一個心率監聽器可能包含的Service
和Characteristic
。
Alt text
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
。如下圖所示:
Alt text
遠端 Peripheral 資料表示為 CBService 和CBCharacteristic
當你與遠端Peripheral
(表示為CBPeripheral
)進行資料互動時,你將處理它的Service
和Characteristic
。在Core
Bluetooth
框架中,遠端Peripheral
的Service
表示為CBService
。相類似的,遠端Peripheral
中Service
的Characteritic
表示為CBCharacteristic
。如下圖所示:
Alt text
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
的讀取和寫入請求。如下圖所示:
Alt text
本地 Peripheral 資料表示為 CBMutableService 和 CBMutableCharacteristic
當你設定好和本地Peripheral
(表示為CBPeripheralManager
)資料互動,就可以處理Service
和Characteristic
的可變版本。在Core
Bluetooth
框架中,本地Peripheral
的Service
表示為CBMutableService
。同樣地,本地Peripheral
中Service
的Characteristic
表示為CBMutableCharacteristic
。如下圖所示:
Alt text