Mensajes perdidos con aSmack
estoy usando aSmack en mi aplicación de Android para recibir mensajes de mi Desktop-Jabber-client. Esto funciona bien e incluso si mi teléfono Android está desconectado (después de que la conexión se cerró correctamente), recibirá los mensajes sin conexión después del siguiente inicio de sesión.
Pero cuando entro en el modo de avión en el teléfono o apagar el teléfono para que la conexión se cierre abruptamente (sin llamar a disconnect()
en el objeto de Connection
) el teléfono permanece "en línea" en la lista de contactos de mi Desktop Jabber -Client por un tiempo y puedo enviarle mensajes. Sin embargo estos mensajes nunca llegan. Aunque el teléfono se conecte de nuevo al servidor. Estos mensajes se pierden.
- ¿Cómo obtener el historial de chat Openfire en un dispositivo Android con aSmack?
- Envío y recepción de mensajes con Smack Api para Android
- SASLError utilizando PLAIN: no autorizado
- El oyente de presencia no trabaja en asmack
- Cómo saber Escribir Estado en XMPP openfire usando Smack
¿Alguien sabe cómo solucionar este problema? Perder mensajes en un chat no es una opción. 🙂
EDIT: Añadido Test-Code
BroadcastReceiver: http://pastebin.com/cFLzGXgy
Servicio: http://pastebin.com/wLpQCQfT
El primero es un BroadcastReceiver que inicia el servicio (segundo URL) cada vez que el teléfono está conectado a una red.
PS: ¡Esto es sólo un código de prueba! Debe cambiar el servidor / nombre de usuario / contraseña si desea usarlo / probarlo.
- Smack en Android, obteniendo el código de error = "404" servidor remoto no encontrado al enviar paquetes / mensaje entre dos usuarios a través del servidor local Openfire
- Problema con Smack en la aplicación de chat de Facebook para Android: Connection.getRoster (). GetEntries () siempre está vacía
- Cómo utilizar Smack 4.1 en Android?
- Android y XMPP: Soluciones disponibles actualmente
- Mensajes XMPP perdidos en Android mientras cambia la conectividad de datos (por ejemplo, activando Wifi de, GSM <-> Wifi)
- SMACK XEP-313 Implementación
- Cómo configurar / obtener datos de perfil con XMPP usando Smack
- Android - Smack presencia y "está escribiendo" características que no funcionan
Puede intentar enviar el mensaje entregado del cliente b al cliente A cuando llegue el mensaje. El problema es si el cliente A está desconectado (sin interrupción de conexión), la confirmación entregada no se envía hasta que el usuario reciba el mensaje y el cliente B no pueda volver a enviar el mensaje.
usted puede intentar enviar el reconocimiento de recibir el mensaje usando los acontecimientos del mensaje de Smackx esto asegurará que el mensaje se entrega más que usted toma la acción correctiva.
este problema se produce cuando se rompió la conexión. Necesita "Gestión de Flujo" XEP-198 permitió conexiones para lograr estos mensajes. refiérase a este blog: http://op-co.de/blog/posts/XEP-0198/ Básicamente permite el reconocimiento de stanzas y la reanudación de secuencia, que es exactamente lo que usted quiere hacer en case.so debe esperar hasta que smack se lanzará 4.1.