8

我在我的 iOS 应用程序中使用 AWS S3TransferUtility 的uploadUsingMultipart(fileURL, bucket, ...)函数将视频文件上传到 S3 存储桶。只要应用程序处于前台,上传就会非常快。但是一旦应用程序进入后台,上传过程就会非常缓慢,并且需要花费太多时间才能完成。

例如,我在 Internet 连接上使用 100 MB 文件进行测试,上传速度为 10 Mbps,当应用程序在前台时使用 multipart 上传需要 35 秒,但使用 multipart 上传相同文件需要 14 分 40 秒该应用程序在后台。

有没有办法在后台加快上传过程?

4

1 回答 1

1

由于答案很长,因此正在更新作为答案。

根据 Apple 关于后台执行的文档,它说:

假设如果您正在运行一个进程并且在您按下主页按钮并且您的应用程序进入后台时,那么您的应用程序应该有一些时间来完成它正在做的事情,或者至少在大多数情况下它应该能够保存任何重要的数据。这是您请求操作系统进行后台执行的地方。

通常,操作系统最多需要 3 分钟(180 秒)来完成任务。这只是一般的观察。时间可以大于或小于3分钟。官方文档中没有给出这个。

如果您在后台一段时间后不调用 endBackgroundTask(),您的应用将被终止。你最终会丢失上传。

主意:

  1. 如果您的任务未在分配的时间(3 分钟)内完成,您可以向用户发布一些本地通知“打开您的应用程序以恢复上传”
  2. 可以分批上传(dropbox 使用 chunkers 上传或更新数据)
  3. 如果你看一下whatsapp,谷歌照片。当您在上传时进入后台时,它会提醒您。
  4. 在上传之前,检查数据是否巨大然后提醒用户。如果接受它上传它。
  5. 可以选择仅在 wifi 上上传

警告:无法在后台执行无限或长时间运行的任务

于 2019-01-30T13:44:43.827 回答