我正在Xamarin for iOS/Android上开发一个应用程序,它将使用UDP发送和接收数据。在后台处理(发送/接收)UDP数据
当应用程序在后台运行,甚至屏幕进入睡眠状态时,可以这样做吗?
就像Facebook Messenger应用程序处于活动呼叫时一样。
我正在Xamarin for iOS/Android上开发一个应用程序,它将使用UDP发送和接收数据。在后台处理(发送/接收)UDP数据
当应用程序在后台运行,甚至屏幕进入睡眠状态时,可以这样做吗?
就像Facebook Messenger应用程序处于活动呼叫时一样。
简答(适用于iOS):不可以。后台提取是机会主义的,你不能只强制它。远程通知可以远程触发,但处理时间有限。
VoIP应用程序使用Apple提供的库来执行这些任务(例如:PushKit,CallKit),并且还使用VoIP背景模式。看看Background Execution。你不能只是下载内容,只要你想,虽然背景有限制(在通知中,数据处理等)
在Android上,您可以使用Services,,可在执行长时间运行的操作背景,并且它不提供用户界面。
离Android服务最近的是Remote Notifications或Background fetch。允许后台执行模式(节选):
- 应用程式播放音频内容给用户,同时在后台运行,如音乐播放器应用程序
- 应用该记录的音频内容,而在后台
- 随时向用户通知其位置的应用,例如导航应用
- 支持网际协议语音(VoIP)的应用
- 需要定期下载和处理新内容的应用
个- 应用程序,从外部附件
声明让系统知道哪些服务可以使用,但在某些情况下,它是实际防止被暂停您的应用程序的系统框架的服务得到定期更新。
背景获取警告:
启用该模式是不能保证系统会给您的应用程序的任何时间执行后台获取
我用同样的东西在这里工作,似乎就像使用本地实现一样,唯一可行的方法就是实现它。我真的不知道iOS,但在Android中,您需要访问下载管理器API,因为每个Android /设备都有自己的下载管理器。我没有尝试使用UDP,我正在使用HTTP下载。如果你对此有所了解,请分享一些信息,因为我也想知道它 –