Надежный обмен сообщениями между серверами и iPhone - PullRequest
1 голос
/ 19 декабря 2011

Моя компания предлагает приложение для iPhone для дневных трейдеров, которое, в основном, сообщает им, когда пришло время покупать или продавать.Кластер серверов генерирует эти сигналы ПОКУПКИ и ПРОДАЖИ и должен быть доставлен на устройство iOS клиента в течение минуты или меньше.Для всех других мобильных клиентов, которые мы разработали, нам разрешено опрашивать сервер в фоновом режиме (один раз в минуту), чтобы проверять наличие обновлений.

В iOS, однако, кажется, что в applicationDidEnterBackground выполняется что-либосвязано со временем или опрос не вариант.

Это заставило меня взглянуть на push-уведомления, но из того, что я читаю, они не надежны.Они используют методику «посылай и забывай», и нет гарантии, что они будут получены.

Вы можете увидеть проблему с этим.Если мы выдаем сигнал ПОКУПКИ, и пользователь действует с ним, то сигнал ПРОДАЖА генерируется через 10 минут и отправляется с помощью push, но никогда не приходит, они могут потерять много денег.

Итак, есть лихороший способ сделать это или мне не повезло?Спасибо!

Ответы [ 3 ]

1 голос
/ 19 декабря 2011

Между вашим сервером и устройством пользователя есть два посредника: а) Apple и б) сеть.

Apple не гарантирует доставку всех уведомлений; гарантировано прибытие только самых последних и только в течение ограниченного периода времени. Дополнительные сведения см. В разделе «Качество обслуживания» в Служба push-уведомлений Apple .

.

Если устройство подключается к сети через оператора мобильной связи, все может быть ужасно. Я сталкивался с ситуациями, когда некоторые уведомления приходили намного позже, а некоторые полностью терялись. По моему опыту, операторы защищают качество своих собственных услуг, а не услуги третьих сторон, таких как Apple. SMS / MMS обычно не будут потеряны, в то время как push-уведомление может.

Опрос сервера будет жизнеспособной альтернативой для вашего приложения. Увы, Apple не допускает сетевых операций для приложений, которые были переведены в фоновое состояние (за исключением загрузок в газетные киоски и VoIP).

0 голосов
/ 19 декабря 2011

Некоторые приложения, похоже, действительно хорошо выполняют push-уведомления (GroupMe), а другие - нет.Если вы действительно обеспокоены, вы можете использовать сервис, такой как Twilio, чтобы отправить пользователю SMS-сообщение со ссылкой, которая откроет ваше приложение и даст ему некоторую информацию.Таким образом, SMS может сказать «ПРОДАВАТЬ, ПРОДАВАТЬ, ПРОДАТЬ, yourapp: // stock = APL» или что-то подобное.Это очевидно не будет работать для пользователей iPod touch или iPad (хотя я не знаю, будет ли это проблемой для вас.

0 голосов
/ 19 декабря 2011

Попробуйте использовать собственную службу push-уведомлений Apple: http://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html

Это довольно просто реализовать, всего лишь несколько строк кода в приложении и немного PHP и JSON на сервере для отправки. Хорошо, что ваш сервер отправляет запрос в Apple, а собственные серверы Apple обрабатывают доставку на устройство безопасно и надежно. Уведомления обычно доставляются в течение 10 секунд после отправки (если устройство не находится в автономном режиме, оно будет доставлено, когда устройство подключится к сети).

Из моего опыта с push-уведомлениями я не потерял ни одного, и есть вариант доставки, который постоянно пытается доставить его до тех пор, пока он не будет успешным, и даже существует некоторый API-интерфейс обратного вызова на стороне сервера, который позволяет проверить статус ваших уведомлений. Вы также можете попробовать такую ​​услугу, как Городской дирижабль , чтобы выполнить работу за вас.


Вы также можете попробовать использовать один из фоновых режимов Apple как часть этого (например, получить «КУПИТЬ» в качестве уведомления и заставить приложение ждать «ПРОДАВАТЬ» в фоновом режиме). Самое большое ограничение заключается в том, что приложение может работать только в фоновом режиме в течение примерно 10 минут за раз, поэтому вам придется использовать обходной путь, например, воспроизводить музыку в фоновом режиме (или делать обычные объявления, такие как музыкальная дорожка; P), или предлагать пользователю снова открыть приложение для продолжения фоновой сессии.

...