Что произошло после того, как загрузка NKIssue завершилась из-за недоступности сети?

У меня есть приложение NewsStand, когда пользователь забирает кнопку загрузки, мы загружаем проблему, используя

[nkAssetDownload downloadWithDelegate: self];

Теперь между загрузкой предположим, что сетевые разъединения, NSURLConnection вызывает метод didFailWithError: (NSError *). Я информирую об этом пользователя с пользовательским интерфейсом оповещения и обновления, чтобы активировать кнопку загрузки. Теперь, когда пользователь нажимает кнопку «загрузить», я проверяю

if (nkIssue.downloadingAssets.count == 1) {снова начать загрузку с помощью [nkIssue.downloadingAssets objectAtIndex: 0]; } else {начать загрузку с помощью nkAssetDownload = [nkIssue addAssetWithRequest: urlRequest]; }

У меня мало запросов об этом

1) Почему я всегда получаю nkIssue.downloadingAssets.count == 0, когда пользователь снова нажимает кнопку «загрузить»? Должна ли быть проблема, которая должна оставаться в очереди загрузки iOS?

2) После того, как пользователь снова нажал кнопку «загрузить», выпуск должен продолжить загрузку с той же позиции? Я не всегда наблюдаю за этим поведением, когда-то он начинает загрузку с самого начала (вздох).

Хотя, если я закрываю приложение, удаляю его из памяти (дважды нажмите кнопку «домой», долго нажмите значок приложения и удалите его), и снова запустите, я получаю [nkLib downloadingAssets] .count == 1 в «didFinishLaunchingWithOptions», и моя проблема возобновляет загрузку.

Все аспекты NewsStand не подтверждены Apple.

One Solution collect form web for “Что произошло после того, как загрузка NKIssue завершилась из-за недоступности сети?”

У меня есть две теории, если вы хотите исследовать дальше и не имеете лучших идей:

  1. Я удивлен, что NSURLConnection вызывает didFailWithError. Я ожидал, что загружающий актив останется в загрузке пакетов и будет автоматически повторен позже. Моя теория в том, что: метод didFailWithError является дополнительным, а Kit Newsstand работает по-разному в зависимости от того, реализуете ли вы этот метод или нет. NSURLConnection может проверить, что делегат отвечает на этот метод, чтобы принять это решение. Если вы реализуете метод и возникает сетевая ошибка, сообщение об ошибке сообщается с помощью метода didFailWithError. После того, как этот метод завершит выполнение, ресурс загрузки будет удален из библиотеки. Если вы не реализуете метод, загрузка не будет терпеть неудачу, и любые ошибки будут обработаны комплектом Newsstand: загружающий ресурс останется в очереди и будет отложен на неопределенный срок (насколько ваше программное обеспечение связано с тем, что загрузка никогда не завершится ).

  2. Если загрузка завершается с ошибкой (или завершается), вам сообщается метод обратного вызова делегата didFailWithError (или connectionDidFinishDownloading). Загружающий ресурс, вероятно, не будет удален из downloadAssets, пока этот метод не завершится. Если вы представляете предупреждение во время метода, актива не будет, когда пользователь снова нажмет кнопку «Загрузить».

Interesting Posts

iOS: Как создать двухязычное приложение для iOS

Как центрировать текст в середине круга?

startFirstResponder вызывает сбои UICompatibilityInputViewController

Лучший способ сделать переход к предыдущему с помощью AVQueuePlayer?

Facebook Open Graph Поделиться с iOS не работает без удара Open Graph Debugger сперва

Как повторно активировать контакт между двумя физическими

iOS: Добавить несколько программ UIImageViews программно во время выполнения

Firebase Auth – получить идентификатор провайдера

Как программно добавить UIImage в UIImageView, а затем добавить UIImageView в другой UIView?

Impelementation RTCDataChannel WebRTC в iOS

iPhone Cocos2D – список режимов смешивания, доступных для спрайта и как их установить

OpenGL ES Pixel Art – масштабирование

Как выбрать строку из каждой части таблицы в swift?

Исправление ориентации UIImage, хранящегося в документе, с потерянными тегами EXIF

Предупреждение: touchID не рекомендуется в iOS 11.0

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.