2014-02-01 4 views
1

В моем приложении iOS мне нужно уведомить пользователя о некоторых чрезвычайных событиях на удаленном устройстве. Требуется, чтобы пользователь получал предупреждения независимо от состояния приложения: если приложение было на переднем плане, в фоновом режиме или даже убито.Уведомлять пользователя, когда push-уведомления недоступны

В соответствии с документами Apple только обратный режим «voip» позволяет «поддерживать жизнь», чтобы оставаться на связи с сервером, находясь в фоновом режиме. Но режим «voip» разрешен только для реальных приложений VoIP, а мое приложение не предоставляет никаких услуг VoiP. Итак, я полагаю, что единственным вариантом для моего случая является использование уведомлений Apple push.

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

Мой вопрос: есть ли способ уведомить пользователя, когда Интернет отключен на устройстве iOS, а служба push-уведомлений недоступна, чтобы сообщить пользователю, что он не получит никаких уведомлений, пока он в сети?

ответ

1

Понятно, что вы здесь спрашиваете. Просто потому, что ваше устройство имеет локальное подключение к Интернету, это не означает, что у него есть соединение с сервером - вашим или Apple. Вы можете проверить подключение к серверу, поддерживая систему keep-alive в своем приложении, но подумайте, что это будет делать для аккумулятора.

Если вам нужно убедиться, что сообщение достигнет устройства, даже если его интернет-соединение не работает, или если ваше приложение «убито» (ваши слова), вам нужно будет принять другой подход.

Отправить SMS-сообщение.

+0

«система keep-alive в вашем приложении» - это может быть хорошим вариантом для моего случая, но в iOS нет возможности реализовать это, если я правильно понимаю документы. Единственный способ реализовать такой «keep-alive» требует установки фонового режима «voip», но это только для приложений VoIP. Я прав? – Anastasia

1

Есть 4 канала от мира к устройству доступны: подключение

  • Интернет на сервер - недоступен;
  • Push-уведомление - не доступно;
  • SMS -message - получил его!
  • Локальные push-уведомления (если вы могли бы прогнозировать время событий в будущем).
+0

Возможно, было хорошо показать местное уведомление, когда интернет-соединение было потеряно. Но есть ли способ реализовать это для приложения, когда он находится в фоновом режиме? – Anastasia

+0

Да. Локальные push-уведомления работают без подключения к Интернету, когда ваше приложение находится в фоновом режиме или закрыто. Вот примеры, которые я знаю: Clash of Clans, LinguaLeo. –

+0

Я знаю, что локальные уведомления работают без подключения к Интернету. Вопрос в том, есть ли способ проверить подключение к Интернету, пока мое приложение остается в фоновом режиме? И если это возможно, я могу обнаружить, когда соединение потеряно, и показать локальное уведомление, чтобы сообщить пользователю о том, что соединение было утеряно, и он не получит никаких предупреждений с его удаленного устройства до тех пор, пока подключение не восстановится. – Anastasia

Смежные вопросы