最近今天看了些關(guān)于藍(lán)牙的知識(shí)點(diǎn)煌妈,果斷去深入了解了一些开镣,雖然現(xiàn)在藍(lán)牙出了5.0,但一些藍(lán)牙的基礎(chǔ)知識(shí)必不可少哦滋戳。
藍(lán)牙常見(jiàn)名稱(chēng)和縮寫(xiě)
MFI ======= make for ipad ,iphone, itouch 專(zhuān)們?yōu)樘O(píng)果設(shè)備制作的設(shè)備
BLE ==== buletouch low energy斋竞,藍(lán)牙4.0設(shè)備因?yàn)榈秃碾娋笤迹砸步凶鯞LE
peripheral,central == 外設(shè)和中心,發(fā)起連接的時(shí)central,被連接的設(shè)備為perilheral
service and characteristic === 服務(wù)和特征 每個(gè)設(shè)備會(huì)提供服務(wù)和特征坝初,類(lèi)似于服務(wù)端的api浸剩,但是機(jī)構(gòu)不同钾军。每個(gè)外設(shè)會(huì)有很多服務(wù),每個(gè)服務(wù)中包含很多字段绢要,這些字段的權(quán)限一般分為 讀read吏恭,寫(xiě)write,通知notiy幾種重罪,就是我們連接設(shè)備后具體需要操作的內(nèi)容樱哼。
Description 每個(gè)characteristic可以對(duì)應(yīng)一個(gè)或多個(gè)Description用戶(hù)描述characteristic的信息或?qū)傩?/p>
MFI === 開(kāi)發(fā)使用ExternalAccessory 框架
4.0 BLE === 開(kāi)發(fā)使用CoreBluetooth 框架
藍(lán)牙基礎(chǔ)知識(shí)
CoreBluetooth框架的核心其實(shí)是兩個(gè)東西,peripheral和central, 可以理解成外設(shè)和中心蛆封。對(duì)應(yīng)他們分別有一組相關(guān)的API和類(lèi)
這兩組api分別對(duì)應(yīng)不同的業(yè)務(wù)場(chǎng)景唇礁,左側(cè)叫做中心模式,就是以你的app作為中心惨篱,連接其他的外設(shè)的場(chǎng)景,而右側(cè)稱(chēng)為外設(shè)模式围俘,使用手機(jī)作為外設(shè)別其他中心設(shè)備操作的場(chǎng)景砸讳。
服務(wù)和特征,特征的屬性(service and characteristic):
每個(gè)設(shè)備都會(huì)有一些服務(wù)界牡,每個(gè)服務(wù)里面都會(huì)有一些特征簿寂,特征就是具體鍵值對(duì),提供數(shù)據(jù)的地方宿亡。每個(gè)特征屬性分為這么幾種:讀常遂,寫(xiě),通知這么幾種方式挽荠。
//objcetive?c特征的定義枚舉
typedef?NS_OPTIONS(NSUInteger,?CBCharacteristicProperties)?{
????CBCharacteristicPropertyBroadcast???????????????????????????????????????????????=?0x01,
????CBCharacteristicPropertyRead????????????????????????????????????????????????????=?0x02,
????CBCharacteristicPropertyWriteWithoutResponse????????????????????????????????????=?0x04,
????CBCharacteristicPropertyWrite???????????????????????????????????????????????????=?0x08,
????CBCharacteristicPropertyNotify??????????????????????????????????????????????????=?0x10,
????CBCharacteristicPropertyIndicate????????????????????????????????????????????????=?0x20,
????CBCharacteristicPropertyAuthenticatedSignedWrites???????????????????????????????=?0x40,
????CBCharacteristicPropertyExtendedProperties??????????????????????????????????????=?0x80,
????CBCharacteristicPropertyNotifyEncryptionRequired?NS_ENUM_AVAILABLE(NA,?6_0)?????=?0x100,
????CBCharacteristicPropertyIndicateEncryptionRequired?NS_ENUM_AVAILABLE(NA,?6_0)???=?0x200
};
外設(shè)克胳、服務(wù)、特征間的關(guān)系
藍(lán)牙中心模式流程
1. 建立中心角色
2. 掃描外設(shè)(discover)
3. 連接外設(shè)(connect)
4. 掃描外設(shè)中的服務(wù)和特征(discover)
? ? - 4.1 獲取外設(shè)的services
? ? - 4.2 獲取外設(shè)的Characteristics,獲取Characteristics的值圈匆,獲取Characteristics的Descriptor和Descriptor的值
5. 與外設(shè)做數(shù)據(jù)交互(explore and interact)
6. 訂閱Characteristic的通知
7. 斷開(kāi)連接(disconnect)
藍(lán)牙外設(shè)模式流程
1. 啟動(dòng)一個(gè)Peripheral管理對(duì)象
2. 本地Peripheral設(shè)置服務(wù),特性,描述漠另,權(quán)限等等
3. Peripheral發(fā)送廣告
4. 設(shè)置處理訂閱、取消訂閱跃赚、讀characteristic笆搓、寫(xiě)characteristic的委托方法
藍(lán)牙設(shè)備狀態(tài)
1. 待機(jī)狀態(tài)(standby):設(shè)備沒(méi)有傳輸和發(fā)送數(shù)據(jù),并且沒(méi)有連接到任何設(shè)
2. 廣播狀態(tài)(Advertiser):周期性廣播狀態(tài)
3. 掃描狀態(tài)(Scanner):主動(dòng)尋找正在廣播的設(shè)備
4. 發(fā)起鏈接狀態(tài)(Initiator):主動(dòng)向掃描設(shè)備發(fā)起連接纬傲。
5. 主設(shè)備(Master):作為主設(shè)備連接到其他設(shè)備满败。
6. 從設(shè)備(Slave):作為從設(shè)備連接到其他設(shè)備。
藍(lán)牙設(shè)備的五種工作狀態(tài)
準(zhǔn)備(standby)
廣播(advertising)
監(jiān)聽(tīng)掃描(Scanning
發(fā)起連接(Initiating)
已連接(Connected)
藍(lán)牙和版本的使用限制
藍(lán)牙2.0 === 越獄設(shè)備
藍(lán)牙4.0 === iOS 6 以上
MFI認(rèn)證設(shè)備(Make For ipod/ipad/iphone) === 無(wú)限制