Я использую aSmack в своем приложении для Android, чтобы получать сообщения от моего Desktop-Jabber-клиента. Это работает нормально, и даже если мой телефон Android находится в автономном режиме (после правильного закрытия соединения), он получит автономные сообщения после следующего входа в систему.
Но когда я вхожу в режим полета на телефоне или выключаю телефон, чтобы соединение было внезапно закрыто (без вызова disconnect()
в Connection
-объекте), телефон остается "онлайн" в списке контактов моего Desktop-Jabber-клиента на некоторое время, и я могу отправлять ему сообщения. Однако эти сообщения никогда не приходят. Даже если телефон снова подключается к серверу. Эти сообщения потеряны.
Кто-нибудь знает, как решить эту проблему? Потерять сообщения в чате нельзя. :)
РЕДАКТИРОВАТЬ: добавлен тест-код
BroadcastReceiver: http://pastebin.com/cFLzGXgy
Услуга: http://pastebin.com/wLpQCQfT
Первый - BroadcastReceiver, запускающий службу (второй URL-адрес) каждый раз, когда телефон подключен к сети.
PS: Это всего лишь тест-код! Вы должны изменить сервер / имя пользователя / пароль, если хотите использовать / протестировать его.