Многоэтапная загрузка AWS S3 в фоновом режиме - iOS - PullRequest
0 голосов
/ 29 января 2019

Я использую функцию AWS S3TransferUtility uploadUsingMultipart (fileURL, bucket, ...) в моем приложении iOS для загрузки видеофайлов в корзину S3.Загрузка происходит очень быстро, когда приложение находится на переднем плане.Но как только приложение переходит в фоновый режим, процесс загрузки происходит очень медленно и занимает слишком много времени.

Например, я протестировал использование файла размером 100 МБ в интернет-соединении со скоростью загрузки 10Мбит / с, для загрузки с использованием multipart потребовалось 35 секунд, когда приложение находилось на переднем плане, но для загрузки того же файла с помощью multipart, когда приложение находилось в фоновом режиме, потребовалось 14 минут 40 секунд.

Есть ли способускорить процесс загрузки в фоновом режиме?

1 Ответ

0 голосов
/ 30 января 2019

Поскольку ответ длинный, обновляюсь как ответ.

В соответствии с документацией Apple по фоновому исполнению, в ней говорится:

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. Возможность загрузки только по Wi-Fi

WARNINIG : невозможно выполнить бесконечную или длительную задачу в фоновом режиме

...