我們正在開發一個企業應用程序,用於將用戶輸入的表單數據發送到服務器。應用程序嘗試在用戶點擊保存後立即發送數據。如果發送數據時出現問題(例如無網絡連接),我們希望在X分鐘後再次嘗試,並定期重試,直到數據成功發送。這些請求通常不是非常大或運行時間很長,但用戶經常處於無網絡訪問的環境中,因此重試很重要。在後臺向服務器發送數據/重試請求的選項
在應用程序運行時重試API請求很簡單,但理想情況下,我們希望在應用程序處於後臺時定期重試。 iOS背景執行功能可以實現的最佳效果是什麼?以下是我看到的一些選項:
- 使用
beginBackgroundTaskWithExpirationHandler:
進行一次性請求以獲得更多時間。這會給我們一個額外的嘗試,在應用程序轉到後臺後發送數據,但不會重複嘗試 - 使用「後臺獲取」功能,並嘗試在應用程序被喚醒時向服務器發送任何新數據爲背景獲取。聽起來不錯,但我擔心這可能是濫用背景獲取功能?
是我最好的選擇之一嗎?我錯過了另一種方法嗎?
這是一個iOS和Android實現的Xamarin應用程序,但我不認爲這對我的問題有重大影響;我可以根據需要編寫iOS特定的代碼。
是的,我應該把它列入選項列表。但是,如果我使用它來再次嘗試上傳數據,並且嘗試失敗,那麼當應用程序仍處於後臺時,是否有任何方法可以嘗試其他請求?或者我基本上只有一個鏡頭,必須等待應用程序返回到前臺才能嘗試第二個請求? –
看到我編輯的答案。 – deadbeef
謝謝,很多很好的細節。我們實際需要做的是將數據發佈到服務器,所以它將成爲後臺上傳任務,但基本思路應該是相同的。如果沒有提供更好的解決方案,我會接受你的回答。 –