iPhone: надежность push-уведомлений на массовых устройствах

#iphone #apple-push-notifications #apns-sharp

#iPhone #apple — push-уведомления #apns-sharp

Вопрос:

Я использовал https://github.com/Redth/APNS-Sharp чтобы отправить push-уведомление на все устройства, на которых установлено приложение my iPhone. Это работает очень непоследовательно!

Как возникла эта проблема?

У нас есть приложение для iPhone, в котором работает около 500 пользователей. Мы заметили, что большинство пользователей не получают уведомления! При дальнейшей отладке в режиме реального времени я заметил следующую последовательность событий.

 .....
10:37:33 AM - Notification Queued!
10:37:33 AM - Notification Queued!
10:37:33 AM - Notification Queued!
10:37:33 AM - Notification Queued!
10:37:36 - Connecting...
10:37:36 - Connected...
10:37:36 - Notification Success
10:37:36 - Notification Success
10:37:36 - Notification Success
...
10:37:36 - Error: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.
10:37:39 - Connecting...
10:37:40 - Connected...
10:37:40 - Notification Success
10:37:40 - Notification Success
....
  

Что я сделал?

Я создал тестовое приложение для iPhone, используя специальный производственный сертификат, и установил его на 5 устройствах. Я попытался отправить несколько сообщений одновременно на все эти устройства. Я заметил совершенно непоследовательное поведение при получении сообщений. Иногда все 5 устройств получали сообщение мгновенно. Из 5 устройств 3 получают сообщение почти мгновенно, а из двух других устройств одно из них иногда получает сообщение мгновенно, а другое не получает все сообщения, кроме последнего сообщения. Иногда он вообще не получает сообщение!

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

Что я проверил?

  • Он использует одно и то же соединение для отправки всех сообщений, поэтому не открывает несколько подключений.
  • Использование правильного сертификата и сервера push-уведомлений.
  • Несколько раз запускал службу обратной связи, но она не возвращала никаких идентификаторов устройств.

Кто-нибудь еще заметил это поведение? В чем может быть проблема при отправке сообщения на несколько устройств? Есть ли что-нибудь еще, что я мог бы сделать, чтобы сделать Push-уведомления надежными?

Спасибо.

Ответ №1:

Попробуйте UrbanAirship. Я обнаружил, что он очень последовательный из-за его облачного подхода (после развертывания нескольких приложений). Многие крупные игроки тоже используют его (tapulous и т. Д.). Всегда лучше делегировать головную боль от таких вещей экспертам :). Это бесплатно.

Комментарии:

1. Это не совсем бесплатно! И это просто вопрос отправки сообщения на сервер Apple с правильным идентификатором устройства, и это происходит, но сервер Apple отправляет не все сообщения!

Ответ №2:

Я зарегистрировал эту ошибку в Apple и получил от них ответ. Похоже, они исправили проблемы на стороне клиента, связанные с Push-уведомлениями в iOS 5.0. Кроме того, поскольку Push-уведомление не гарантируется, происходит это непоследовательное поведение. Если кому-то интересно, то идентификатор ошибки # 10333505