◀ 上一章:系統架構 | 返回目錄


本章定義 Fugu 團隊負責的 App 開發範圍:使用 React Native 開發跨平台 App,包含 BLE 設備整合、本地資料管理、以及 API Client 實作。


📚 本章節文件結構

03.1 App 架構

  • React Native 技術堆疊 (TypeScript, react-native-ble-plx)
  • App 分層架構 (UI Layer / Service Layer / Data Layer)
  • 核心模組:WorkoutEngine, BLEManager, APIClient, StorageService
  • 狀態管理方案 (Redux Toolkit / Zustand)
  • 開發環境設定

適合對象:React Native 開發者、App 架構師

03.2 BLE 設備整合

  • 支援設備 (SolidFocus Bike 含阻力控制, Rower 僅讀取)
  • FTMS v1.0.1 GATT Services & Characteristics
  • BLE 連線狀態機 (Disconnected → Scanning → Connecting → Ready)
  • 資料解析 (Indoor Bike Data, Rower Data) 含 TypeScript 範例
  • 控制指令 (Resistance Control Point) 使用 react-native-ble-plx
  • 權限處理 (iOS & Android)

適合對象:React Native BLE 開發者、設備整合工程師

參考文件external/SolidFocus FTMS v1.0.1 整合規範.pdf

03.3 資料流與同步策略

  • 設計原則:Offline-First, Mobile Data First
  • 資料來源定義:Local DB vs Server DB
  • 完整 Flow 定義
    • Flow 1: App 啟動流程(何時讀 Local / 何時呼叫 API)
    • Flow 2: 登入與資料同步(Login 後如何處理 Local 與 Server 資料)
    • Flow 3: 開始運動流程(完全 Local,不使用網路)
    • Flow 4: 運動結束與上傳(背景非阻塞上傳)
    • Flow 5: 查看歷史記錄(從 Local 立即顯示)
    • Flow 6: 登出流程(處理 Pending Sessions)
    • Flow 7: 課程列表顯示(快取策略)
    • Flow 8: Token Refresh(自動重試)
  • 錯誤處理與 Retry 策略

03.4 本地資料庫 Schema

  • 技術選型:為何選擇 WatermelonDB
  • Schema 設計:5 個 Tables (users, sessions, trainings, training_videos, sync_queue)
  • Models 定義:完整的 TypeScript Model 範例
  • 使用範例:CRUD 操作、React 整合、自動更新 UI
  • 同步策略:上傳 Pending Sessions、下載 Server Sessions

🔗 相關章節


下一步:閱讀 03.1 App 架構 了解 App 架構設計。

◀ 返回目錄