【问题标题】:Xamarin.Forms iOS - start uploading data when device gets internet connectivity even when app is not currently active or is in the backgroundXamarin.Forms iOS - 当设备连接互联网时开始上传数据,即使应用程序当前未处于活动状态或处于后台也是如此
【发布时间】:2019-09-05 23:20:21
【问题描述】:

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

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

我已经查看了 iOS 的 Background Fetch,但目前 PerformFetch 似乎很少被调用,即使我将间隔设置为 backgroundfetchminimum,所以它可能不够可靠。 此外,我在 iOS 文档上读到 PerformFetch 上的代码不应运行超过 30 秒,否则会受到“惩罚”并进一步限制间隔。列表可以附加大图像或视频,发送所有这些肯定需要 30 多秒。

【问题讨论】:

标签: xamarin xamarin.forms xamarin.ios background-process background-fetch


【解决方案1】:

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

Rob Gibbens 有一个很好的github example。他实现了 NSUrlSessionDownloadTask 但您将使用 NSUrlSessionUploadTask 以相同的方法代替。

考虑使用MessagingCenter 在您的项目中清理代码。

【讨论】:

  • 感谢有关在 iOS 上使用 NSUrlSessionUploadTasks 的建议以及分享该 github 示例,因为它还有一些关于为 Android 实现某些东西的东西。我试图在 android 上使用 JobScheduler 来做与 NSUrlSession 类似的事情,但它似乎不像 NSUrlSession 那样可靠,因为即使有与 NSUrlSession 不同的网络连接,它也不会立即运行作业
猜你喜欢
  • 1970-01-01
  • 2021-09-06
  • 2021-10-02
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多