2014-02-17 5 views
0

Я разрабатываю приложение для обмена сообщениями, и я должен сделать вызов серверу каждые x секунд, чтобы загрузить с сервера новые сообщения. Я использую NSTimer, который вызывает сервер каждые x сек. Но, например, x = 1 с, а ответ от сервера - через 1,5 сек. В этом случае у меня есть один новый запрос на сервер, который предшествует предыдущему запросу, и это большая проблема для логики моего приложения. Можете ли вы помочь мне понять, как я могу циклически циклически проверять сообщения на сервере, не имея этой проблемы? Спасибо.Ответ NSTimer и сервера

+0

Как насчет использования уведомлений Apple Push для уведомления вашего приложения, если сообщение получено для пользователя? Таким образом вам не придется постоянно регистрироваться на своем сервере, чтобы узнать, ожидает ли сообщение. – sangony

+0

@sangony is right.Push-уведомления являются лучшим вариантом. Также имейте в виду, что этот сценарий не будет работать, если ваше приложение находится в состоянии приостановлено. Если вам не нравятся Push-уведомления, вы можете попробовать API-интерфейс Fetch API в iOS7. – Foriger

ответ

1

Остановите свой таймер перед началом веб-запроса, а затем запустите его снова, когда получите ответ.

1

Вы можете отправить запрос на сервер, и как только у вас появится ответ (успешный/неудачный), отправьте еще один. В этом случае вы будете уверены, что отправляется только один запрос, и вы можете легко справиться с этим.

+0

Я думаю, что это лучшее решение. Единственная проблема заключается в следующем: что произойдет, если сервер не отправит ответ? Не существует способа повторить попытку подключения к серверу. – Anna565

+0

Если сервер не видит ответа, вы должны увидеть сообщение об ошибке (время ожидания) и, как я уже сказал, отправить другой ответ в случае успеха и сбоя. – Greg

Смежные вопросы