Xamarin.Forms iOS - 当设备获得互联网连接时开始上传数据,即使应用程序当前未处于活动状态或在后台运行



我有一个Xamarin.Forms应用程序,用户可以在其中创建"列表",然后将其发送到服务器(Http api调用)。我们的一个用例是用户创建了一个列表,但目前没有互联网连接,因此列表将处于"待处理"状态。然后,用户可以后台应用(不再处于活动状态)。在以后的某个时候,用户现在将拥有互联网连接,我希望应用程序自动发送这些待处理的列表,而无需用户再次打开应用程序。

我目前正在Xamarin.Forms应用程序的iOS实现中寻找一种方法,并且还需要对Android实现做类似的事情。

我已经看过iOS的后台提取,但目前即使我将间隔设置为后台提取最小值,PerformFetch似乎也很少被调用,因此它可能不够可靠。 我还在iOS文档中读到,PerformFetch上的代码不应运行超过30秒,否则它将受到"惩罚"并进一步限制间隔。列表可以附加大型图像或视频,并且发送所有图像或视频肯定需要 30 秒以上。

NSUrlSessionUploadTask 处理连接问题。您还应该实现 didCompleteWithError 处理程序,并在上一个任务出错时再次排队相同的上传。

有一个来自Rob Gibbens的很好的github示例。他实现了 NSUrlSessionDownloadTask,但您将使用相同的方法使用 NSUrlSessionUploadTask。

请考虑使用消息传递中心在项目中使代码更简洁。

最新更新