Использование APN в приложении обмена сообщениями - PullRequest
5 голосов
/ 28 февраля 2012

Я работаю над приложением для обмена сообщениями (что-то вроде WhatsApp), и у меня возникла дилемма по поводу реализации его основной функциональности - отправки сообщения с client1 на client2.

Дело в том, что я использую централизованный серверный дизайн, где клиенты используют NSURLConnection для отправки сообщений на сервер, сервер не хранит и не управляет открытыми сокетами и не может отправить сообщение одному из клиентов, поэтому клиенты имеют таймер и каждые 2 секунды опрашивают сервер, чтобы узнать, ждет ли их новое сообщение.

Проблема этого подхода заключается в том, что запросы к серверу каждые 2 секунды, по-видимому, очень быстро разряжают батарею, поэтому я подумал, что, возможно, вместо того, чтобы клиент запрашивал сервер, использовать APNS, чтобы, когда client1 отправлял сообщение на сервер, сервер отправит push-уведомление на client2, затем client2 получит данные с сервера.

Будет ли этот подход работать с массивным приложением для обмена сообщениями, требующим массового использования push-уведомлений?

1 Ответ

5 голосов
/ 28 февраля 2012

Да.Я бы сказал, что этот подход в порядке и будет работать хорошо.

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

APNS может справиться с огромной нагрузкой.Там, где, как я заметил, очень мало задержек.

PUSH-система на iOS - это просто HTTP-соединение с яблоком, которое удерживает канал ответа открытым в течение нескольких часов (например, загрузка веб-страницы в течение нескольких часов).,Он будет использовать около + 10% от вашей батареи.Поэтому лучше всего не создавать еще одно поддерживающее соединение HTTP / Socket и повторно использовать яблочный канал (APNS) для экономии батареи конечных пользователей.

В своем приложении вы получите Push-уведомление и сможетепроанализируйте JSON-данные и затем извлеките / синхронизируйте ваш собственный сервер.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...