it-swarm.com.ru

APNS (Apple Push Notification Service) надежность

Наше приложение использует APNS для получения Push-уведомлений. Однако наш клиент утверждает, что некоторые из его устройств не получали уведомлений, и утверждает, что они «должны» обеспечить доставку уведомлений на 100%. Но я прочитал где-то что APNS не на 100% надежен, и должны быть случаи, когда уведомления не доставляются. 

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

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

Любая помощь будет признательна, потому что наш клиент почти убьет нас, если все свои устройства не получают APNS!

34
Faust V
  1. APNS основан на серверах Apple, и Apple не дает никаких гарантий на успешную доставку сообщений.
  2. Если приложение открыто (то есть пользователь использует приложение) во время получения уведомления, iOS не показывает сообщение уведомления, вам нужно обработать его.
  3. Уведомление отображается только в том случае, если приложение установлено или убито. 
  4. Также внедрите сервис обратной связи на вашей стороне сервера; поможет вам избавиться от старых нежелательных токенов (пользователей, которые удалили приложение или отключили уведомления через настройки).
  5. Не отправляйте слишком много уведомлений на устройство в течение короткого промежутка времени, потому что APNS кэширует только 1 сообщение/устройство (если устройство находится в автономном режиме). Таким образом, он может доставить сообщение, когда устройство подключается к сети. Я не уверен, как долго сообщение кэшируется, хотя.

Или просто внедрить Pusher ... http://pusher.com

45
Karthik

Мы сталкиваемся с той же проблемой. Как все говорили, APNS - это лучший способ услуга, поэтому вы не можете быть уверены, что каждое уведомление будет доставлено, но вы можете быть уверены, какие из них были получены. Это то, что мы собираемся сделать. Мы регистрируем в нашем бэкэнде каждую очередь уведомлений отправляем и мобильное приложение сообщает о каждом полученном уведомлении. Затем мы устанавливаем максимальное время ожидания получения уведомления. Если мы не получим отчет, мы попробуем еще раз.

Я надеюсь, что это может быть полезно для кого-то (даже 2 года спустя)

8
pdaire

В Apple Docs ясно сказано, что он не гарантирован на 100% и не должен использоваться как таковой. Его отправили с «максимальным усилием».

3
steve

В соответствии с рекомендациями Apple, APNS не является на 100% надежной службой, а это означает, что ваше приложение может не получать Push-уведомления от серверов Apple по следующим причинам:

  • Устройство не в сети 
  • Ваше приложение находится на переднем плане, вам нужно управлять Push-уведомлениями.

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

Для получения дополнительной информации, вы можете посмотреть в этом ответе 

https://stackoverflow.com/a/25830955/3278326

0
Jarvis The Avenger