一、藍牙基礎知識
(一)常見簡稱
? ?1.MFI? make for ipad ,iphone, itouch 專們為蘋果設備制作的設備,開發使用ExternalAccessory 框架(認證流程貌似挺復雜的,而且對公司的資質要求較高),詳見:關于MFi認證你所必須要知道的事情
? 2.BLE buletouch low energy,藍牙4.0設備因為低耗電,所以也叫做BLE,開發使用CoreBluetooth 框架(因為蘋果系統的更新與設備,當下蘋果設備藍牙都是支持藍牙4.0[BLE(Bluetoothlow energy)],關于普通藍牙ExternalAccessory這里就不做介紹)
(二)兩種模式
? ? 1.CBCentralMannager 中心模式 :以手機(app)作為中心,連接其他外設的場景 ? ??
? ? 2. CBPeripheralManager 外設模式:使用手機作為外設連接其他中心設備操作的場景
PS:因為蘋果設備的安全性和封閉性,蘋果設備不能通過與其他設備藍牙鏈接進行文件傳輸等功能,所以在iOS與藍牙開發的編程中是CBCentralMannager 中心模式編程居多.
(三)CBPeripheral 、CBService、CBCharacteristic
? ? 一個CBPeripheral可以在設備列表搜索到一個或多個CBService,一個CBService對應一個或多個CBCharacteristic,每一個CBCharacteristic對應著藍牙設備的不同屬性,通過讀的CBCharacteristic可以獲取到藍牙設備發送出來的信息,通過寫的CBCharacteristic可以由客戶端向藍牙設備發送指令.
(四)關于藍牙系統開發庫的初步認識
當我們使用CoreBluetooth系統框架進行藍牙開發的時候,有時候某種功能需要和指定的藍牙設備進行操作,這就需要我們拿到藍牙設備的唯一標識,來確定是哪一臺設備,先看下一當我們掃描到的藍牙設備時,所能拿到的屬性:
在開發藍牙編程中,藍牙外設的設備名稱,設備UUID,設備讀寫屬性的UUIDD可以通過與硬件廠商溝通獲取到或者通過藍牙助手進行獲取,iOS藍牙4.0的開發基于和搜索到UUID進行匹配,然后建立通信通道,因此關于設備的UUID至關重要.
二.藍牙編程開發
? ? ?(一) 準備工程
? ? ? ? ?1,設置需要進行鏈接的設備名稱,設備UUID,服務UUID
? ? ? 2.引入頭文件,遵循代理,創建藍牙開發對象
#import ?<CoreBluetooth/CoreBltooth.h> ? ? ? ?//藍牙開發引用的系統庫
<CBCentralManagerDelegate,CBPeripheralDelegate> ?//藍牙中心模式開發遵循的代理
@property (nonatomic,retain) CBCentralManager *manager; ?//藍牙操作對象
@property (nonatomic,retain) CBPeripheral *peripheral; ? ? ?//獲取藍牙設備信息的對象
@property (nonatomic,retain) CBCharacteristic *characteristic; ?//藍牙設備讀寫服務操作對象
三.小結
? ? ? ?當下各種智能硬件的興起,客戶端鏈接外設需求開始多起來,由于公司智能醫療設備的接入,使作者對于iOS藍牙接入頭疼了一個月,這一個月也是遇到好多巨坑,瑾以此篇獻給那些奮斗在藍牙第一線和需要了解藍牙開發的小伙伴們,希望各位小伙伴能對我文章予以斧正,通過留言@我,或者直接發送郵件到924476038@qq.com[因為接觸簡書時間不長,對于代碼塊這個技能還沒get到],望各位理解
PS:如果這篇無法使大家能完全理解藍牙編程,不能很好的去應用,大伙可以看看這篇,這篇主講的是藍牙在項目實戰中使用,希望可以對你有所幫助 ??藍牙實戰
PS:好幾位同學都簡信或者QQ聯系我說能否提供一份Demo,這肯定是可以的,這是對我的文章最大的肯定.
文章demo地址:github.com/iOSzhangkai/BLE4.0_iOS