2017-02-13 137 views
0

我覺得完全迷失在一些聽起來微不足道的東西中。據我所知,我的客戶想要在android中發生某種行爲,稱爲自動同步。從Web服務器同步數據到iOS應用程序

我正在用視圖控制器構建一個應用程序,它具有從服務器檢索到的數據。每個視圖控制器都會顯示一個對象列表,或者只顯示一個對象。

當應用程序來自後臺時,我的客戶端想要請求發生,詢問服務器是否有任何要檢索的新對象。如果答案是肯定的,我收到我應該更新的視圖控制器,當我在那些顯示這些對象的視圖控制器上時,我應該請求接收新對象並更新我的列表或視圖。

應該沒有來回通知,因爲這將是應用程序的內部過程,以保持其始終更新。

所以,我的客戶要求我建立這種行爲,並有一個緩存系統的工作。是否有任何良好實踐或解決方案來實現這一結果?

回答

2

來自JavaScript背景,我會給你我的答案,這個答案適用於運行在JavaScript上的Cordova類型的移動應用程序。

1)在您的移動設備上創建一個本地數據庫,並將所有對象存儲在那裏。
2)在您的數據庫中創建一個表來存儲「上次同步」的日期和時間。
3)在您的服務器上設置API端點以接受「上次同步」參數,並返回比上次同步日期和時間更新的所有數據。
4)在每次頁面加載時,向API發出請求以檢索最新信息並將其保存在本地數據庫中。
5)在每個後續頁面加載時,加載新數據。 (作爲用戶體驗)

現在,如果您不想在每次加載頁面時不斷地進行API調用,還有一種不同的方式。

在移動應用程序和服務器之間建立套接字連接。
http://socket.io

這將允許您每次更新服務器數據庫時「推」下新數據。

當用戶第一次打開應用程序時,請進行API調用以獲取所有更新並在socket.io頻道上註冊以進行實時更新。

最需要迎合的是當API調用過早終止並丟失一些信息時。只更新成功更新時的「上次同步」日期時間。

0

也許一個好的答案是使用核心數據。然後根據需要同步本地結果,同時發出請求併合並本地和服務器響應。你必須決定哪個參考獲勝。

相關問題