在 Ceum 行動應用程式上,即使裝置中斷連線,你仍可繼續作業。快取資料維持可讀,少數介面維持可編輯,而你所做的任何變更都會被排入佇列,並在重新上線後自動重播。這是行動裝置專屬的能力 — 網頁應用程式假設有持續的連線。
離線時可用的功能
- 讀取快取資料 — 你已載入過的畫面會繼續顯示其最後已知的資料,而不會變成空白。
- 新增與編輯交易及時間記錄 — 這兩個介面在離線時維持完全可寫入。你的變更會立即套用到畫面上的清單,並排入佇列以稍後同步。
- 其他一切變為唯讀 — 其他介面(客戶、專案、任務、設定等)仍會顯示快取資料,但其建立/編輯/刪除控制項在離線時會停用,並附上簡短提示說明原因。這可避免排入無法可靠對帳的變更。
重新啟動後仍會保留的內容
應用程式會在裝置上保留一份最重要資料的加密快照,因此離線時冷啟動仍能載入真實資料,而非空白畫面。
- 快照會在應用程式離開前景時寫入(而非每次變更時),並在啟動時還原一次。
- 它在靜置時以每個裝置專屬的金鑰加密,因此快取副本在裝置之外無法讀取。
- 它刻意保持精簡 — 只保存你的設定、主要清單入口(工作清單、交易、時間記錄、訂閱)、快速清單,以及作用中的計時器 — 而非你瀏覽過的一切。詳細內容、行事曆疊層、洞察、郵件與搜尋會在你開啟那些畫面時重新擷取。
等待同步的變更
你離線所做的變更會進入一個可留存的佇列(「outbox」),並能在應用程式重新啟動後存留。此佇列會聰明地合併多餘的工作,讓伺服器只會看到淨結果:
- 編輯你離線建立的內容會合併進該待處理的建立 — 它仍會以單一新記錄的形式同步。
- 刪除你離線建立的內容會將其整個捨棄;任何內容都不會到達伺服器。
- 對同一記錄的重複編輯會合併為「最後寫入者勝出」的結果。
- 刪除某記錄會捨棄任何先前排入佇列、針對它的編輯,而重複的刪除會被忽略。
離線橫幅
在你登入期間,導覽列上方會出現一條狀態列:
- 離線 — 說明你已斷線,以及若有任何內容排入佇列,重新連線時將同步多少變更。
- 同步中 — 在佇列重播時短暫顯示。
- 需要注意 — 在同步遇到無法自行解決的情況時出現。點選即可開啟解決工作表(見下文)。
當你上線且佇列為空、乾淨時,橫幅會隱藏。
重新連線時的同步
佇列會在連線恢復時、應用程式回到前景時,以及啟動時自動清空。每筆排入佇列的變更都會對最新的伺服器狀態重播。多數變更會靜默套用,並會收到簡短確認,告知同步了多少筆。清空後,應用程式會拉取權威的伺服器資料,使你的清單反映真實狀態。
解決衝突
有些變更無法盲目套用 — 在你離線期間伺服器可能已變更。這些會呈現於 解決工作表 中,從「需要注意」橫幅開啟。由於該工作表由佇列本身驅動,它能在解決過程中應用程式重新啟動後存留。
- 可能的重複 — 一筆排入佇列的新交易若與近期的伺服器交易高度相似,會被保留以便你決定。選擇 保留 仍予以新增,或選擇 捨棄 予以去除。
- 伺服器上已變更 — 對某記錄的離線編輯,若該記錄自你離線後在伺服器上已被修改(或刪除),會被保留。選擇 覆寫 以推送你的版本,或選擇 捨棄我的變更 以保留伺服器的版本。
- 已捨棄 — 真正衝突的變更(例如,會與既有時間記錄重疊的時間記錄)會連同說明一併捨棄。檢視原因並 關閉 它。
未被保留的衝突 — 例如暫時性的伺服器錯誤 — 只會留在佇列中並於下次同步時重試,因此短暫的故障絕不會遺失你的變更。