iT邦幫忙

2025 iThome 鐵人賽

DAY 29
0
Mobile Development

我將成為Swift之強者系列 第 29

Day29 - iOS 藍牙開發實作:總結篇

  • 分享至 

  • xImage
  •  

Day29 - iOS 藍牙開發實作:總結篇

今天來到我們藍牙開發系列的最終章。
過去幾天,我們完成了 藍牙核心服務(BluetoothServices.swift)代理協定(BluetoothServiceDelegate.swift)、以及 主畫面控制與資料顯示(MainViewController.swift)
而今天,我們要介紹的是負責藍牙清單 UI 呈現的 客製化 Cell(BluetoothTableViewCell.swift),並為整個系列做一個總結。


BluetoothTableViewCell.swift

在專案中,我們使用 UITableView 來顯示掃描到的藍牙設備。
每一列都需要一個自訂的 TableViewCell,程式碼如下:

import UIKit

class BluetoothTableViewCell: UITableViewCell {

    @IBOutlet weak var lbName: UILabel! // 顯示設備名稱的標籤
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // 初始化 UI 設定
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        // 配置選中狀態的樣式
    }
}

這段程式的重點有兩個:

  • @IBOutlet weak var lbName:用來顯示藍牙設備的名稱。當 CBCentralManager 掃描到設備後,我們會將 peripheral.name 顯示在這裡。
  • awakeFromNib()setSelected():這兩個是 UIKit 的生命週期方法,當從 Storyboard 或 XIB 載入 Cell 時,會在這裡進行初始化或狀態更新設定。

串起整個專案的架構

到目前為止,我們已經完成了這個專案的三個核心模組:

  1. BluetoothServices.swift

    • 使用 CBCentralManager 進行掃描、連線、與斷線管理。
    • 採用單例 shared 設計,方便全域共用。
    • 所有藍牙事件皆於背景執行緒運行,避免阻塞主執行緒。
  2. BluetoothServiceDelegate.swift

    • 使用 protocol 將藍牙掃描與數據讀取結果回傳給 UI 層。
    • 避免邏輯與介面耦合,提升程式維護性。
  3. BluetoothTableViewCell.swift

    • 提供藍牙設備列表的 UI 元件顯示。
    • 讓使用者能清楚辨識可連接的藍牙裝置。

總結

這個系列從 Info.plist 權限設定 開始,到 核心服務架構設計Delegate 資料回傳、最後到 UI 顯示與互動,完整地帶你走過 iOS 藍牙開發的基本流程。

藍牙開發的挑戰主要在於非同步事件的管理與設備連線狀態的維護,而我們的專案正是建立在這些重點基礎上。
接下來你可以繼續擴充以下功能:

  • 實作 特徵值 (Characteristic) 的資料傳輸與解析
  • 新增 連線中動畫或 Loading 狀態顯示
  • 建立 自動重連與設備快取機制

明日將提供完整的 專案程式碼與 XIB 介面範例,方便大家直接下載、測試與延伸開發。


上一篇
Day28 - iOS 藍牙開發實作:從掃描到 UI 呈現,打造藍牙設備清單
下一篇
Day30 - iOS 藍牙開發實作:XIB 及程式碼展示
系列文
我將成為Swift之強者30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言