? ? ? ? 前面的話 上學期參加了學校一個叫做智能寢室的比賽,當時有了想做藍牙電子秤的想法,從硬件到app,花了不少力氣(模塊各種坑),app開發中間也遇到了不少坑,所以想在這里把如何實現與藍牙產品的連接以及數據的交換做一下分享也當作是再做一個復習吧。當然,這里不會太多講到硬件的代碼。參考:Core Bluetooth Programming Guide官方文檔指南
首先,對于之前沒有接觸過CoreBluetooth的同學們要普及一下基礎姿勢:
(一)設備
在藍牙通信中,Central和Periheral都是非?;镜膬蓚€概念,先看一下這個蘋果官網上的圖唄。
? ? ? ? ? 簡單來說,Periheral是提供數據的一方(Has Data),Central是接收數據的用戶(Wants Data),在雙方都開啟的時候,Periheral會以一定頻率廣播,而我們需要在Central里找到periheral,在以一定方式得到我們需要的數據,總結下來,就是不斷驗證身份(硬件中叫握手?),然后接受的過程。注意central和periheral只是相對的,當然也可以藍牙設備接收你移動設備的信息嘛。
(二)數據的結構組成
? ? ? 還是拿心率圖做個例子
? ? ? ?設備發送過來的信息里,最外面一層叫做service的作為數據及其他相應方法操作的容器,characteristic 則提供了更為詳細的 service 信息例如心率帶的位置,心率的數據(如圖)。
API簡介
Central
你查看數據的設備被稱為Central,對他的操作我們用一個CentralManager來實現,分別為CBCentral和CBCentralManager。
Periheral
設備作為Periheral與所使用的主設備進行交互,具體實現是與CBPeripheral,對他的操作我們用一個CBPeriheralManager來實現(對service的管理),還可以對central進行廣播發送數據,還會對central的read和write做出響應。
當程序運行的設備作為peripheral時我們用PeripheralManager處理的是mutable(可變的)service和characteristic,用CBMutableService和CBMutableCharacteristic來做。
好,基本姿勢差不多就是這樣。下一篇我們就講一下作為central時的相關步驟。然后再講設備作為peripheral時的相關步驟。