iOS CoreBluetooth的swift實現 (1)

iOS CoreBluetooth的swift實現 (2)

iOS CoreBluetooth的swift實現 (3)

? ? ? ? 前面的話 上學期參加了學校一個叫做智能寢室的比賽,當時有了想做藍牙電子秤的想法,從硬件到app,花了不少力氣(模塊各種坑),app開發中間也遇到了不少坑,所以想在這里把如何實現與藍牙產品的連接以及數據的交換做一下分享也當作是再做一個復習吧。當然,這里不會太多講到硬件的代碼。參考:Core Bluetooth Programming Guide官方文檔指南

首先,對于之前沒有接觸過CoreBluetooth的同學們要普及一下基礎姿勢:


(一)設備

在藍牙通信中,CentralPeriheral都是非?;镜膬蓚€概念,先看一下這個蘋果官網上的圖唄。


Central和Periheral:接收設備與心率儀


? ? ? ? ? 簡單來說,Periheral是提供數據的一方(Has Data),Central是接收數據的用戶(Wants Data),在雙方都開啟的時候,Periheral會以一定頻率廣播,而我們需要在Central里找到periheral,在以一定方式得到我們需要的數據,總結下來,就是不斷驗證身份(硬件中叫握手?),然后接受的過程。注意central和periheral只是相對的,當然也可以藍牙設備接收你移動設備的信息嘛。

(二)數據的結構組成

? ? ? 還是拿心率圖做個例子

Peripheral的數據內容結構

? ? ? ?設備發送過來的信息里,最外面一層叫做service的作為數據及其他相應方法操作的容器,characteristic 則提供了更為詳細的 service 信息例如心率帶的位置,心率的數據(如圖)。


API簡介


Central

你查看數據的設備被稱為Central,對他的操作我們用一個CentralManager來實現,分別為CBCentralCBCentralManager。

Periheral

設備作為Periheral與所使用的主設備進行交互,具體實現是與CBPeripheral,對他的操作我們用一個CBPeriheralManager來實現(對service的管理),還可以對central進行廣播發送數據,還會對central的read和write做出響應。

CBCentralManager?



CBPeriheralManager


CBPeripheral的數據組成結構



當程序運行的設備作為peripheral時我們用PeripheralManager處理的是mutable(可變的)servicecharacteristic,用CBMutableServiceCBMutableCharacteristic來做。

CBMutableService與CBMutableCharacteristic的關系

好,基本姿勢差不多就是這樣。下一篇我們就講一下作為central時的相關步驟。然后再講設備作為peripheral時的相關步驟。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容