Push Notification. Модель и действительность

Posted on Февраль 21, 2011

4


С ростом количества разработчиков для платформы, растет и интерес к Push Notification. Это естественно, так как с помощь этой чудесной штуки мы можем уведомлять пользователя обо всех изменениях. Но так ли все прекрасно, как нам рисуют?

Во первых, при использовании Push Notification в Windows Phone 7, Microsoft предупреждает нас о том, что бы мы не отправляли таким способом никакие данные, от которых зависит какая-то временнáя активность. Потому что они не гарантируют своевременность доставки сообщений.

Это подтверждается личным опытом. При разработке приложений, как правило, все тестирование ведется на компьютере. Даже при тестировании на девайсе, часто не отключают его от компьютера. Потому сообщения приходят достаточно быстро. Но при реальном использовании, пользователи часто жалуются на задержку прихода сообщений, даже при использовании wi-fi.

Разработчикам следует задуматься о том, как же узнавать о том, пришло ли его уведомление пользователю? Я видел достаточно много обсуждений и различных решений. Сейчас мы соберем их все в одном месте:

Итак, есть различные статусы («OK/Received/Connected/Active» и «OK/Received/Temporarily Disconnected/Active») получения сообщений. Обсудим некоторые моменты.

Статус «OK/Received/Connected/Active» обычно говорит нам о том, что все нормально работает, но вам следует помнить о следующих пунктах:

  • Этот статус не значит, что пользователь получил уведомление. Он только сообщает о том, что сервер получил уведомление и поставил его в очередь на отправку при следующей возможности.
  • Сервер может вернуть это состояние, даже если устройство находится в режиме недоступности. Этот означает, что уведомление будет отправлено как только устройство станет доступным.
  • Помните о различных интервалах для нотификации. Ваше приложение получит нотификацию, только через определенный интервал.

Статус «OK/Received/Temporarily Disconnected/Active» может возникнуть из-за ряда причин, включая, но, не ограничиваясь такими:

  • В целях разгрузки сети, мобильный оператор может очень интересно ограничивать время пока ваше соединение открыто. Клинт Push Notification пытается преодолеть и расширить время жизни соединения. В конце все равно возникает момент, когда соединение разрывается. Это может привести к возникновению статуса «OK/Received/Temporarily Disconnected/Active» в результате разрыва соединения.
  • Если устройство находится вне зоны доступа мобильного оператора и владелец отключил соединение с интернетом в роуминге.
  • Если на вашей карточке нет денег, т.е. нет интернета на устройстве 🙂
  • Устройство находится зоне действия, но сигнал очень слабый.
  • Если используется Wi-Fi с отключенной сетью. Девайсе нужно прямое соединение с интернетом, а это может быть проблемным в некоторых сетях.
  • Устройство переключается между сетью и Wi-Fi и потому соединение не надежно.

Также следует отметить, что Push клиент не может работать с SOCKS прокси. Если ваше устройство подключается через сеть с SOCKS, вы не получите уведомлений.
Разработчикам следует внимательно следить за состоянием «Temporarily Disconnected», так как все описанное выше, может случится с приложением на продакшене.

Разработчики, как правило, не думают о том, что у пользователя может быть не надежное соединение. Потому уведомления, которые хорошо работают на эмуляторе, могут плохо работать на реальном девайсе в реальной жизни. Если DeviceConnectionStatus становится «Inactive», то веб сервису следует отправлять только ОДНО уведомление в час, до восстановления активного состояния. И вновь напоминаю: следует тестировать на различных устройствах и операторах в различных условиях. И не следует отправлять важные данные из-за ненадежности доставки уведомлений…

Реклама
Posted in: WP7