iOS藍芽開發(一)藍芽相關基礎知識
藍芽常見名稱和縮寫
-
MFI ======= make for ipad ,iphone, itouch 專們為蘋果裝置製作的裝置
-
BLE ==== buletouch low energy,藍芽4.0裝置因為低耗電,所以也叫做BLE
-
peripheral,central == 外設和中心,發起連線的時central,被連線的裝置為perilheral
-
service and characteristic === 服務和特徵 每個裝置會提供服務和特徵,類似於服務端的api,但是機構不同。每個外設會有很多服務,每個服務中包含很多欄位,這些欄位的許可權一般分為 讀read,寫write,通知notiy幾種,就是我們連線裝置後具體需要操作的內容。
-
Description 每個characteristic可以對應一個或多個Description使用者描述characteristic的資訊或屬性
-
MFI === 開發使用ExternalAccessory 框架
-
4.0 BLE === 開發使用CoreBluetooth 框架
藍芽基礎知識
CoreBluetooth框架的核心其實是兩個東西,peripheral和central, 可以理解成外設和中心。對應他們分別有一組相關的API和類
-
這兩組api分別對應不同的業務場景,左側叫做中心模式,就是以你的app作為中心,連線其他的外設的場景,而右側稱為外設模式,使用手機作為外設別其他中心裝置操作的場景。
-
服務和特徵,特徵的屬性(service and characteristic):
每個裝置都會有一些服務,每個服務裡面都會有一些特徵,特徵就是具體鍵值對,提供資料的地方。每個特徵屬性分為這麼幾種:讀,寫,通知這麼幾種方式。//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 };
外設、服務、特徵間的關係
藍芽中心模式流程
1. 建立中心角色
2. 掃描外設(discover)
3. 連線外設(connect)
4. 掃描外設中的服務和特徵(discover)
- 4.1 獲取外設的services
- 4.2 獲取外設的Characteristics,獲取Characteristics的值,獲取Characteristics的Descriptor和Descriptor的值
5. 與外設做資料互動(explore and interact)
6. 訂閱Characteristic的通知
7. 斷開連線(disconnect)
藍芽外設模式流程
1. 啟動一個Peripheral管理物件
2. 本地Peripheral設定服務,特性,描述,許可權等等
3. Peripheral傳送廣告
4. 設定處理訂閱、取消訂閱、讀characteristic、寫characteristic的委託方法
藍芽裝置狀態
1. 待機狀態(standby):裝置沒有傳輸和傳送資料,並且沒有連線到任何設
2. 廣播狀態(Advertiser):週期性廣播狀態
3. 掃描狀態(Scanner):主動尋找正在廣播的裝置
4. 發起連結狀態(Initiator):主動向掃描裝置發起連線。
5. 主裝置(Master):作為主裝置連線到其他裝置。
6. 從裝置(Slave):作為從裝置連線到其他裝置。
藍芽裝置的五種工作狀態
- 準備(standby)
- 廣播(advertising)
- 監聽掃描(Scanning
- 發起連線(Initiating)
- 已連線(Connected)
藍芽和版本的使用限制
- 藍芽2.0 === 越獄裝置
- 藍芽4.0 === IOS6 以上
- MFI認證裝置(Make For ipod/ipad/iphone) === 無限制
名詞解釋
- GAAT : Generic Attribute Profile , GATT配置檔案是一個通用規範,用於在BLE鏈路上傳送和接收被稱為“屬性”的資料塊。目前所有的BLE應用都基於GATT。 藍芽SIG規定了許多低功耗裝置的配置檔案。配置檔案是裝置如何在特定的應用程式中工作的規格說明。注意一個裝置可以實現多個配置檔案。例如,一個裝置可能包括心率監測儀和電量檢測。
- Characteristic 一個characteristic包括一個單一變數和0-n個用來描述characteristic變數的descriptor,characteristic可以被認為是一個型別,類 似於類。
- Descriptor Descriptor用來描述characteristic變數的屬性。例如,一個descriptor可以規定一個可讀的描述,或者一個characteristic變數可接受的範圍,或者一個characteristic變數特定的測量單位。 Service service是characteristic的集合。例如,你可能有一個叫“Heart Rate Monitor(心率監測儀)”的service,它包括了很多characteristics,如“heart rate measurement(心率測量)”等。你可以在bluetooth.org 找到一個目前支援的基於GATT的配置檔案和服務列表。
本文釋出在劉彥瑋的技術部落格,轉載請註明出處.(借閱學習,若侵可刪)