Поведение C2DM через Wi-Fi и 3G - PullRequest
0 голосов
/ 29 февраля 2012

Я разрабатываю приложение, которое опирается на C2DM, чтобы получать уведомления о некоторых новых данных, которые будут получены из службы REST. Я успешно реализовал функцию Android C2DM, но поведение через Wi-Fi отличается от соединения через 3G. Сообщения принимаются мгновенно через 3G, но я должен вручную выключить и включить Wi-Fi, чтобы получить «льготный период» ~ 1 мин, в течение которого я получаю их мгновенно.

У меня вопрос: есть ли способ программно перезапустить соединение или вызвать извлечение уведомлений?

EDIT: Я реализовал AsyncTask, который периодически «повторно связывает» соединение с точкой доступа (используя WifiManager.reassociate ()) каждую минуту и ​​полторы минуты. Однако не совсем уверен в правильности этого решения.

1 Ответ

0 голосов
/ 05 марта 2012

Я видел похожие проблемы.Похоже, что при некоторых обстоятельствах сообщения C2DM не доставляются через соединения Wi-Fi, когда они через 3G.В соответствующей заметке я также видел, как устройства Android «сбрасывают» push-соединение, поэтому сообщения не доставляются (в моем случае решение может состоять в том, чтобы перевести устройство в режим «В самолете», а затем снова включить сеть).

Это подтверждает тот факт, что все приложения, использующие C2DM, должны быть построены так, чтобы даже в случае сбоя push-сообщений приложение продолжало работать (даже если сообщения / обновления работают медленнее из-за периодического опроса на сервер)

Лично я не хотел бы связываться с подключением Wi-Fi, поскольку это может вызвать проблемы у пользователя.

...