Alamofire — лучший способ повторить автономный запрос

#swift #alamofire

#swift #alamofire

Вопрос:

Вот что мне нужно:

  1. вызов post api
  2. в случае успеха: ничего не делать
  3. в случае сбоя (интернет недоступен): поместите запрос в стек
  4. следите за восстановлением сети
  5. если сеть доступна: повторите все в этом стеке

даже если пользователь закроет приложение, мне все равно нужен доступный стек. Мне нужно сохранить стек на диск

Вот что я планирую сделать:

  1. есть класс с именем apiRequest, он содержит
    1. параметры
    2. url
  2. есть класс с именем apiRequestManager, он содержит
    1. массив apiRequest

массив apiRequest сохраняется на диске. Каждый раз, когда пользователь хочет вызвать API, я сначала вызываю Alamofire.request и, если не удалось, помещаю его в массив apiRequest.

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

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

Кроме того, существует протокол RequestRetrier. Но я не хочу повторять каждый отдельный запрос снова и снова, я хочу повторить все это одновременно, и если это не удастся, я хочу сохранить запрос на диске для будущих попыток, так что, я думаю, это не то, что я хочу использовать?

Есть предложения?

Спасибо.

Комментарии:

1. Вы когда-нибудь придумывали хорошее решение для этого?

2. @CliftonLabrum Я заканчиваю тем, что пишу свой собственный класс, который продолжает отслеживать то, что не было отправлено. Точно так же, как то, что я написал в своем вопросе о том, что я планирую делать.

3. @nuynait Можете ли вы опубликовать полный пример? Я также относительно новичок в Alamofire и iOS и пытался сделать то же самое…

4. @denis_lor извините, у меня нет времени, в последнее время я очень занят. Я был бы рад помочь по любым вашим вопросам.