iOS藍芽4.0(BLE)開發(一)
本文是參考了網上眾多資料總結。
做iOS開發也有很長時間了一直沒有時間和機會做藍芽方面的開發。2016年由於工作需要,開始接觸藍芽開發,剛開始做的時候在網上搜尋各種文章,網上雖然關於這方面的東西也有很多,但是講解的比較詳細的少之又少。
一、iOS和藍芽相關的框架
-
GameKit.framework
多用於遊戲開發,僅限於iOS裝置之間的連線。 -
MultipeerConnectivity.framework
這個就是iOS裝置之間互相傳檔案用的。 -
ExternalAccessory.framework
這個框架可以用於和第三方藍芽進行互動,但是必須是MFI(make for iPhone、iPad、iPod等裝置),但是這種裝置需要經過蘋果的認證,而且比較困難,所以用的相當少。 -
CoreBluetooth.framework
主要用於和第三方藍芽的互動,這個不需要蘋果的認證,但是必須是藍芽4.0以上的裝置,藍芽4.0也叫BLE(Bluetooth Low Energy)所以一般都稱之為BlE開發,從iPhone4s及其以後的裝置都是支援BLE,這是我們主講的。
一般情況下現在所說的iOS藍芽開發也都是BLE開發。我們現在所做的智慧家居,智慧手環,類似的這些東西基本都是使用的這種方式與iPhone連線的。
二、CoreBluetooth框架簡介
1. 兩個核心概念
CBCentral :中心裝置。一般為主動發起連線的裝置就是中心裝置。
CBPeripheral :外圍裝置。比如你用你手機的APP去連線你的智慧手環,此時,你的手機叫中心裝置,手環就叫外部裝置。一般為被連線的裝置。又比如,如果是電腦發起連線來連線你的手機,那麼此時你的手機就變成了外設,所以說手機可以作為中心裝置,也可以作為外部裝置。
2. 其他概念
服務:每一個外部裝置都會擁有若干個服務,比如說你的智慧手環可能會擁有一個管理你心率的服務,還有一個管理你跑步情況的服務。這些服務是你的硬體工程師設定的,作為我們在開發的時候只需要知道有哪些服務就可以了,每一個服務都會有一個唯一的UUID,就是一個字串,用於辨別區分是哪個服務(外部裝置也會有其對應的一個UUID),如果你連線到這個裝置的話,你是可以搜尋到這些服務的。
特徵:每一個服務裡邊都會有若干個特徵,我們就是通過這些特徵值來與裝置進行互動的,還拿手環的例子來說,比如在它的管理你跑步情況的服務中可能有兩個特徵值,一個特徵是讀取手環內你跑步的資料,一個特徵是用於你的APP傳送資料給這個服務,進行一些設定什麼的,同樣每個服務中的特徵也是由你的硬體工程師設定好的,你只需要用就好了,當然這些特徵值也會有其對應的一個唯一的UUID。
特徵的屬性:這些個特徵的屬性也是不盡相同有的是用來讀資料的,有的是用來訂閱通知的,有的是用來傳送資料的,這些屬性同樣也都是設定好的,我們只需要知道哪一個特徵是什麼屬性就好了。這些屬性種類有一個列舉:
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
};
3. CoreBluetooth框架其實就包含了兩種場景:
場景一:手機作為中心裝置
場景二:手機作為外圍裝置
這兩種場景分別有一組相應的API和類。如圖所示:
如果我們現在要開發一個智慧手環,那麼我們的手機就充當了中心裝置的角色所以將會使用左邊的這組類;
反之如果我們要將我們的手機作為外圍裝置來開發,那麼就會使用右邊的這組。一般情況下我們使用左邊的這組會相應的多一點。
三、CoreBluetooth框架的基本使用流程
1. 中心裝置
建立中心裝置的物件——>搜尋外部裝置——>連線目標外部裝置——>掃描到外設中的服務——>獲取到其中的特徵——>通過這些特徵於裝置做資料的互動——>互動完畢斷開連線
2. 外圍裝置
建立外部裝置物件——>設定自己的服務,特徵,許可權等——>釋出廣告——>設定訂閱以及讀寫特徵的委託方法
相關文章
- 藍芽4.0 BLE藍芽
- React Native 藍芽4.0 BLE開發React Native藍芽
- Android藍芽4.0(ble)開發的解決方案Android藍芽
- iOS-BLE藍芽開發持續更新iOS藍芽
- iOS藍芽4.0開發基礎教程iOS藍芽
- iOS 藍芽4.0開發使用(內附Demo)iOS藍芽
- 藍芽4.0BLE中協議棧詳解藍芽協議
- iOS之BLE藍芽SDK開發個人總結(進階篇)iOS藍芽
- iOS之BLE藍芽SDK開發個人總結(基礎篇)iOS藍芽
- iOS藍芽開發iOS藍芽
- BLE低功耗藍芽藍芽
- ios微信小程式 BLE藍芽通訊開發介面UI卡頓問題iOS微信小程式藍芽UI
- android藍芽BLE(一) —— 掃描Android藍芽
- iOS藍芽Mesh開發總結一iOS藍芽
- iOS 藍芽開發 - swift版iOS藍芽Swift
- Android BLE 藍芽開發——掃碼槍基於BLESSEDAndroid藍芽
- Android Ble藍芽入門Android藍芽
- iOS 藍芽開發·基礎篇iOS藍芽
- Android藍芽那點事——深入瞭解藍芽BlE藍芽 《總結篇》Android藍芽
- android 4.0 藍芽分析之一Android藍芽
- android藍芽BLE(三) —— 廣播Android藍芽
- android藍芽BLE(二) —— 通訊Android藍芽
- iOS藍芽Mesh開發總結二iOS藍芽
- iOS藍芽開發 Bluetooth藍芽CoreBluetooth 藍芽中心裝置的實現 藍芽外設的實現 有DemoiOS藍芽
- Android BLE藍芽詳細解讀Android藍芽
- BLE藍芽那些事—深入瞭解Android藍芽Bluetooth基礎篇藍芽Android
- iOS 藍芽iOS藍芽
- ios 藍芽iOS藍芽
- GJLightBlueTooth——一個輕量級的iOS藍芽開發庫iOS藍芽
- [轉載]ios藍芽開發學習筆記(四)ios藍芽應用的後臺處理iOS藍芽筆記
- iOS BLE藍芽開發資料傳輸協議詳解 常用演算法(AES加密,HMAC_hash,PRF)iOS藍芽協議演算法加密Mac
- iOSBluetooth(藍芽)iOS藍芽
- android 4.0 藍芽分析之二Android藍芽
- iOS藍芽開發CoreBlueTooth庫核心方法使用介紹iOS藍芽
- Android開發--藍芽操作Android藍芽
- 微信小程式藍芽開發微信小程式藍芽
- 使用RxJava幫助低功耗藍芽(BLE)進行通訊RxJava藍芽
- MASA MAUI Plugin IOS藍芽低功耗(三)藍芽掃描UIPluginiOS藍芽