技能誌

【開發筆記】我與藍牙手環的遠距戀愛:CoreBluetooth 進階應用

資訊/科技
奧提斯的頭像
奧提斯
更新日:2025年4月22日

上一篇我們搞定了基本的藍牙配對、探索 Service 與 Characteristic,現在讓我們把這段關係更進一步(喂),一起來看看以下幾個進階技巧,讓你不只能「連上」,還能「穩定交往」:




Notification:讓手環主動「找你聊天」

你總不能一直瘋狂讀資料吧?(這樣像恐怖情人)

這時就要用到 Notification,讓手環有新數據時主動通知你!

peripheral.setNotifyValue(true, for: characteristic)

這樣當手環有新心率、步數等更新時,就會觸發:

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
    // 收到通知啦!來處理資料
}

就像你開啟了「已讀通知」,對方有新訊息立刻推播給你 💬。




寫入資料:你也該主動表達愛了!

有時候你會需要「寫」資料給手環,比如設定鬧鐘、啟動偵測等功能。

let command: [UInt8] = [0x01, 0xFF] // 依照手環協議
let data = Data(command)
peripheral.writeValue(data, for: characteristic, type: .withResponse)

記得 .withResponse 可以讓你知道寫入有沒有成功,這樣你就不會對空氣告白 🫠。




背景連線:即使 App 關了,也還能維繫感情?

是的,藍牙支援某種程度的 背景連線。記得在 Info.plist 加入:

<key>UIBackgroundModes</key>
<array>
    <string>bluetooth-central</string>
</array>

然後你就可以在 App 進入背景時,仍維持連線(當然不是無限制喔,要省電也要考慮使用者隱私~)。




踩雷提醒

  • 藍牙裝置會進入休眠模式,有些手環太久沒人搭理就自斷連,請定期「關心」它。
  • 多個裝置共用 UUID,要多加判斷裝置名稱或其他 metadata 避免誤連。
  • iOS 有時很愛斷你線,加強錯誤處理是必要的愛情保險。



總結

當你能讀資料、接通知、寫指令,還能在背景偷偷守護她(誤),那你們的感情大概就穩了。但每家藍牙裝置的 Protocol 不一樣,耐心閱讀廠商文件才是真本事

總之,和藍牙裝置的關係,不是「能連就好」,而是「會溝通才重要」。讓我們一起寫下每一行 code,都帶著一點點浪漫吧 🌙✨

iOS App 客製化 上架。
iOS 軟體開發、修改、維護既有App
IT/程式 > iPhone/iPad/Mac應用程式開發
$ 10000
iOS App 客製化 上架。
$ 10000
iOS App 客製化 上架。
0 / 1000
回到文章列表