Будет загружено резюме после закрытия моего приложения в фоновом режиме

Я понял, что можно скачать в фоновом режиме приложения. Я реализовал режим фоновой захвата в XCode и зарегистрировал фоновое задание и его работоспособность.

Можно ли возобновить загрузку после принудительного закрытия моего приложения пользователем? Как?

ios,swift,

3

Ответов: 3


2

Нет, вы не можете продолжить скачивание, когда ваше приложение будет разорвано пользователем! Ваше приложение должно требовать сохранения в фоновом состоянии !!! Потому что, если пользователь принудительно закрывает приложение, это значит, что он больше не хочет запускать его. Если ваше приложение заблокировано системой, оно может просыпаться, но не если оно прекращено пользователем!

Если приложение iOS завершается системой и перезапускается, приложение может использовать один и тот же идентификатор для создания нового объекта конфигурации и сеанса и получения статуса передач, которые выполнялись на момент завершения. Это поведение применяется только для обычного завершения приложения системой. Если пользователь завершает работу приложения с экрана многозадачности, система отменяет все фоновые передачи сеанса. Кроме того, система автоматически не перезапускает приложения, которые были принудительно завершены пользователем. Пользователь должен явно перезапустить приложение, прежде чем перенос начнется снова.

Обновление: (Как указано в комментарии)

Обратитесь к документации Apple ,

Этот метод позволяет вашему приложению узнать, что он вот-вот будет полностью завершен и очищен от памяти. Вы должны использовать этот метод для выполнения любых окончательных задач очистки для вашего приложения, таких как освобождение общих ресурсов, сохранение пользовательских данных и недействительность таймеров. Для выполнения каких-либо задач и возврата вам потребуется около пяти секунд. Если метод не возвращается до истечения времени, система может полностью уничтожить этот процесс.

Для приложений, которые не поддерживают фоновое исполнение или связаны с iOS 3.x или ранее, этот метод всегда вызывается, когда пользователь выходит из приложения. Для приложений, поддерживающих фоновое выполнение, этот метод обычно не вызывается, когда пользователь выходит из приложения, потому что приложение просто перемещается в фоновый режим в этом случае. Однако этот метод можно вызвать в ситуациях, когда приложение работает в фоновом режиме (не приостановлено), и по какой-то причине системе необходимо его прекратить.

После вызова этого метода приложение также публикует уведомление UIApplicationWillTerminate, чтобы дать заинтересованным объектам возможность ответить на переход.


1

Когда какая-либо задача завершается, объект NSURLSession вызывает делегатский URLSession: task: didCompleteWithError: метод с объектом ошибки или nil (если задача выполнена успешно). Если задача не удалась, большинство приложений должны повторить запрос до тех пор, пока пользователь не отменяет загрузку, или сервер не возвращает ошибку, указывающую, что запрос никогда не будет выполнен. Однако ваше приложение не должно повторять попытку немедленно. Вместо этого он должен использовать API достижимости, чтобы определить, доступен ли сервер, и должен сделать новый запрос только тогда, когда он получит уведомление о том, что доступность изменилась.

Если задача загрузки может быть возобновлена, словарь пользователя NSError objectInfo содержит значение для ключа NSURLSessionDownloadTaskResumeData . Ваше приложение должно передать это значение для вызова downloadTaskWithResumeData: или downloadTaskWithResumeData: completeHandler: для создания новой задачи загрузки, которая продолжает существующую загрузку.

Если задача не может быть возобновлена, ваше приложение должно создать новую задачу загрузки и перезапустить транзакцию с самого начала.

checkout здесь: жизненный цикл сеанса URL


1

Да, если я правильно понял, что вам нужно - Apple разрешает это с помощью API сохранения состояния и восстановления:

Верните приложение в прежнее состояние после его завершения системой.

Проверьте статью Apple: сохранение пользовательского интерфейса вашего приложения на всех запусках , чтобы ознакомиться с этой структурой.

Подробнее о процессе сохранения можно найти в статье: О процессе сохранения пользовательского интерфейса

Подробности о процессе восстановления можно найти здесь: О процессе восстановления пользовательского интерфейса

Raywenderlich havea € ™ немного устаревшая реализация учебника этой основы @ State Restoration Tutorial: Начало работы

ИОС, быстры,
Похожие вопросы