昨天的 MVP 記帳 App 只能乖乖存在手機裡,一旦換機或重灌就 GG 斯密打
今天要讓它升級成「雲端同步版」:登入 Google 帳號 → 紀錄存到 Firebase Firestore → 不管換哪支 iPhone,登入後都能看到同一份資料
聽起來很難,但其實就是把 localStorage/UserDefaults → Firestore。再加上 Google Sign-In,把帳號綁起來
寫 App 時,只靠本機存資料(UserDefaults / CoreData)有幾個限制:
3. 在 Xcode → File > Add Packages… → 輸入 https://github.com/firebase/firebase-ios-sdk,安裝需要的套件:
4. 再加上 https://github.com/google/GoogleSignIn-iOS,勾選 GoogleSignIn
5. 在 Xcode → Target → Info → URL Types,新增一筆:
幫我把原本的 SwiftUI 記帳 App 升級成「Google 登入 + Firebase Firestore 儲存」。
=== 功能需求 ===
1. 使用者登入
- 在 App 啟動畫面提供「使用 Google 登入」按鈕。
- 登入後顯示主畫面(記帳功能)。
- 登出後回到登入畫面。
2. Firestore 儲存
- 登入後所有支出紀錄存放在 Firestore,文件結構:
Collection: users/{userId}/expenses/{expenseId}
- 每筆紀錄欄位:id、amount、category、date。
- 新增/刪除/讀取都要即時更新(用 Firestore snapshot listener)。
3. UI
- 登入畫面:簡單顯示 App 名稱 + 「使用 Google 登入」按鈕。
- 主畫面:同昨天記帳 App,有輸入表單 + 清單 + 總支出。
- 新增/刪除紀錄後立即更新 Firestore。
4. 程式架構
- 使用 SwiftUI + Firebase SDK。
- App 啟動時檢查使用者登入狀態,若已登入直接進入主畫面。
- 定義 Expense 型別 & FirestoreService 類別,封裝 CRUD。
- 以 @StateObject 管理使用者狀態與紀錄。
- 資料同步靠 Firestore snapshot 監聽。
選一台模擬器(例:iPhone 16 Pro)→ Cmd + R
第一次跑會先看到「登入畫面」,按 Google Sign-In(模擬器會跳瀏覽器登入)
登入成功 → 進到記帳主畫面
測試新增一筆紀錄,確認 Firestore Console 有新增文件
App 有登入畫面,能用 Google 登入/登出
登入後能新增/刪除紀錄,資料存進 Firestore
換模擬器或刪 App,重新登入 Google → 紀錄仍然存在
我的程式碼放在這裡:2025ithome-ExpenseTracker
Day 5 要繼續加強記帳 App:
做一個簡單的「統計圖表」(圓餅圖 or 長條圖)
分析不同類別的支出比例
這樣不只是清單,而是能一眼看出「我到底都花在吃上還是買衣服」
今天就把記帳 App 帶上雲端了
之後就算手機容量爆炸,只要 Google 在,錢錢紀錄也在!我只是想知道自己錢花哪,結果搞得像在做 SaaS XD