2017-07-26 166 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