2014-07-01 193 views
0

我最近完成了一個iOS應用程序的工作,並且大部分工作都是按照應用程序的工作方式進行的。我設法創建了一個多用戶應用程序,該應用程序使用核心數據來保存到SQLite數據庫。但是,用戶希望從遠程設備(即他們自己的電話)或他們使用的任何啓用了Web的設備管理其帳戶的時候已經到來。據說,我已經做了一些谷歌搜索,發現我將需要創建一個「網絡服務」。現在需要注意的是,我已經在運行應用程序的iDevice上的SQLite數據庫中積累了數據。我想將現有數據推送到MySQL DB或遠程機器,並使其同步。例如,當用戶在iOS設備上更新其帳戶時,更改會被推送到MySQL DB,並且用戶使用標準瀏覽器連接到Web服務,該瀏覽器將更新iOS設備上的SQLite數據庫。如何同步SQLite核心數據庫與遠程MySQL數據庫?

我開始學習rails,因爲我覺得這是一個很好的解決方案,可以爲用戶創建一個簡單的Web前端來管理他們的賬戶,並且爲開發人員提供一個API來處理數據庫中的數據。基本上,我希望聽到來自社區的一些建議,或者可以爲我想要完成的事情提供良好起點的鏈接。

回答

1

如果您正在查看rails,請嘗試查看ActiveAdmin gem。這就是我爲客戶端的第一個iOS和Rails項目所使用的。它給你一個管理儀表板,可以處理你想要的許多東西,如果你可以設置的話。起初這很混亂,但幾個星期後會給你一個很好的網絡解決方案。另外,根據您在創建服務器方面的經驗,您可能需要考慮一下爲您提供所有工作的低成本主機的Heroku(如果您開始需要更多處理器,Heroku會很快獲得成本)。從github項目中,您可以在大約5分鐘的時間內啓動heroku並運行您的rails代碼。

至於從服務器到電話同步您的數據庫:您將需要在服務器數據庫上爲您的模型建立一種類型的last_updated_at時間戳。現在什麼時候更新,你會更新時間戳。現在,iOS應用可以將?last_updated_at參數傳遞給您的服務器。這將允許您的服務器找出自上次ping服務器以來發生的所有變化。然後將其抓到手機上的核心數據庫中。

進行同步手機到服務器:

首先要確保手機是最新的(使用last_updated_at PARAM)同步前。如果很清楚,那麼這就是困難的地方。您需要翻譯要從CoreData數據庫同步的對象(因爲它會自動添加它自己的列/表),並將它們傳遞給它們。否則,您可以傳遞您的coreData數據庫並在服務器上進行某種轉換。

OR

做一個轉換你的iPhone應用程序與更新遷移關CoreData的。這將是一件痛苦的事情,但如果你部署到其他操作系統的話,它將長期幫助你。您需要創建sqlite3查詢來將CoreData數據庫轉換爲新的SQL數據庫(我們能夠在1.2秒內在iPhone 5上覆制2-3MB數據,因此速度非常快)。然後,應用程序將只使用SQLite3,以便它可以將完整的數據庫同步到服務器。然後,這將使與手機更容易同步,在那裏它可以從服務器獲取完整的數據庫並將其插入。

+0

感謝您的建設性答覆。 – Chris

+0

@Chris看到你接受了這個,有幫助嗎? – LyricalPanda

+0

是的,它是有幫助的,仍然在建設軌應用程序的過程中:/ – Chris

相關問題