Если вы создаете какое-либо приложение для чата, ваши пользователи будут ожидать, что их сообщения будут получены немедленно. Я предполагаю, что ваш сервер отправляет push-уведомление, как только получает сообщение. Вам следует опросить сервер на наличие новых сообщений, когда происходят следующие события:
- Пользователь запускает приложение.
- Приложение возобновляет работу после подвешивания к фону.
- Пользователь запускает приложение в ответ на push-уведомление. (вероятно, тот же код, что и 1).
- Приложение получает push-уведомление, пока оно активно.
Если ваш сервер надежно отправляет push-уведомления при возникновении события, вам не нужно вручную опрашивать.
Вам не нужно напрямую взаимодействовать с очередью запросов RestKit для чего-то столь же тривиального, как это. RKClient
может безопасно управлять этим для вас.
Помните, что пользователь будет ожидать, что приложение хорошо справится с проблемами доступности сети. Очередь запросов выполнит для вас тесты достижимости и соответствующим образом поставит в очередь запросы до тех пор, пока сеть не станет доступной, однако вам может потребоваться прослушать уведомления и предоставить соответствующий ответ. Для этого вам необходимо зарегистрироваться для получения уведомлений RKReachabilityStateChangedNotification
NSNotificationCenter
, публикуемых платформой RestKit. Вам также может потребоваться сохранить неотправленные сообщения локально и повторить попытку позже, особенно если приложение приостановлено / завершено.
Не забудьте отслеживать какой-то уникальный идентификатор, который вы можете использовать, чтобы сообщить серверу, какое сообщение вы недавно получили. Затем сервер должен отправить вам массив, содержащий каждое сообщение после этой точки.
Наконец, Core Data - отличный способ хранить данные, которые должны сохраняться между запусками. С помощью RestKit (и по сути с основными данными) ваши данные удобно доступны в виде набора объектов, и вы можете выполнять мощные запросы к этим данным.