Почему Android C2DM push-сообщения не всегда приходят? - PullRequest
4 голосов
/ 30 августа 2011

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

Они определенно отправляются успешно (я получаю 200 ответов), и формат сообщения, безусловно, правильный (отправка того же сообщения позже работает нормально).Сбой может длиться небольшое количество минут, а затем внезапно он снова начинает работать и последовательно работает после этого.

Однако даже после того, как он начал работать, старые сообщения, по-видимому, исчезли и никогда не приходят.Сообщения определенно не приходят - у меня есть обширная регистрация, которая выделяет любые приходящие сообщения C2DM.

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

Что может вызвать сбой доставки C2DM сообщений?Если сообщения не могут быть доставлены, почему сервер C2DM не пытается снова из своей очереди?Связано - получать новый регистрационный идентификатор только при первом запуске приложения или обновлять его каждый раз при запуске приложения?В настоящее время я делаю последнее (в Приложении, а не в Деятельности).

Ответы [ 2 ]

10 голосов
/ 02 сентября 2011

Я понял, что сделал ошибку школьника. Я перерегистрировался в C2DM каждый раз, когда приложение запускалось. Этот процесс иногда занимает довольно много секунд, и в течение этого времени приложение не будет получать push-сообщения, отправленные на старый регистрационный идентификатор. Это объясняет, почему push-сообщения не могли быть получены сразу после запуска приложения.

Решение состояло в том, чтобы регистрационный идентификатор запрашивался только в том случае, если у приложения его еще нет. Push-сообщения теперь работают намного надежнее.

1 голос
/ 31 августа 2011

Это, скорее всего, правильное поведение. Сообщения не гарантируются для доставки вообще. Не говоря уже о мгновенно.

Наиболее вероятно, что соединение между вашим телефоном и серверами Google прерывается, и для восстановления требуется некоторое время.

...