2017-07-26 61 views
0

我正在Xamarin for iOS/Android上開發一個應用程序,它將使用UDP發送和接收數據。在後臺處理(發送/接收)UDP數據

當應用程序在後臺運行,甚至屏幕進入睡眠狀態時,可以這樣做嗎?

就像Facebook Messenger應用程序處於活動呼叫時一樣。

+0

我用同樣的東西在這裏工作,似乎就像使用本地實現一樣,唯一可行的方法就是實現它。我真的不知道iOS,但在Android中,您需要訪問下載管理器API,因爲每個Android /設備都有自己的下載管理器。我沒有嘗試使用UDP,我正在使用HTTP下載。如果你對此有所瞭解,請分享一些信息,因爲我也想知道它 –

回答

0

簡答(適用於iOS):不可以。後臺提取是機會主義的,你不能只強制它。遠程通知可以遠程觸發,但處理時間有限。

VoIP應用程序使用Apple提供的庫來執行這些任務(例如:PushKit,CallKit),並且還使用VoIP背景模式。看看Background Execution。你不能只是下載內容,只要你想,雖然背景有限制(在通知中,數據處理等)


在Android上,您可以使用Services,可在執行長時間運行的操作背景,並且它不提供用戶界面。

離Android服務最近的是Remote NotificationsBackground fetch。允許後臺執行模式(節選):

  • 應用程式播放音頻內容給用戶,同時在後臺運行,如音樂播放器應用程序
  • 應用該記錄的音頻內容,而在後臺
  • 隨時向用戶通知其位置的應用,例如導航應用
  • 支持網際協議語音(VoIP)的應用
  • 需要定期下載和處理新內容的應用
  • 應用程序,從外部附件

聲明讓系統知道哪些服務可以使用,但在某些情況下,它是實際防止被暫停您的應用程序的系統框架的服務得到定期更新。

背景獲取警告:

啓用該模式是不能保證系統會給您的應用程序的任何時間執行後臺獲取

+0

即使設備正在充電,這是否適用於iOS? 我的應用程序將要求充電器已連接。 – vaid

+0

您是否已將應用程序的版本提交給AppStore?我懷疑蘋果會允許你強制將設備插入 – nathan

+0

還沒有。爲什麼會是這種情況?我在想,如果設備正在充電,那麼後臺操作可能會延長一段時間。 – vaid