技能誌

【開發筆記】我和三個藍牙裝置的日子: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
iOS App 客製化 上架。
$ 10000
iOS App 客製化 上架。
0 / 1000
回到文章列表