AWS S3 分段上传在后台太慢 - iOS

Ris*_*nha 8 amazon-s3 ios swift awss3transfermanager awss3transferutility

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

例如,我在互联网连接上使用 100 MB 的文件进行了测试,上传速度为 10 Mbps,当应用程序在前台时使用多部分上传需要 35 秒,但使用多部分上传同一文件需要 14 分 40 秒该应用程序在后台。

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

kar*_*hik 2

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

\n

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

\n
\n

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

\n

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

\n
\n

如果您在后台运行一段时间后不调用 endBackgroundTask(),您的应用程序将被终止。您最终将丢失上传内容。

\n

主意:

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

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

\n