Xamarin.Forms iOS - начать загрузку данных, когда устройство получает подключение к Интернету, даже если приложение в данный момент неактивно или находится в фоновом режиме - PullRequest
1 голос
/ 16 апреля 2019

У меня есть приложение Xamarin.Forms, где пользователи создают «списки», а затем отправляют их на сервер (вызов API Http).У нас есть вариант использования: пользователь создает листинг, но в данный момент не имеет подключения к Интернету, поэтому листинг будет находиться в состоянии ожидания.Пользователь может затем фоновое приложение (больше не активно).В какой-то момент позже у пользователя теперь будет возможность подключения к Интернету, и я хочу, чтобы приложение автоматически отправляло ожидающие списки без необходимости повторного открытия приложения.

В настоящее время я ищу способ это сделать вреализация iOS для приложения Xamarin.Forms и должна была бы сделать что-то похожее с реализацией Android.

Я уже смотрел на Background Fetch для iOS, но в данный момент PerformFetch кажется редким, чтобы его вызывали дажеесли я установлю интервал в backgroundfetchminimum, чтобы он не был достаточно надежным.Также я прочитал на iOS документах, что код на PerformFetch не должен выполняться более 30 секунд, в противном случае он «оштрафован» и еще больше ограничит интервал.К спискам могут быть прикреплены большие изображения или видео, и их отправка может занять более 30 секунд.

1 Ответ

0 голосов
/ 16 апреля 2019

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

Есть хороший пример github от Роба Гиббенса. Он реализует NSUrlSessionDownloadTask, но вместо этого вы будете использовать NSUrlSessionUploadTask с тем же подходом.

Подумайте об использовании MessagingCenter , чтобы очистить свой код в своем проекте.

...