Я схожу с ума от функции, которую реализую в своем приложении для iOS:/
Я пытаюсь добавить для пользователя возможность загружать некоторые документы в приложение, чтобы он мог получить к ним доступ даже в автономном режиме.
Например, в приложении пользователь может перемещаться по некоторым категориям, которые приведут его к документам. В этой функции он мог выбрать загрузку категории A. Приложение загрузит весь контент этой категории с сервера и документы.
Категория может варьироваться от нескольких десятков файлов до нескольких тысяч! Вот почему мы решили загружать содержимое, даже если приложение работает в фоновом режиме.
Итак, вот как это работает под капотом с использованием NSURLSession: у меня есть NSObject, который я назвал DownloadManager, который обрабатывает делегирование для NSURLSession и самого сеанса. Когда я его создаю, я создаю сеанс с фоновой конфигурацией. Я обрабатываю категорию, которую хочу загрузить, чтобы получить все, что мне нужно, чтобы создать задачу загрузки и запустить ее. Когда это заканчивается, у категории есть подкатегории и так далее (для глубины 3 максимального уровня), которые я также должен загрузить, чтобы получить всю их информацию.
Дело в том, что я не могу просто поставить задачи в NSURLSession, как только он у меня появится, потому что сервер использует систему аутентификации wsse для разрешения GET маршрутов. Этот заголовок имеет срок жизни 5 минут, поэтому я должен создать его непосредственно перед тем, как он перейдет к объекту NSURLSession, и чтобы быть (почти) уверенным, что он отправит его сразу после этого, я ограничиваю количество задач в NSURLSession до предела одновременных подключений на хост.
В режиме отладки (компиляция и запуск с помощью XCode) приложение работает нормально и, кажется, не имеет проблем с выполнением задач загрузки в фоновом режиме, но когда я тестировал его в режиме тестирования (с использованием Crashlytics), обработка в фоновом режиме действительно много медленнее, и иногда кажется, что NSURLSession больше не отправляет события...
Есть ли что-то сложное, чтобы понять, что я не получил за использование NSURLSession? Это нормально, что сессия нормально работает в фоновом режиме, а потом вдруг кажется мертвой и не отправляет события в течение более или менее длительного времени (это может длиться от нескольких секунд до целых минут!), чтобы снова «работать»? :Икс
Изменить. Другое дело, что загрузка работает без проблем, пока приложение находится на переднем плане.
Спасибо за любую помощь, которую вы мне окажете, Билкикс