簡體   English   中英

保持iOS應用與服務器同步

[英]Keeping iOS app in sync with server

我們正在設計一個系統,該系統基於服務器上的特定事件為特定設備創建地理圍欄。 預計客戶端(設備)將與服務器數據同步,問題是如何?

最初(最佳)的想法是向設備發送靜默推送,以通知其有關新數據的信息,並觸發數據提取。 盡管知道該解決方案適用於Android OS設備,但我們可以在iOS上以類似方式解決該問題。 不幸的是,我的iOS開發人員告訴我,靜默推送在iOS上不可靠,並進行了以下討論: 靜默推送通知僅在設備正在充電和/或應用程序為前台時才傳遞

因此,我的問題是如何使iOS設備上的(地理信息)數據與服務器端保持同步?

  • 我們可以說,每5分鍾說一次,該解決方案效率極低,因為對於大多數設備而言,新的地理圍欄幾乎根本不會更改,但是我們的“高級用戶”需要經常更新地理圍欄。
  • 我們可以使用某種無聲推送機制進行推送,但是它必須可靠。
  • 也許是某種持久連接(tcp或更好的udp),但這似乎是消耗電池的解決方案。 除了不可靠之外,服務器還必須跟蹤更改的IP,這在許多蜂窩網絡中甚至是不可能的。
  • WebSocket的。 還有電池耗電解決方案,該解決方案不適用於后台同步。 對於確實很少更新數據的設備(例如每月更新一次),會產生過大的殺傷力。
  • 一些商業解決方案(PubNub或Pusher),但我們絕對希望使用內部解決方案。

在這種情況下還有其他解決方案嗎? 也許我們采用靜默推送的方法是不正確的,但是針對這種用例,Apple解決方案中還有其他構建嗎?

有一個很棒的服務,叫做Simperium ,帶有iOS SDK,可以幫助您保持信息同步。 我之所以聽說它們,是因為我開始使用SimpleNote,這是一個使用同步服務的免費筆記工具。 他們被運行Wordpress的Automattic收購,因此整個交易應該相當穩定。

希望這可以幫助!

您可以在AppDelegate的applicationDidEnterBackground:方法中運行同步操作。 只要同步操作不會花費太長時間,這就是我一直使用的解決方案。

在這里,您還可以查詢數據庫中的數據更改,而不是將觸發器推送到設備,因為觸發器可能會因為推送通知而變得冗長,而且並不是真正的預期用途。 如果找到數據更改(或檢查了一些布爾標志),則啟動數據提取。

我不確定您要處理多少數據,但是我會每隔5分鍾進行一次REST查詢。 也許您甚至可以在每次啟動應用程序時將其切換為查詢就足夠了?

我們有一個應用程序,用戶數據需要與后端服務器同步-每次啟動該應用程序時,它都會查詢后端服務器以查看是否有任何更新。 我們對服務器中的數據進行md5hash處理,然后我們可以針對最新數據檢查哈希值-如果它不“匹配”,則我們提取新數據集。

通常,iOS並不能真正讓您像在android上那樣執行多任務處理。 現在,如果您不打算發布到應用程序商店中,而僅將其用作內部應用程序,則可以使事情變得有些時髦,並在后台模式下運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM