2010-01-21 59 views
6

我的服務器上有一個大約3mb的數據庫。我想用我的iPhone應用程序發佈。從服務器端數據庫到iPhone進行單向同步的最佳方式是什麼?

最重要的是,我想推動對數據庫(插入,更新,刪除)的更改到iphone。這樣做的最好方法是什麼?我的意思是 - 什麼是必要的 - 服務器 - 客戶端(= iphone) - 之間;如何傳輸這些數據?

我非常自由地使用技術serverside;現在,我在服務器上安裝了一個sqlite數據庫,裏面充滿了我想要同步到iphones的數據。

回答

1

嘗試使用網頁掛鉤。

WebHook的概念很簡單。 A WebHook是一個HTTP回調:HTTP POST發生在 發生某些事情時;通過HTTP POST發送一個簡單的事件通知 。

Web應用程序實現 WebHooks將在發生某些情況時向URL發送消息 。當網絡應用程序允許用戶註冊 他們自己的URL時,用戶然後可以 擴展,定製並將該應用程序與它們自己的定製 擴展或甚至與其他 應用程序集成在網絡上。對於 用戶,WebHooks是一種在發生時收到 有價值信息的方式, 而不是連續輪詢 數據並且在大多數情況下不會收到任何 寶貴數據。 WebHooks 有巨大的潛力,並且 只限於你的想象! (不, 不能洗碗呢。)

你可以在這裏找到更多關於網絡掛接: http://www.webhooks.org/http://webhooks.pbworks.com/

+0

陛下...的聲音有趣。我理解Web鉤子是如何工作的(至少,我想我是這麼做的)。但與iPhone結合...我如何更新我的應用程序的用戶?只有推送通知纔有可能,對吧?我的意思是 - 必須在我的應用程序中註冊他們的手機,並且每當有所改變時,我必須做推送通知 - 或者我錯過了什麼? – swalkner 2010-01-25 13:13:21

+0

是的。推送通知可以工作。無論採用哪種方式,您都必須爲註冊用戶提供某種認證。 您基本上可以創建一個CRON作業,將通知發送給用戶列表(顯然已被註冊和驗證的用戶) – feketegy 2010-01-28 20:17:24

2

你多久需要更新一次數據庫,以及這些更改有多緊急?

如果數據庫更新不頻繁且非緊急,我會讓應用程序在啓動時檢查數據庫的新版本,如果更改,請下載整個新文件。

該應用程序將始終從啓動時從已知的URL下載一個小的元數據文件。元數據文件包含最新版本的版本標識符以及可以下載該版本數據庫的位置。如果版本標識符已從應用程序已有版本更改,則會下載新版本。如果版本標識未更改,或者無法檢查,則應用程序可以繼續使用它的版本。

專業提示:如果您想顯示下載的進度條,請在元數據文件中包含數據庫的大小。單元網絡通常具有透明的代理,從HTTP響應中去除Content-Length頭部。

+0

不幸的是,更新頻繁,漂亮迫切...... – swalkner 2010-01-21 15:34:54

1

不知道你是否使用同步框架來管理考慮同步。如果您有興趣,可以看看OpenMobster的Sync服務。你可以做以下的同步操作

  • 雙向
  • 單向客戶
  • 單向設備
  • 啓動時

除此之外,所有的修改都自動跟蹤並已同步與雲。網絡連接斷開時,您可以讓應用程序脫機。它將跟蹤所有更改,並在連接返回時自動在後臺將其與雲同步。它還提供跨多個設備的iCloud同步

此外,使用推送通知同步雲中的修改,因此即使數據本地存儲,數據也始終爲當前數據。

這裏是一個開源項目鏈接:http://openmobster.googlecode.com

這裏是一個iPhone應用程序同步鏈接:http://code.google.com/p/openmobster/wiki/iPhoneSyncApp

相關問題