香蕉記帳 隱私權政策
最後更新日期:2026-08-11 生效日期:2026-05-18
感謝您使用「香蕉記帳」(以下簡稱「本 App」)。我們非常重視您的隱私,本政策將清楚說明本 App 如何處理您的資料。
一、資料蒐集與儲存方式
1.1 完全本地儲存
本 App 所有由您輸入的資料(包含但不限於:收入、支出、分類、備註、股票代碼、加密貨幣代碼、買入均價、持有數量、存款金額、資產項目、儲蓄目標等),僅由本 App 儲存在您的裝置本機(使用 SQLite 資料庫);因存放於本機 SQLite,這些資料會隨 §4.1 的匯出檔、§4.3 的 Google 自動備份與換機轉移一併帶走。
除您主動使用之拍照辨識、廣告與 Premium 訂閱等功能所涉及之第三方服務(另詳 §1.4、§1.8、§2.3、§2.4),以及您啟用 Android 系統層級備份時由作業系統執行之 Google 雲端自動備份與換機轉移(另詳 §4.3)外,我們不會將上述任何由您輸入的記帳 / 股票 / 資產資料上傳至任何雲端伺服器,也不會傳送給開發者或任何第三方。
1.2 不蒐集個人識別資訊
本 App 開發者本身不會蒐集以下任何資訊(下列第 1.4 節說明的 Google AdMob、第 2.4 節說明的 Firebase 服務透過 SDK 自行蒐集者,以及您主動使用 §2.2 意見回饋表單或依 §5.3 寄送 Email 與開發者聯繫時、由您自行提供的內容除外):
- 您的姓名、Email、電話、地址、身分證字號
- 您的 Google 帳號、Facebook 帳號或其他登入資訊
- 您的位置(GPS / 定位)
- 您的通訊錄、照片、簡訊、通話紀錄
- 您的裝置識別碼(IMEI、Android ID 等;廣告 ID / AAID 由 1.4 節 AdMob SDK 自行蒐集;Firebase Anonymous Auth UID 與 App Check Play Integrity 由 §2.4 說明,本 App 開發者皆無法存取原始資料)
1.3 不使用分析或追蹤工具(廣告除外)
除下列第 1.4 節說明的廣告 SDK 外,本 App 開發者未自行整合任何獨立的第三方分析、追蹤 SDK,包含但不限於:
- Google Analytics / Firebase Analytics(開發者未自行加入)
- Facebook SDK
- 崩潰回報(Crashlytics、Sentry 等)
惟需說明:第 1.4 節的 Google AdMob(Google Mobile Ads SDK)內部會隨附 Google 的廣告成效量測元件(app-measurement,與 Google/Firebase Analytics 同源的底層量測模組),用於衡量廣告投放成效與防止點擊詐騙。此元件屬廣告 SDK 的一部分,其蒐集之資料與用途已涵蓋於第 1.4 節,並非開發者另行整合之使用者行為分析工具,開發者亦無法存取其原始資料。
1.4 廣告 SDK(Google AdMob)
為了維持本 App 免費提供,本 App 透過 Google AdMob 顯示下列三種格式之廣告:
- 橫幅廣告:固定顯示於部分次要頁面底部
- 插頁(全螢幕)廣告:於特定操作(如切換記帳日期區間)後偶爾顯示,設有冷卻時間與顯示頻率上限
- 獎勵式廣告:僅在您主動於「免廣告」頁面選擇觀看時播放,看完即可獲得 24 小時免廣告
AdMob 為 Google 提供之廣告聯播網,上述三種格式皆由同一 SDK 投放,會自行蒐集以下資料以投放廣告與防止點擊詐騙:
- 廣告識別碼(Advertising ID / AAID):可由您於系統設定中重設或停用
- 概略地理位置(依 IP 推算的國家/城市等級,非精確 GPS)
- 裝置資訊:作業系統版本、語言、機型、螢幕尺寸等
- SDK 診斷資料:AdMob SDK 內部的當機紀錄、廣告載入失敗、效能延遲等技術日誌,由 Google 用於改善 SDK 品質與排除廣告投放錯誤;本 App 開發者無法存取
- 廣告互動紀錄:曝光、點擊次數等
上述資料由 Google 蒐集與處理,受 Google 隱私權政策 與 AdMob 政策 規範,本 App 開發者無法存取這些原始資料,僅能於 AdMob 後台查看彙總統計(曝光數、點擊率等)。
如您希望限制個人化廣告,可於:
- Android:設定 → Google → 廣告 → 將「刪除廣告 ID」開啟,或停用個人化廣告
- 系統設定中重設廣告識別碼
1.5 本機診斷日誌(app_log)
為了協助您在使用本 App 遇到異常時自助排查問題,本 App 會將警告與錯誤層級的事件寫入裝置本機 SQLite 資料庫的 app_log 表,僅供本機保存:
- 保留期限:最多 7 天或最近 1000 筆,先到先汰換
- 內容範例:股票報價抓取失敗、資料庫寫入錯誤、預算/股息計算異常等;可能包含您持有股票的代碼(例如
2330.TW)、預算或固定收支的內部 ID、分類代號等記錄輔助資訊 - 儲存方式:與您其他記帳資料同樣僅保存於裝置本機,不會自動上傳至任何伺服器
- 使用情境:本 App 未提供將這些日誌自動或手動上傳/匯出的功能,因此它們不會透過本 App 離開您的裝置;換機用的 JSON 備份檔也不包含
app_log - 與系統層級備份的關係:上述「不離開裝置」僅指本 App 自身的管道。若您啟用 Android 系統層級的 Google 雲端自動備份或換機 D2D 轉移,整個本機 SQLite 資料庫(含
app_log表)會由作業系統一併備份至您自己的 Google 帳號;詳見 §4.3
您可透過「設定 → 清除快取」或「清除所有資料」清除本機日誌。
1.6 機上條碼/QR 解析(v1.1.0 / v1.2.0)
本 App 整合 Google ML Kit Barcode Scanning 與 mobile_scanner 兩個元件,皆於您的裝置本機對相機畫面或選取圖片進行條碼/QR 偵測:
- 不會將相機畫面、QR payload 或條碼內容傳輸至任何伺服器
- 用途包含:拍照辨識前先偵測 OCR 用條碼以遮蔽(避免送雲端時洩漏條碼資訊)、台灣電子發票 QR 解析(v1.2.0 新增,免雲端 AI 配額即可帶入發票內容)
- 從電子發票 QR 讀出的賣方統一編號(用於下次掃到同店家時自動帶入分類)會儲存於本機 SQLite
merchant_category_map表;統編為公開營業登記資訊,不屬個人資料 - 若該次拍照辨識沒有可用的發票 QR,則會改以 §2.3 雲端 AI 辨識出的商家名稱(經正規化後的字串)存入同一張
merchant_category_map表,同樣用於下次自動帶入分類。此對應表不會被傳送至本 App 的伺服器或任何第三方;它與其他記帳資料一樣存放在本機 SQLite,因此會隨 §4.1 的匯出檔、§4.3 的 Google 自動備份與換機轉移一併帶走。可透過「設定 → 清除所有資料」移除
1.7 第三方 SDK 清單
本 App 在 production build 中整合下列會連線外部服務或涉及資料蒐集的第三方 SDK 供您審視(皆受 §1.4 / §2.4 / §1.8 / §三 已述條款規範);另有純本機運作、不蒐集亦不傳輸任何資料的基礎套件(如 sqflite 本機資料庫、shared_preferences 偏好設定、file_picker / share_plus 匯出分享等)未逐一列於下表:
| SDK 套件 | 用途 | 是否蒐集資料 |
|---|---|---|
google_mobile_ads (Google AdMob) |
顯示橫幅、插頁(全螢幕)與獎勵式廣告 | 是,詳見 §1.4 |
firebase_core / firebase_auth / firebase_app_check / cloud_functions |
拍照辨識(§2.3 / §2.4)與 Premium 訂閱驗證/還原(§1.8) | 是,詳見 §2.4 與 §1.8 |
in_app_purchase (Google Play Billing) |
Premium 訂閱購買與還原(§1.8) | 是,詳見 §1.8 |
mobile_scanner / google_mlkit_barcode_scanning |
機上 QR / 條碼解析(§1.6) | 否(本機處理) |
image_picker |
從相簿/相機取得圖片 | 否(OS 內建 photo picker) |
permission_handler |
取得相機權限 prompt | 否 |
in_app_review |
顯示 Google Play 內建評分對話框 | 否(互動由 Play 框架處理) |
in_app_update |
Google Play In-App Update API | 否 |
webview_flutter |
「設定 → 聯絡我們」開啟外部表單 | 是,詳見 §2.2(開啟頁面即向 Google 送出 IP/User-Agent/cookie;填寫內容由 Google 與開發者取得,詳見 §2.2) |
local_auth |
App 鎖定生物辨識 | 否(本機處理) |
flutter_local_notifications |
週期性記帳提醒(§三) | 否(本機排程) |
google_fonts |
首次啟動時下載並快取思源黑體中文字型(§2.5) | 是,詳見 §2.5(僅 IP/連線中介資料) |
1.8 Premium 訂閱(v2.0.0 新增)
本 App 透過 Google Play Billing(in_app_purchase 套件)提供 Premium 月 / 年訂閱方案。為了驗證訂閱真偽並於換機 / 重灌後還原您的訂閱權益,下列資料會在您完成購買時由 Google Play 與本服務 Firebase Cloud Functions 處理:
| 資料項目 | 蒐集者 | 用途 | 儲存位置 / 期限 |
|---|---|---|---|
| purchaseToken(Google Play 簽發的訂閱憑證) | Google Play → 本服務 Firebase Cloud Functions | 向 Google Play Developer API 驗證訂閱真偽、後續用於還原購買 | Firebase Firestore(asia-east1);訂閱結束後仍保留供退款 / 爭議處理(詳見 §5.2,您可依 §5.3 申請刪除) |
| orderId(Google Play 訂單號) | Google Play → 本服務 | 於「管理訂閱」深連到該訂單詳情、客服查詢 | 同上 |
| expiryTime(訂閱有效期至) | Google Play Developer API | 判斷 isPremium 狀態、UI 顯示「訂閱有效至 YYYY/MM/DD」 | 同上 + 裝置本機 SQLite entitlements 表(離線可用) |
| subscriptionState(ACTIVE / IN_GRACE_PERIOD / CANCELED 等) | Google Play Developer API | 區分「期內取消」與「已過期」以正確 gate Premium 權益 | 同上 |
| autoRenewing(是否自動續訂) | Google Play Developer API | UI 顯示「自動續訂中 / 已關閉自動續訂」 | 同上 |
productId(訂閱方案 ID:premium_monthly / premium_yearly) |
Google Play Developer API(以伺服器回傳值為準,不採信 client) | 顯示目前方案 / 深連到 Play Store 管理頁 | 同上 |
tier(權益等級:free / subscriber) |
本服務 Cloud Functions 依驗證結果推得 | 判定是否給予 Premium 權益 | 同上 |
| validatedAt(最後一次驗證時間) | 本服務 Cloud Functions | 判斷憑證是否需要重新驗證、稽核 | 同上 |
| revoked(權益是否已撤銷)/inTrial(是否在試用期)/queuedProductId(已排入下期的方案 ID) | 本服務 Cloud Functions 依 Google Play Developer API 回傳值推得 | 正確 gate Premium 權益、顯示試用與方案變更狀態 | 同上 |
說明:
- 上述資料不包含您的姓名、Email、信用卡號或任何 Google 帳號識別資訊。Google Play 後端付款流程由 Google 處理,本服務無法存取您的付款工具細節。
- 訂閱驗證 callable 透過 §2.4 已述的 Firebase Anonymous Auth + App Check 識別請求來源;匿名 UID 不對應您的 Google 帳號或姓名。
2-1. 跨裝置還原時的匿名 UID 關聯:同一張購買憑證只能對應一個匿名 UID。當您換機或重灌後以同一個 Google Play 帳號還原訂閱,本服務會把該憑證改綁到新的匿名 UID,並在舊的匿名 UID 紀錄上標記已撤銷、撤銷原因、撤銷時間,以及接手的新匿名 UID(欄位
revokedInFavorOf),以利退款與爭議處理時追溯。這代表同一位使用者先後使用過的多個匿名 UID 之間會留下關聯紀錄;這些 UID 皆為系統自動產生,仍不包含也無法回推姓名、Email 或 Google 帳號。您可依 §5.3 申請刪除。 - 訂閱權益會以單列 cache 儲存於裝置本機 SQLite
entitlements表,使本 App 在離線時仍能正確判定您是否為 Premium 使用者。 - 試用與自動扣款揭露:月訂閱方案(
premium_monthly)首次訂閱者享 7 天免費試用;試用期間若您未於 Google Play Store 取消,將於試用結束時依您 Play Store 綁定的付款方式自動扣款續訂為月訂閱,並於之後每月自動續訂直至取消。年訂閱方案(premium_yearly)無試用期。完整自動續訂、價格調整與取消條款請參閱本 App「設定 → 服務條款」§5。 - 您隨時可於 Google Play Store → 我的訂閱取消、暫停或變更方案;取消後仍可使用至本期結束日。若於 7 天試用期內取消,將不會被收取任何費用。
- 您解除安裝本 App 不會自動取消訂閱,請務必於 Play Store 端取消。
- 若您換機或重灌本 App,登入同一個 Google Play 帳號後,本 App 啟動時會背景自動向 Play Store 詢問您的有效訂閱並還原權益;您也可在「設定 → 升級訂閱 → 恢復購買」手動觸發。
Google Play Billing 與訂閱資料處理受 Google Play 服務條款 規範。
二、網路連線用途
本 App 僅在以下情況使用網路:
2.1 股票/加密貨幣即時報價與匯率查詢
- 為了顯示您持有股票、加密貨幣的「現值」與「盈虧」(含美股/加密貨幣的台幣換算),本 App 會向 Yahoo Finance 公開 API(
query1.finance.yahoo.com)查詢即時報價與匯率。查詢報價前,本 App 會先向 Yahoo Finance 網站(finance.yahoo.com)發出一次請求,以取得存取公開 API 所需的存取權杖(cookie/crumb);此步驟僅用於取得存取權杖,不會傳送任何個人資料、持股數量或買入價格。 - 查詢時僅傳送公開市場查詢符號——股票代碼(例如
2330.TW、AAPL)、加密貨幣報價對(例如BTC-USD)與匯率符號(例如TWD=X),不會傳送任何個人資料、持股數量或買入價格。 - Yahoo Finance 為公開 API,不需註冊或登入。
2.1.1 台股公開資料查詢(股票名稱清單、除權息預告)
- 為了顯示台股/上櫃股票的中文名稱並提供「即將除息」提醒,本 App 會向下列台灣證券交易所(TWSE)/證券櫃檯買賣中心(TPEX)公開資料端點下載公開的股票清單與除權息資料:
openapi.twse.com.tw(上市公司清單、含 ETF 的每日公開資料)www.tpex.org.tw(上櫃公司清單、上櫃每日收盤行情)www.twse.com.tw(未來除權息預告TWT49U)
- 這些皆為公開資料下載:本 App 僅發出下載請求取得公開清單,不會傳送您的股票代碼、持股數量、買入價格或任何個人資料;這些端點為公開資料服務,不需註冊或登入。
2.2 意見回饋(選用)
- 「設定 → 聯絡我們」功能會在 App 內建的網頁檢視中開啟外部 Google 表單(forms.gle)。
- 只要開啟這個頁面(即使您什麼都不填、隨即離開),載入該表單本身就會向 Google 發出網路請求,因而讓 Google 取得一般網路連線必要的中介資料——您的 IP 位址、裝置 User-Agent,以及該表單所設定的 cookie 與分析用請求。這與 §2.5 字型下載屬同一類「載入即發生」的第三方連線。
- 您選擇性填寫該表單時,所填寫的內容另由 Google 處理。上述兩者皆受 Google 隱私權政策 規範。
- 該表單由本 App 開發者建立。您送出的內容(含您若自行填寫的聯絡方式)除由 Google 依其隱私權政策處理外,也會進入開發者綁定的 Google 試算表,僅用於回覆與追蹤您回報的問題,不會用於行銷或其他目的;您可依 §5.3 的方式要求刪除。
- 本 App 不會在開啟表單時自動附帶任何您的記帳/股票/資產資料,也不會自動帶入版本號或裝置資訊(表單欄位一律由您自行填寫)。
- 您可選擇不開啟此頁面或不填寫,皆不影響 App 任何功能。
2.3 拍照辨識功能(記帳 + 股票對帳單,v1.1.0 新增)
本 App 提供兩處主動觸發的圖片辨識功能:
- 拍照記帳:拍攝發票/收據自動帶入收支金額、品項與日期
- 股票對帳單拍照辨識:拍攝券商交易確認單/對帳單自動帶入股票代碼、買入均價、數量、手續費等
兩者使用完全相同的後端流程,請特別注意以下說明:
- 您拍攝或選取的圖片會以 HTTPS 加密傳輸至本服務的 Firebase Cloud Functions(Google Cloud,asia-east1 區域)。拍照記帳另會一併傳送您在本 App 的收支分類名稱清單(含您自訂的分類名稱),供 AI 從清單中挑選一個建議分類;此清單不含金額、備註或任何交易內容,且股票對帳單辨識不會傳送
- Cloud Functions 將圖片轉送至 Google Generative Language API(Gemini 2.5 Flash-Lite / Flash 模型) 進行 OCR 辨識
- 圖片不會被本服務儲存(傳輸完成即刻丟棄,僅暫存於記憶體中處理)
- 為防止濫用,我們會以 匿名 UID 記錄每月呼叫次數(不包含圖片內容、不可關聯到個人身分;資料以 Firestore 保存於 asia-east1)
- Google 對 Gemini API 的資料處理規範請參見 Google AI Studio 服務條款
- 第一次使用時 APP 會顯示同意對話框;您未同意前不會傳送任何圖片
- 若您不希望使用此功能,所有記帳與股票資料都可以手動輸入完成,功能完全可選
2.4 Firebase 服務(拍照辨識與訂閱驗證所需)
為支援 §2.3 之拍照辨識功能,以及 §1.8 之 Premium 訂閱驗證與還原,本 App 使用 Google Firebase 平台的下列服務,皆由 Google 蒐集、儲存與處理,本 App 開發者無法存取原始識別資料:
| 子服務 | 蒐集內容 | 用途 | 儲存位置 |
|---|---|---|---|
| Firebase Anonymous Auth | 匿名 UID(一串隨機字串,不含個資;首次啟動產生) | 識別請求來源以執行 §2.3 的每月呼叫次數限額;UID 不對應您的 Google 帳號或姓名 | Google 伺服器 |
| Firebase App Check(Play Integrity) | 由 Google Play 服務簽發的裝置完整性 token、APP 套件名稱(com.personal.expense_tracker)、APP 簽章雜湊 |
防止本 App 的 Cloud Function 端點被機器人 / 假 APP 濫用,確保只有來自正式 APP 的請求得到回應 | Google 伺服器 |
| Firebase Cloud Functions | §2.3 所述的圖片內容,以及拍照記帳一併送出的收支分類名稱清單(皆即傳即丟、不儲存) | 將圖片與分類名稱清單轉送 Gemini API 並回傳 OCR 結果 | asia-east1 區域 |
| Firebase Firestore | 匿名 UID + 計數所屬月份 + 當月呼叫次數計數 + 方案別(免費/Premium 訂閱) | 執行每月呼叫次數限額。保留期限:自最後一次使用起最多保留約 13 個月,逾期由排程作業自動刪除。 | asia-east1 區域 |
Firebase 服務受 Google 隱私權政策 與 Firebase 隱私條款 規範。若您未使用拍照辨識功能(包含 §2.3 拍照記帳與股票對帳單),上述網路請求仍會以 Anonymous Auth + App Check 建立連線以維持下次使用就緒;但不會送出任何圖片。
如您完全不希望本 App 連線 Firebase,可在系統設定中限制本 App 的網路存取(功能將自動降級為手動輸入)。
2.5 字型下載(Google Fonts)
為了在各廠牌 / 各版本 Android 裝置上一致呈現中文字型(思源黑體 Noto Sans TC),本 App 透過 google_fonts 套件於首次啟動時向 Google Fonts CDN(fonts.googleapis.com / fonts.gstatic.com)下載字型檔,下載後即快取於裝置本機,之後不再重複下載。
- 此請求僅含一般網路連線必要的中介資料(您的 IP 位址、裝置 User-Agent 等),不會傳送任何記帳 / 股票 / 資產資料,也不含任何個人識別資訊。
- 字型檔由 Google 提供與傳輸,受 Google 隱私權政策 規範。
- 若您的裝置離線或無法連線該 CDN,本 App 會自動改用裝置內建中文字型,不影響任何功能。
三、權限使用說明
| 權限 | 用途 |
|---|---|
| 網路存取(INTERNET) | 查詢股票即時報價、載入 AdMob 廣告、Firebase Cloud Functions / Auth / App Check / Firestore(拍照辨識所需,詳見 §2.3/§2.4)、下載中文字型(詳見 §2.5) |
| 通知(POST_NOTIFICATIONS) | 顯示本機排程的提醒通知:週期性記帳提醒、預算門檻提醒、儲蓄月結提醒、股票即將除息提醒 |
| 開機啟動(RECEIVE_BOOT_COMPLETED) | 重新註冊週期性提醒 |
| 生物辨識(USE_BIOMETRIC) | App 鎖定(指紋/臉部解鎖) |
| 觸覺回饋(VIBRATE) | 操作(如刪除、儲存)的輕量震動回饋 |
| 廣告 ID(AD_ID) | 提供 Google AdMob 投放廣告與計算曝光 |
| 相機(CAMERA) | v1.1.0 拍照辨識功能(拍攝發票或股票對帳單進行 OCR 辨識;功能可選) |
| 應用程式內購買(com.android.vending.BILLING) | 提供 App 內訂閱(Premium 進階功能)的購買與還原 |
上表為本 App 主動宣告的權限。此外,本 App 使用的第三方 SDK(Firebase、Google Play 服務、Google AdMob 等)在建置時可能由系統自動合併少數標準框架權限(例如網路狀態 ACCESS_NETWORK_STATE、喚醒鎖 WAKE_LOCK、廣告服務 ADSERVICES_* 與相關系統接收器等)。這些屬框架層權限,僅用於支援上表及第二節所述之已揭露功能(股票報價、廣告投放、Firebase 連線與通知),不會用於其他目的。
我們不會將上述任何權限(含 SDK 自動合併的框架權限)用於已揭露功能以外的目的。
四、匯出與匯入備份
4.1 備份檔案
- 您可透過「設定 → 匯出資料」將所有本機資料匯出為 JSON 檔案。
- 匯出檔案儲存於您自行選擇的位置(裝置內部、SD 卡、雲端硬碟等),由您自行管理。
- 此檔案包含您所有的記帳與股票資料,請妥善保管,避免分享給不信任的對象。
4.2 換機或還原
- 您可透過「匯入資料」將備份檔還原至同一台或新的裝置。
- 備份檔內的收支、股票、資產等財務紀錄不會被上傳至任何伺服器:還原是純本機的資料庫寫入,這些紀錄全程留在您的裝置上。
- 惟還原完成後,本 App 會照常執行下列已於前文揭露的常規連線,皆不傳送上述財務紀錄:
- 依 §2.4,把備份檔記載的「當月 AI 辨識已用次數」併入您目前匿名帳號的計數(避免以重裝/還原重置免費額度);傳送內容僅為匿名 UID、月份與次數。這是備份檔中唯一會被送出的欄位。
- 依 §2.1,重新查詢股票/加密貨幣報價與匯率,讓還原後的現值正確;傳送內容僅為公開市場查詢符號。
- 依 §2.1.1,重新下載台股/上櫃的公開股票名稱清單(名稱快取不納入備份,還原後需重新取得);此為公開資料下載,不傳送任何個人資料。
4.3 Google 自動備份與換機 D2D 轉移
自 v2.0.1 起,本 App 已開啟 Android 的 Auto Backup 與裝置間直接轉移(device-to-device transfer),以避免使用者忘記匯出而於換機 / 重灌時遺失財務資料:
- Google 雲端自動備份(
android:allowBackup="true"+dataExtractionRules的<cloud-backup>):- 包含內容:SQLite 資料庫(記帳、股票、資產、設定,含 §1.5 所述本機診斷日誌
app_log表)、SharedPreferences、App 私有檔案;排除external目錄。 - 備份檔由 Google 加密儲存於使用者自己的 Google Drive配額內,Google 客服與本 App 開發者皆無法直接讀取內容。
- 您可隨時於 Android 設定 → Google → 備份 內關閉本 App 的備份、刪除既有備份。
- 包含內容:SQLite 資料庫(記帳、股票、資產、設定,含 §1.5 所述本機診斷日誌
- 裝置間直接轉移(D2D / 換機助手,
<device-transfer>):- 換機時 Android 系統會以裝置間加密通道將 SQLite / SharedPreferences / App 私有檔案複製到新機。
- 您也可以選擇仍走 App 內「匯出 → 匯入」JSON 流程,做為跨平台 / 跨帳號的可控替代方案。
安全性提醒: 收方裝置在 D2D 或 Google 雲端還原完成後,App 資料仍以明文方式存於 SQLite / SharedPreferences(即 §七.1 描述的明文儲存狀態)。 請先為新機設定鎖屏密碼或生物辨識後再開始轉移 / 還原,並於完成後盡快啟用 App 內建的「App 鎖定」。本 App 開發者無法控制 Android 系統轉移與雲端還原流程中的加密強度。
訂閱憑證安全提醒:若您的舊機曾購買 Premium 訂閱,備份 / 還原至新機時,purchaseToken 會一併還原。本 App 後端(Cloud Functions)會在新機呼叫時偵測「同一購買憑證綁定到不同匿名 UID」並自動撤銷舊 UID 的 Premium 狀態(防止單張訂閱跨多帳號濫用),不影響您在新機正常使用訂閱權益。
五、資料的刪除
5.1 本機資料
- 您可隨時於「設定 → 清除所有資料」刪除本機所有資料。
- 解除安裝本 App 會移除您這台裝置上所有本機儲存的資料。
- 但請注意:若您已啟用 Google 雲端自動備份(見 §4.3),Google Drive 內那份備份不會因解除安裝而消失,日後於同一 Google 帳號重新安裝本 App 時可能被系統自動還原。若要一併清除雲端那份,請至 Android 設定 → Google → 備份刪除本 App 的備份,或先於 App 內執行「清除所有資料」再解除安裝。
5.2 伺服器端保留資料
為了服務正常運作與防止濫用,本 App 會在 Firebase Firestore 保留少量資料:
| 資料 | 路徑 | 用途 | 保留期限 |
|---|---|---|---|
| 每月呼叫次數計數 | quotas/{anonUid} |
拍照辨識每月呼叫上限管控,防止濫用(內容為匿名 UID、計數所屬月份、當月已呼叫次數與方案別,不含圖片或辨識內容) | 自最後一次使用起最多約 13 個月,逾期由排程作業自動刪除 |
| 訂閱憑證 | subscriptions/{anonUid} |
驗證 Premium 訂閱狀態、防止單一購買憑證跨多帳號共用、處理退款 | 訂閱結束後仍保留作為退款與爭議處理依據(無固定刪除期限);您可隨時依 §5.3 申請刪除 |
| 配額退還失敗紀錄 | quota_refund_failures/{自動 ID} |
拍照辨識失敗時要退還已預扣的次數,若當下退還失敗則寫入此處待自動重試(內容為匿名 UID、日期、辨識類型、方案別與錯誤訊息摘要,不含圖片或辨識內容) | 最多 90 天,逾期由排程作業自動刪除;退還成功即立即刪除 |
| 訂閱狀態稽核紀錄 | subscription_audit/{日期} |
每日比對本服務保存的訂閱狀態是否仍與 Google Play 一致,以便及早發現退款/撤銷後未同步的情形(內容為當日統計數字,以及少量作為人工比對用的匿名 UID 前 8 碼片段與原因代碼;當日檢查整體執行失敗時另記一筆失敗紀錄,含日期與錯誤訊息摘要。皆不含購買憑證、訂單編號或方案名稱) | 最多 180 天,逾期由排程作業自動刪除 |
上述資料僅以 Firebase 匿名 UID(系統自動產生、無法回推至特定個人)為索引,不包含姓名、電話、Email、生日等個人識別資訊。
5.3 申請刪除伺服器端資料
如您希望刪除 §5.2 所列伺服器端的資料,請以以下方式提出申請:
- Email:banana87168@gmail.com
- 信件內容請提供:您的 App 安裝時間與大致使用區域,協助比對
- 處理時程:自收件起 30 日內處理完成並回覆
- 來信的保留與刪除:您寄送至上述信箱的信件(含寄件人 Email 與信件內容)由開發者於處理完畢後保留至多 6 個月供爭議追溯,逾期刪除。本 App 為個人開發,此項清理由開發者定期人工執行,並非自動化流程;若您希望提前移除,可來信要求即時刪除,我們會優先處理。同樣的保留與刪除方式適用於您依 §2.2 送出的意見回饋表單內容。
註:申請刪除後,您原有的 Premium 訂閱憑證對應紀錄將一併移除,未來無法以該裝置 / 匿名 UID 自動還原 Premium 狀態(仍可透過 Google Play 的「還原購買」流程重新綁定)。
刪除處理範圍:包含 §5.2 表格所列的全部項目——每月呼叫次數計數、訂閱憑證、配額退還失敗紀錄,以及訂閱狀態稽核紀錄中屬於您的匿名 UID 片段。
5.4 您對個人資料的權利
依《個人資料保護法》第 3 條,您就您的個人資料享有下列權利:查詢或請求閱覽、請求製給複製本、請求補充或更正、請求停止蒐集/處理/利用、請求刪除。行使方式如下:
- 本機資料:您可直接於 App 內查看、編輯、匯出複製本(設定 → 匯出資料)、刪除(§5.1),完全由您自主掌控,無須向開發者申請。
- §5.2 伺服器端資料(僅以匿名 UID 索引):可依 §5.3 以 Email 申請查詢或刪除,我們將於 30 日內處理並回覆。
行使上述權利不需付費,亦不影響您使用本 App 之任何功能。
六、兒童隱私
本 App 為一般財務管理工具,不刻意針對 13 歲以下兒童設計,也不蒐集兒童的個人資料。
七、安全性聲明
7.1 資料以「明文(未加密)」儲存於本機
請特別注意:本 App 為了保留「無雲端依賴」與「自由匯出匯入備份」的便利性,目前所有本機資料皆以明文(未加密)儲存:
- SQLite 資料庫(
expense_tracker.db):包含所有記帳、股票、資產與設定資料 — 未加密 - SharedPreferences(App 設定值):包含 App 鎖定狀態、字級、預設帳戶等偏好 — 未加密
- 匯出的 JSON 備份檔案:人類可讀的純文字 — 未加密
這代表:能存取您裝置儲存空間的程式或人員(例如 root / 越獄裝置上的其他應用程式、實體取得您手機者、未鎖屏的拾獲者)都有可能讀取其中內容。此外,若您於裝置上開啟「USB 偵錯」或其他開發者選項,連接電腦的人可能透過 ADB 等開發者工具讀取本 App 的資料目錄;此為本機(裝置端)存取風險,與 §四.3 的雲端自動備份 / 換機轉移屬不同管道,即使您於系統設定關閉雲端備份,開發者模式的本機存取仍不受影響。請僅在您信任的環境下啟用開發者選項。
7.2 App 鎖定的範圍
App 內建的「生物辨識鎖」(設定 → 安全 → 生物辨識鎖)僅限制進入 App UI 時要求生物辨識或 PIN,並不加密底層資料庫檔案。即使啟用 App 鎖定,能繞過裝置鎖屏的人仍可能透過檔案存取讀取資料庫。
7.3 為保護您的資料,請務必:
- 為您的手機設定鎖屏密碼或生物辨識(這是最重要的一道防線)
- 啟用 App 內建的「App 鎖定」(多一層便利性保護)
- 避免在 root / 越獄裝置上儲存敏感記帳資料
- 勿將備份檔案上傳至公開網站或分享給不信任的對象
- 匯出後若儲存於雲端硬碟(Google Drive / Dropbox 等),請啟用該服務的雙重驗證
- 定期備份以避免資料遺失
7.4 加密規劃(未來版本)
未來版本將評估以下選項以提升加密強度:
- 啟用 App 鎖定時自動啟用 SQLCipher 對資料庫加密
- 提供「加密匯出(密碼保護)」選項供分享備份檔案使用
上述項目為評估方向,實際導入時程依開發資源與技術可行性調整,不構成具體承諾。
八、政策變更
本政策若有重大變更,我們會於本 App 內或 Google Play 商店頁面通知您。建議您定期查看本頁,以了解最新內容。
九、聯絡我們
若您對本隱私權政策有任何疑問,可透過 App 內「設定 → 聯絡我們」與我們聯繫。
開發者: 個人開發者 App 名稱: 香蕉記帳 Package Name: com.personal.expense_tracker