
【開發筆記】我和三個藍牙裝置的日子:CoreBluetooth 多工實戰篇
資訊/科技

奧提斯
更新日:2025年4月22日
興趣來了擋也擋不住,親戚知道我開始開發手環App,一口氣塞了另外三款給我。這下我也算是騎虎難下了...
一次連多個 BLE 裝置?
有些應用(例如健身房系統、醫療數據採集)會同時接收多個手環的數據。iOS 是支援多裝置連線的,只要你操作得當,不會翻船。
✅ 基本策略:
- 使用同一個
CBCentralManager
- 掃描到不同的 Peripheral 並個別
connect
- 為每個 peripheral 建立屬於它的 delegate & 狀態處理邏輯
var connectedPeripherals: [CBPeripheral] = []
記得每個 peripheral 都要個別記錄,不然你會搞混誰傳來的數據是誰的
Peripheral 模式:讓你的 iPhone 當手環!
是的,iOS 也能當 BLE 外設!雖然不像 Android 那麼自由,但你還是可以用 CBPeripheralManager
模擬一個裝置來傳資料給別的 Central。
let peripheralManager = CBPeripheralManager(delegate: self, queue: nil)
你可以自訂 Service / Characteristic 來讓對方讀資料或訂閱變化。
為什麼要這樣做?
- 模擬 BLE 裝置
- 測試多裝置互連邏輯
- 玩出創意 App,例如讓兩台 iPhone 傳資料互相 "配對"
BLE 開發最痛的事:除。錯。
你以為 app crash 很難 debug?錯。BLE 沒錯訊、沒 log、有時還會 ghost 你,才是真正的修羅場。
除錯小工具:
- Xcode Console:多印 log!尤其是
didDiscover
,didConnect
,didFailToConnect
等等。 - LightBlue Explorer / nRF Connect:這兩個 App 超好用,可以快速檢查 BLE 裝置提供的 Service/Characteristic。
- UUID 規格手冊:永遠把手環廠商文件收好,它是唯一能讓你不盲目的地圖 🗺
開發心得 Tips:
- 千萬別在 UI thread 操作 BLE:用 background queue
- 多裝置下的狀態管理要細緻,每個 peripheral 都要有自己的狀態標記
- 電量管理也是門學問,BLE 雖省電,但不代表你可以無腦 poll
小結
藍牙開發初看簡單、實際執行超燒腦,但搞懂之後真的很有成就感。你可以做到「讓手機和硬體對話」,這本身就是一種魔法。
下一步?也許你可以打造屬於自己的 BLE 裝置(Arduino + BLE 模組),或甚至挑戰藍牙 Mesh 網路系統。
iOS App 客製化 上架。
iOS 軟體開發、修改、維護既有App
IT/程式 > iPhone/iPad/Mac應用程式開發
$ 10000

$ 10000

0 / 1000