Можно ли использовать APNS для обмена сообщениями между серверами?

Я работаю над приложением для обмена сообщениями, и у меня возникла дилемма о том, как отправлять данные с сервера на клиент.

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

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

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

** Новой информациейможет быть что угодно, от текстовых сообщений до сообщений администратора сервера. (и есть много сообщений администратора...)
Например, в моем приложении пользователи могут видеть статус своих друзей (в сети/офлайн), поэтому, если user1 и user2 являются друзьями, а user2 просто меняет свой статус с онлайн на оффлайн, сервер должен отправить эту новую информацию (сообщение администратора = user2_offline ) пользователю1.

*** Push-уведомлениясервер отправляет пустые (без данных/звука), это просто триггер для клиента, чтобы получить новую информацию, поэтому, если push-уведомление было отправлено клиенту и клиентское приложение было близко, он ничего не заметит. (если приложение запущено, оно будет получать новую информацию с сервера)

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

Чтобы быть яснее, меня больше всего волнует:
1. Достаточно ли надежен APNS, чтобы я мог использовать его в качестве основного механизма обмена сообщениями между серверами и клиентами?
2. Будет ли Apple одобрять потенциально тысячи или сотни тысяч push-уведомлений в день с моего сервера?

7
задан Eyal 10 June 2012 в 12:03
поделиться