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

时间:2019-01-29 07:20:51

标签: ios swift amazon-s3 awss3transfermanager awss3transferutility

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

例如,我在互联网连接上使用100 MB的文件进行了测试,上传速度为10 Mbps,当应用程序处于前台时,使用多部分上传花费了35秒,而上传同一文件则花费了14分40秒在后台运行应用程序时使用分段功能。

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

1 个答案:

答案 0 :(得分:0)

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

根据苹果公司有关后台执行的文档,其中说:

Suppose if you are running a process and in between you press the home button and your app goes to the background, then your app should get some time to finish what it was doing or at least in most cases it should be able to save any important data. This is where you are requesting the os for the background execution. 

Normally the OS will give upto 3 minutes(180 seconds) to complete the task . This is just a general observation. The time can be greater than or less than 3 minutes.This is not given in the official documentation.

如果您在后台运行一段时间后仍未调用endBackgroundTask(),则您的应用将被终止。您最终将丢失上载内容。

想法:

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

WARNINIG :无法在后台执行无限或长期运行的任务