關(guān)于藍(lán)牙歷史
在藍(lán)牙4.0之前领迈,要使用藍(lán)牙,制定設(shè)備必須實(shí)現(xiàn)某些藍(lán)牙規(guī)范。諸如藍(lán)牙音頻耳機(jī)狸捅、藍(lán)牙立體聲耳機(jī)衷蜓、藍(lán)牙遠(yuǎn)程操控、SIM卡訪問(wèn)等常見(jiàn)用途都有現(xiàn)成的配置文件尘喝。但是現(xiàn)在磁浇,我們有了藍(lán)牙4.0.因?yàn)榈凸牡乃{(lán)牙使實(shí)現(xiàn)定制接口和定制數(shù)據(jù)交換變得很容易。
目前藍(lán)牙設(shè)備現(xiàn)在覆蓋生活的很多方面朽褪,包括:健康扯夭、運(yùn)動(dòng)、安全體系(比如車鎖鞍匾、從開門到控制溫控器的家庭自動(dòng)化系統(tǒng))交洗、點(diǎn)對(duì)點(diǎn)游戲等。
需求:基于藍(lán)牙功能結(jié)合硬件廠商研發(fā)開門系統(tǒng)橡淑。實(shí)現(xiàn)亮屏開門构拳,藍(lán)牙開門,搖一搖開門等功能的實(shí)現(xiàn)梁棠。
在使用藍(lán)牙sdk之前置森,要先了解兩個(gè)設(shè)備:
Central(設(shè)備中心)和 Peripheral (外圍設(shè)備)
按照iOS的說(shuō)法,服務(wù)器叫做外圍設(shè)備符糊,客戶端叫做中心設(shè)備凫海。iOS 5允許iOS設(shè)備作為客戶端從一個(gè)藍(lán)牙設(shè)備讀取數(shù)據(jù)。
Central和Peripheral是藍(lán)牙應(yīng)用中兩個(gè)主要的角色男娄。Peripheral一般擁有其他設(shè)備所需要的數(shù)據(jù)行贪,而Central則會(huì)使用Peripheral提供的這些信息來(lái)完成一些任務(wù),有點(diǎn)類似計(jì)算機(jī)網(wǎng)絡(luò)通信中的C/S結(jié)構(gòu)模闲。例如建瘫,心率儀作為一個(gè)Peripheral可以向iOS應(yīng)用提供溫度,iOS應(yīng)用進(jìn)而通過(guò)友好的方式將該數(shù)據(jù)顯示給用戶尸折。
根據(jù)角色劃分不同啰脚,Central和Peripheral所做的事也有所區(qū)別。Peripheral通過(guò)廣播數(shù)據(jù)來(lái)向全世界宣布自己的存在实夹,而Central則通過(guò)掃描來(lái)發(fā)現(xiàn)自己感興趣的Peripheral橄浓。一旦Cenral發(fā)現(xiàn)自己感興趣的Peripheral,便會(huì)發(fā)出連接請(qǐng)求亮航,之后便會(huì)和該P(yáng)eripheral進(jìn)行交互荸实,而Peripheral則會(huì)通過(guò)合適的方式來(lái)響應(yīng)請(qǐng)求。
開發(fā)Central設(shè)備應(yīng)用
如果你要和Peripheral設(shè)備進(jìn)行通信并完成某項(xiàng)任務(wù)的話塞赂,需要從Central角度出發(fā)去開發(fā)泪勒。
iOS 5允許iOS設(shè)備作為客戶端從一個(gè)藍(lán)牙設(shè)備讀取數(shù)據(jù)昼蛀。
通過(guò)CBCentralManager類&CBPeripheral類表示Central設(shè)備和Peripheral設(shè)備。
iOS6 中圆存,SDK增加了一些類允許iOS設(shè)備作為外圍設(shè)備來(lái)發(fā)送數(shù)據(jù)叼旋。這些數(shù)據(jù)可以是一個(gè)通知列表、當(dāng)前播放的音樂(lè)曲目沦辙、一張照片夫植、或者是你應(yīng)用中想發(fā)送給其他設(shè)備的任何東西。
iOS7中 增加了掃描和獲取外圍設(shè)備的同步方法油讯,一個(gè)小變化就是中心設(shè)備和外圍設(shè)備的表示服從基于CoreFoudation的CFUUIDRef變?yōu)镹SUUID.其中重要改進(jìn)是為后臺(tái)通過(guò)藍(lán)牙通信和發(fā)送數(shù)據(jù)的應(yīng)用增加了狀態(tài)保存和恢復(fù)功能详民。
在Core BlueTooth框架中,以CBCentralManager對(duì)象表示Central設(shè)備陌兑,該對(duì)象可以管理發(fā)現(xiàn)到或者連接到的Peripheral(以CBPeripheral表示)沈跨。
通過(guò)CBService & CBCharacteristic表示Peripheral數(shù)據(jù)
當(dāng)你試圖和Peripheral進(jìn)行交互時(shí),其實(shí)就是在和Peripheral提供的Service以及Characteristic交互兔综。顧名思義饿凛,CBService和CBCharacteristic就是Core BlueTooth框架中用來(lái)描述這兩個(gè)數(shù)據(jù)結(jié)構(gòu)的對(duì)象。CBPeripheral软驰、CBService涧窒、CBCharacteristic是一種從上至下的聚合樹形結(jié)構(gòu)。
開發(fā)Peripheral服務(wù)
1.如果你是要將iPhone或者M(jìn)acBook作為一個(gè)Peripheral的話锭亏,你需要從Peripheral角度出發(fā)來(lái)進(jìn)行編程纠吴。
2.通過(guò)CBPeripheralManager & CBCentral表示Peripheral設(shè)備和Central設(shè)備。
3.CBPeripheralManager用來(lái)管理Peripheral的Service&Characteristic數(shù)據(jù)庫(kù)中發(fā)布的Service慧瘤,同時(shí)負(fù)責(zé)將這些服務(wù)傳遞給CBCentral戴已。
4.通過(guò)CBMutableService & CBMutableCharacteristic表示本地Pheripheral數(shù)據(jù)
下節(jié)我們將正式開始講解如何利用CoreBluetooth框架在代碼中實(shí)現(xiàn)藍(lán)牙通信。
藍(lán)牙SDK 是:CoreBluetooth.framework 提供的碑隆。