Загрузка данных, даже когда приложение закрыто - PullRequest
0 голосов
/ 29 октября 2018

Можно ли загрузить данные после завершения работы приложения? Я хочу загружать данные в определенное время, чтобы получать новые обновления в моем API. И если после этого данные загружаются в фоновом режиме, если пользователь снова запускает приложение, ему не нужно ждать загрузки новых данных.

Ответы [ 4 ]

0 голосов
/ 29 октября 2018

Я согласился с другим ответом. Вы не можете продолжить загрузку, когда ваше приложение будет остановлено пользователем! Но я не согласен с вами по поводу обновления фонового приложения.

Фоновое обновление приложения

Вот Определение Apple:

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

А вот некоторые детали из другого doc

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

iOS пытается предсказать, когда пользователь запустит приложение в следующий раз. iOS запускает приложение в фоновом режиме, чтобы обновить содержимое непосредственно перед тем, как пользователь запустит приложение.

Еще один подход к обновлению контента - использование Push-уведомлений

Вот из документа Apple

Если ваш сервер отправляет push-уведомления на устройство пользователя, когда новый контент доступен для вашего приложения, вы можете попросить систему запустить ваше приложение в фоновом режиме, чтобы оно могло сразу начать загрузку нового контента.

Полезная нагрузка уведомления должна включать ключ content-available со значением, установленным в 1. Этот ключ позволяет iOS знать, что уведомление молчит. Тихо отправляет обновления в ваше приложение.

0 голосов
/ 29 октября 2018

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

0 голосов
/ 29 октября 2018

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

https://developer.apple.com/documentation/foundation/url_loading_system/downloading_files_in_the_background?language=objc

https://www.raywenderlich.com/567-urlsession-tutorial-getting-started

0 голосов
/ 29 октября 2018

Если приложение [сервер], обслуживающее контент, было прекращено, ответ - нет. (Нет ничего, чтобы продолжить запись данных в буфер / поток)

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

...