Как запустить код в фоновом режиме на iOS? Не уверен, какая методология имеет смысл [закрыто]IOS

Программируем под IOS
Ответить
Anonymous
 Как запустить код в фоновом режиме на iOS? Не уверен, какая методология имеет смысл [закрыто]

Сообщение Anonymous »


Я пытаюсь настроить фоновые HTTP-запросы на загрузку (синхронизацию файлов с телефона пользователя на сервер), которые периодически запускаются в моем приложении Swift. У меня нет строгих требований к тому, когда это произойдет (это может произойти ночью или в течение дня).

Я знаю, что Apple предоставляет несколько API для фоновых задач в iOS (beginBackgroundTask, BGAppRefreshTaskRequest, BGProcessingTaskRequest, URLSession загрузка по сравнению с фоновым сеансом). И я видел этот пост на форумах разработчиков Apple, в котором пытаются объяснить различия и когда какой использовать, а также страницу Apple на эту тему, но мне до сих пор не ясно, как некоторые из них работают на практике, и таким образом, какие из них мне следует использовать в моем случае.

Мои вопросы:
[*]Как запланировать периодическую загрузку файлов в фоновом режиме? Я предполагаю, что мне следует использовать BGProcessingTaskRequest, поскольку я не знаю точно, сколько времени займет эта задача (это может быть синхронизация всего 1-2 файлов, а может быть и сотен), и я не знаю, меня не волнует, если он будет работать всю ночь. [*]Как обеспечить возможность выполнения задач переднего плана после закрытия приложения? (т. е. когда пользователь запускает синхронизацию вручную в приложении) Со страницы Apple в URLSessionUploadTask: «В отличие от задач обработки данных, вы можете использовать задачи загрузки для загрузки контента в фоновом режиме». Означает ли это, что любые запросы, которые я делаю с помощью URLSession.shared.upload(), будут автоматически выполняться в фоновом режиме, если пользователь закроет приложение? Даже с версией async/await, или мне нужно использовать версию completionHandler? [*]Нужно ли мне вызывать beginBackgroundTask, если я использую URLSession.shared.upload(), чтобы гарантировать, что у меня будет больше времени для завершения загрузки? [*]А как насчет последовательных запросов (т. е. запросов, которые еще не начались к моменту закрытия приложения)? Судя по этому ответу SO, похоже, мне может потребоваться заранее запустить все загрузки параллельно? https://stackoverflow.com/a/53949607/2359478 [*]Стоит ли мне рассматривать URLSessionConfiguration.background для моего варианта использования? Похоже, я использую beginBackgroundTask и BGProcessingTaskRequest, тогда это может быть ненужно?
Спасибо!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»