iOS CoreBluetooth的swift實現(xiàn) (2)
iOS CoreBluetooth的swift實現(xiàn) (3)
? ? ? ? 前面的話 上學期參加了學校一個叫做智能寢室的比賽,當時有了想做藍牙電子秤的想法,從硬件到app,花了不少力氣(模塊各種坑)溅呢,app開發(fā)中間也遇到了不少坑闺兢,所以想在這里把如何實現(xiàn)與藍牙產(chǎn)品的連接以及數(shù)據(jù)的交換做一下分享也當作是再做一個復(fù)習吧锐想。當然钉跷,這里不會太多講到硬件的代碼宣蔚。參考:Core Bluetooth Programming Guide官方文檔指南
首先该编,對于之前沒有接觸過CoreBluetooth的同學們要普及一下基礎(chǔ)姿勢:
(一)設(shè)備
在藍牙通信中迄本,Central和Periheral都是非常基本的兩個概念课竣,先看一下這個蘋果官網(wǎng)上的圖唄嘉赎。
? ? ? ? ? 簡單來說,Periheral是提供數(shù)據(jù)的一方(Has Data),Central是接收數(shù)據(jù)的用戶(Wants Data)于樟,在雙方都開啟的時候公条,Periheral會以一定頻率廣播,而我們需要在Central里找到periheral迂曲,在以一定方式得到我們需要的數(shù)據(jù)靶橱,總結(jié)下來,就是不斷驗證身份(硬件中叫握手路捧?)关霸,然后接受的過程。注意central和periheral只是相對的杰扫,當然也可以藍牙設(shè)備接收你移動設(shè)備的信息嘛队寇。
(二)數(shù)據(jù)的結(jié)構(gòu)組成
? ? ? 還是拿心率圖做個例子
? ? ? ?設(shè)備發(fā)送過來的信息里,最外面一層叫做service的作為數(shù)據(jù)及其他相應(yīng)方法操作的容器章姓,characteristic 則提供了更為詳細的 service 信息例如心率帶的位置佳遣,心率的數(shù)據(jù)(如圖)。
API簡介
Central
你查看數(shù)據(jù)的設(shè)備被稱為Central凡伊,對他的操作我們用一個CentralManager來實現(xiàn)零渐,分別為CBCentral和CBCentralManager。
Periheral
設(shè)備作為Periheral與所使用的主設(shè)備進行交互窗声,具體實現(xiàn)是與CBPeripheral相恃,對他的操作我們用一個CBPeriheralManager來實現(xiàn)(對service的管理)辜纲,還可以對central進行廣播發(fā)送數(shù)據(jù)笨觅,還會對central的read和write做出響應(yīng)拦耐。
當程序運行的設(shè)備作為peripheral時我們用PeripheralManager處理的是mutable(可變的)service和characteristic,用CBMutableService和CBMutableCharacteristic來做见剩。
好杀糯,基本姿勢差不多就是這樣。下一篇我們就講一下作為central時的相關(guān)步驟苍苞。然后再講設(shè)備作為peripheral時的相關(guān)步驟固翰。