2017-04-21 52 views
1

我在使用iOS上的背景技術時遇到了一些麻煩。首先,讓我給一個簡短的說明:在iOS中使用Xamarin.iOS(C#)創建背景:我應該使用哪種方法?

我爲一家工作管理公司工作,該公司可以接收和分發工單查找工具。用戶可以從我們的服務器上下載票據,處理它們,並將他們的回覆發送回我們的服務器。下載的票據進入本地SQLite數據庫,並且用戶做出的響應存儲在另一個本地SQLite數據庫中。我的同事寫的Android應用在Xamarin與C#和他的智能化進程,下載門票和上傳回復如下:從我們的服務器

  1. 下載門票到本地SQLite數據庫的「入場券」
  2. 檢查當地的「迴應」的SQLite數據庫,看是否有做
  3. 反應訂做的話有反應,將其發送到我們的服務器
  4. 等待5分鐘
  5. 重複

這允許用戶初始下載一批票並開始工作。如果此過程在用戶沒有互聯網的情況下運行,則不會發生任何事情,並且定時器將重置。這個過程將允許用戶在沒有互聯網的情況下對票據作出響應,並且每當他們有互聯網時就會上傳響應/下載新票券。

我的問題是,在iOS上,背景比在Android上限制得多。有後臺提取,然後有推送通知。通過後臺獲取,系統「計算出運行PerformFetch方法的最佳機會」,並且不會給我必要的嚴格的5分鐘計時器。通過推送通知,如果用戶沒有互聯網,他們將永遠不會收到推送通知。

我真的很希望能夠像上面描述的那樣簡單地設置一個5分鐘的定時器,並且讓程序運行,檢查是否有任何新票和發送任何新的答覆,如果有任何禮物。但由於iOS背景的限制性質,我無法做到這一點。

有什麼建議嗎?他們會更感激。

謝謝。

回答

1

確實,你不能在Android應用程序中創建後臺服務。但是在閱讀完您的需求之後,似乎您並不需要後臺服務來完成所有任務 - 只有當用戶更新了脫機數據並關閉了應用程序時才需要它 - 當互聯網連接再次可用時再也不打開。但是,這是iOS的限制,你無法在iOS中實現這一點。

對於其他任務,您可以在應用程序處於活動狀態時從服務器異步獲取數據。

您可以簡單地創建5分鐘計時器 - 只有在您的應用程序處於活動狀態時纔會運行。在那個時候,您可以執行代碼來獲取新票據並以異步模式向服務器發送響應。 Check here for more detail about how to do this in Xamarin

這個過程作爲它的異步,不會干擾常規的UI活動。只要有互聯網連接,用戶就可以在數據庫中檢查新票,更新數據庫中的響應等。

相關問題