Core Bluetooth概述
這個(gè)Core Bluetooth框架讓你的IOS 和 Mac 應(yīng)用程序與藍(lán)牙低功耗設(shè)備交互驻右。例如梁沧,你的應(yīng)用程序能夠發(fā)現(xiàn)郭宝,探索摔敛,和與低功耗外圍設(shè)備交互廷蓉,比如心率監(jiān)測(cè)器,數(shù)字恒溫控制器马昙,甚至其他的iOS 設(shè)備桃犬。
這個(gè)框架是為了使用低功耗設(shè)備的藍(lán)牙4.0規(guī)范的抽象,也就是說行楞,它為你隱藏了一些規(guī)范里的低水平細(xì)節(jié)疫萤,開發(fā)者利用它更容易來開發(fā)與藍(lán)牙低功耗設(shè)備的應(yīng)用程序。因?yàn)檫@個(gè)框架是在該規(guī)范的基礎(chǔ)上敢伸,規(guī)范中的一些概念和術(shù)語(yǔ)已經(jīng)被采用扯饶。這個(gè)章節(jié)給你介紹你需要知道使用Core Bluetooth框架開發(fā)一個(gè)好的應(yīng)用程序所需要的主要術(shù)語(yǔ)和概念。
中央和外圍設(shè)備和它們?cè)谒{(lán)牙交互中的角色
在藍(lán)牙低功耗交互中涉及到兩個(gè)主要的成員:中央和外圍設(shè)備池颈∥残颍基于某種傳統(tǒng)的客戶端-服務(wù)端架構(gòu),一個(gè)外圍設(shè)備一般有其他設(shè)備需要的數(shù)據(jù)躯砰,一個(gè)中央通過外圍設(shè)備提供的服務(wù)信息來完成一些特別的任務(wù)每币,如圖1-1所示,例如琢歇,一個(gè)心率監(jiān)測(cè)器有你的Mac或者iOS應(yīng)用程序可能需要的有用的信息兰怠,為了已一種友好的方式顯示用戶的心率梦鉴。
中央發(fā)現(xiàn)和連接正在廣播的外設(shè)(外圍設(shè)備)
外設(shè)會(huì)廣播一些它們?cè)趶V播包中有的數(shù)據(jù)。一個(gè)廣播包是一些相當(dāng)少的數(shù)據(jù)揭保,可以包含一個(gè)外設(shè)必須提供的有用信息肥橙,比如外設(shè)的名稱和主要功能。一個(gè)實(shí)際的例子秸侣,一個(gè)數(shù)字恒溫控制器可能廣播它給一個(gè)房間提供當(dāng)前溫度存筏。在藍(lán)牙低功耗中,廣播是主要的方式來使外設(shè)被知道味榛。
一個(gè)中央椭坚,在另一方面,可以掃面和監(jiān)聽它感興趣的一些正在廣播信息的外設(shè)搏色,如圖1-2. 中央可以請(qǐng)求連接它已經(jīng)發(fā)現(xiàn)在廣播的外設(shè)善茎。
外設(shè)的數(shù)據(jù)結(jié)構(gòu)是怎樣的
連接到外設(shè)的目的是開始與它提供的數(shù)據(jù)進(jìn)行探索和交互。在你做這些之前频轿,然而垂涯,它有助于理解外設(shè)的數(shù)據(jù)結(jié)構(gòu)是怎樣的。
外設(shè)可能包含一個(gè)或多個(gè)服務(wù)或者提供一些有用的信息如它們被連接的信號(hào)強(qiáng)度略吨。一個(gè)服務(wù)是一個(gè)數(shù)據(jù)的集合集币,并且為完成一些功能和一個(gè)設(shè)備(或部分設(shè)備)的特性所相關(guān)的行為。一個(gè)心率監(jiān)測(cè)器的服務(wù)可能是來顯示從心率監(jiān)測(cè)傳感器來的心率數(shù)據(jù)翠忠。
服務(wù)本身是由特征或包括的服務(wù)(即引用其他服務(wù))組成的鞠苟,一個(gè)特征對(duì)外設(shè)的服務(wù)提供更多的詳情。例如秽之,心率服務(wù)当娱,只是描述可能包含的一個(gè)用來描述設(shè)備心率傳感器的身體位置的特征和另一個(gè)傳輸心率測(cè)量數(shù)據(jù)的特征。圖1-3闡述了一種心率監(jiān)測(cè)器的服務(wù)和特征的可能結(jié)構(gòu)考榨。
中央與外設(shè)的數(shù)據(jù)之間探索與交互跨细。
當(dāng)一個(gè)中央與外設(shè)建立連接成功之后,它能夠發(fā)現(xiàn)該外設(shè)提供的全部范圍的服務(wù)和特征(廣播數(shù)據(jù)可能只包含有效服務(wù)的一小部分)河质。
中央也可以通過給服務(wù)的特征值進(jìn)行讀或?qū)憗砼c外設(shè)服務(wù)進(jìn)行交互冀惭,例如,你的應(yīng)用程序可以從數(shù)字恒溫控制器來請(qǐng)求當(dāng)前房間的溫度掀鹅,或者提供一個(gè)恒溫值來設(shè)置房間的溫度散休。
中央,外設(shè)乐尊,和外設(shè)數(shù)據(jù)是如何表現(xiàn)的
一個(gè)簡(jiǎn)單直接的方法來將藍(lán)牙低功耗交互中主要成員和有關(guān)數(shù)據(jù)映射到Core Bluetooth框架戚丸。
在中央端的對(duì)象
當(dāng)你使用一個(gè)本地中央與一個(gè)遠(yuǎn)程外設(shè)交互,你是在藍(lán)牙低功耗交互的中央端執(zhí)行操作扔嵌。除非你設(shè)置了一個(gè)本地的外設(shè)限府,用它來響應(yīng)中央端的請(qǐng)求夺颤,你的藍(lán)牙事務(wù)主要是在中央端。
關(guān)于如何在你的應(yīng)用程序?qū)崿F(xiàn)中央端的信息胁勺,請(qǐng)看Performing Common Central Role Tasks 和 Best Practices for Interacting With a Remote Peripheral Device.
本地中央和遠(yuǎn)程外設(shè)
在中央端世澜,使用CBCentralManager
對(duì)象來代表一個(gè)本地中央設(shè)備,這個(gè)對(duì)象是用來管理發(fā)現(xiàn)和連接遠(yuǎn)程外設(shè)(用CBPeripheral
表示)姻几,包括掃描宜狐,發(fā)現(xiàn)势告,連接正在廣播的外設(shè)蛇捌。圖1-4顯示在Core Bluetooth框架中本地中央和遠(yuǎn)程外設(shè)是如何表示的。
遠(yuǎn)程外設(shè)的數(shù)據(jù)是通過CBService
和CBCharacteristic
對(duì)象來表示的咱台。
當(dāng)你和遠(yuǎn)程外設(shè)(用CBPeripheral
對(duì)象表示)的數(shù)據(jù)進(jìn)行交互,你是在處理它的服務(wù)和特征络拌。在Core Bluetooth框架中,遠(yuǎn)程外設(shè)的服務(wù)用CBService
對(duì)象表示回溺,相似的春贸,遠(yuǎn)程外設(shè)的服務(wù)的特征是用CBCharacteristic
對(duì)象表示,如圖1-5闡述了一個(gè)遠(yuǎn)程外設(shè)的服務(wù)和特征的基本結(jié)構(gòu)遗遵。
在外設(shè)端的對(duì)象
在OSX v10.9和iOS6, Mac和iOS設(shè)備可以作為藍(lán)牙低功耗外設(shè)萍恕,給其他的設(shè)備服務(wù)數(shù)據(jù),包括其他的Macs, iPhones,和iPads车要。當(dāng)設(shè)置你的設(shè)備來實(shí)現(xiàn)外設(shè)角色允粤,你是在藍(lán)牙低功耗交互中的外設(shè)端執(zhí)行操作。
本地外設(shè)和遠(yuǎn)程中央
在外設(shè)端翼岁,本地外設(shè)用CBPeripheralManager
對(duì)象來表示类垫,這個(gè)對(duì)象是用來發(fā)布在本地外設(shè)的服務(wù)和特征的數(shù)據(jù)庫(kù)中的服務(wù)并且廣播這些服務(wù)給遠(yuǎn)程中央設(shè)備(用CBService
表示)。外設(shè)管理對(duì)象也可以用來響應(yīng)遠(yuǎn)程中央的讀寫請(qǐng)求琅坡。圖1-6顯示在Core Bluetooth框架中本地外設(shè)和遠(yuǎn)程中央如何表示悉患。
本地外設(shè)數(shù)據(jù)是通過CBMutableService
和CBMutableCharacteristic
對(duì)象來表示
當(dāng)你設(shè)置和本地外設(shè)(使用CBPeripheralManager
對(duì)象表示)數(shù)據(jù)交互,你是在處理它的服務(wù)和特征的可變譯本榆俺。在Core Bluetooth框架中售躁,本地外設(shè)的服務(wù)用CBMutableService
對(duì)象來表示,相似的茴晋,本地外設(shè)的服務(wù)的特征用CBMutableCharacteristic
對(duì)象來表示陪捷,圖1-7闡述了本地外設(shè)服務(wù)和特征的基本結(jié)構(gòu)。
關(guān)于如何設(shè)置你的本地設(shè)備來實(shí)現(xiàn)外設(shè)角色晃跺,請(qǐng)看Performing Common Peripheral Role Tasks 和 Best Practices for Setting Up Your Local Device as a Peripheral.