2013-07-31 59 views
1

我在寫一個管理sqlite數據庫的應用程序,並且我寫了一個web服務器,我想用戶在我的web服務器中用用戶名和密碼註冊,我已經知道如何從ios應用程序到服務器的請求並接收響應,但我希望啓用sqlite數據庫同步到其他設備,我現在與核心數據我可以使用iCloud同步,但現在我更喜歡使用sqlite,並找到一種方法來進行同步,例如我想創建這樣的:從Web服務器接收更新到iOS應用程序並同步數據

  1. 使在iPhone應用程序sqlite的變化;
  2. 應用程序將此更改發送給該用戶的服務器;
  3. 那麼服務器必須將此更新發送給該用戶連接的其他設備;

現在我不能過去了,服務器如何將此更改發送到其他設備?該設備必須始終監聽服務器?或者有辦法將此更新直接發送到某個設備並進行處理?像蘋果推送通知?

編輯:如果有可能使用蘋果推送通知來做到這一點,我不想用文本聲音提醒警告並且標記用戶,但發送一個「無聲通知」這是可能的?

回答

1

作爲一個高層次,有幾種不同的方法來解決這個問題,所有這些方法都有優點和缺點。兩個名字兩個例子,你可以做投票方法,主動推送或混合方式。

輪詢:在某個預先確定的時間間隔內,應用程序嘗試「回家」,並將增量變化數據發送到服務器。在這裏,您知道您的服務器將在任何給定的時間間隔內預期X次響應,因此您可以適當地評估您的負載。

活動推送:用戶決定何時希望通過點擊「同步」按鈕將這些更改發送到服務器。這允許用戶在知道有變化時僅將數據推回到服務器,但過度熱心的用戶可能會進行更改,上傳,更改,上傳等,而不是排隊進行一系列更改並將它們全部發送立刻。這可能會頻繁創建不需要的服務器調用。

混合動力:您可以在應用程序內設置輪詢計劃,並在用戶需要儘快進行重大更改的情況下爲用戶提供隨時同步的功能。

關於等式的聆聽者方面,您在概念上面臨類似的挑戰。如果原始用戶進行20次更改並按下同步20次,那麼您是否還會對第二個用戶的設備進行20次轟炸,或者是否將這些更改排隊並每5分鐘發送一次(作爲示例)?除非你有兩個設備相互配對,或者連接到同一個網絡,並且通過你的應用程序彼此都可見,否則你將需要利用該後端服務器。以這種方式推送通知可能非常有用,但是需要考慮到額外的開發和設置開銷以正確實施它們。

爲了解決這一切問題,我會建議您在開始沿着路徑行進之前展示你想讓你的同步模型看起來像什麼。

+0

感謝您的答案,我不喜歡用戶按下「同步按鈕」,我更喜歡推送通知的方式,你知道我怎麼能發送推送通知從服務器到應用程序?改變內容?一些開始的方式? – Piero

+0

您將要搜索如何實施APN服務器。世界上有很多開源示例,所以你需要從這裏開始。 – Dan

+0

非常感謝你,最後的回答,你能給我一些這個開源示例apns服務器的鏈接例子嗎?我發現只有parse.com和其他支付服務... – Piero

相關問題