我有一个Xamarin.Forms应用程序,用户创建“列表”,然后将它们发送到服务器(Http api调用)。我们使用的用例是用户创建列表但目前没有互联网连接,因此列表将处于“待处理”状态。然后,用户可以对应用程序进行后台处理(不再有效)。在某些时候,用户现在可以使用互联网连接,我希望应用程序自动发送这些待处理的列表,而无需用户再次打开应用程序。
我目前正在寻找一种在Xamarin.Forms应用程序的iOS实现中的方法,并且还需要做与Android实现类似的操作。
我已经看过iOS的Background Fetch,但是即使我将间隔设置为backgroundfetchminimum,它似乎也很少被调用,所以它可能不够可靠。另外我在iOS文档上读到,PerformFetch上的代码运行时间不应超过30秒,否则会受到“处罚”并限制间隔更多。列表可以附加大型图像或视频,发送所有内容肯定需要30秒以上。
NSUrlSessionUploadTask处理连接问题。如果上一个任务出错,您还应该实现didCompleteWithError处理程序并再次对同一个上载进行排队。
Rob Gibbens有一个漂亮的github example。他实现了NSUrlSessionDownloadTask,但您将使用相同的方法来使用NSUrlSessionUploadTask。
考虑使用MessagingCenter让您的代码更清洁。