2012-08-22 13 views
5

Estoy tratando de crear una aplicación similar a lo que está pasando o un mensajero para fines de aprendizaje.Servicio de chat de Android

Básicamente creé una actividad que se une a un servicio que se conecta a un servidor de Java utilizando TCP/IP.

Mientras el servicio está vivo, el usuario recibe y envía mensajes. El problema es cuando el usuario cierra la aplicación (por ejemplo, utilizando el administrador de tareas, manteniendo presionado el botón de Inicio). Si la aplicación se cierra, el servicio se cancela porque tiene 0 enlaces.

Mi pregunta es: ¿cuál es el patrón de tales aplicaciones para que el usuario siempre reciba mensajes, cómo lo que sucede siempre se las arregla para enviar mensajes y mantener su servicio vivo.

Gracias.

Respuesta

1

Las aplicaciones como Google Talk y otros programas de mensajería instantánea a menudo usan Google Cloud Messaging. Hubo un Google I/O talk sobre esto que podría interesarle.

+0

+1 para Google Cloud Messaging – EGHDK

+0

Sé que c2dm es una solución, pero he leído que otra opción es xmpp. Creo que xmpp funciona usando sockets tpc/ip como en mi ejemplo, así que usando xmpp ¿cómo se resuelve el problema del servicio? Corrígeme si me equivoco sobre xmpp. Gracias – Catalin

+0

Hola, tengo una pregunta sobre cómo mantener vivo mi servicio: http://stackoverflow.com/questions/35168769/start-in-foreground –

0

Las aplicaciones de chat utilizan tanto la conexión de socket como GCM/APN. Si la aplicación está en primer plano, establezca una conexión de socket. Cuando la aplicación está en segundo plano, al recibir un mensaje GCM, establezca nuevamente una conexión de socket. De esta manera también guardará la batería. Mantener la conexión de la toma de corriente abierta durante un período de tiempo agotará la batería del dispositivo. Para un código de ejemplo, se puede hacer referencia a nuestra SDK de Android chat:

https://github.com/AppLozic/Applozic-Android-SDK

https://github.com/AppLozic/Applozic-iOS-SDK

0

Si tiene backend entonces usted puede echar un vistazo a OneSignal es totalmente libre y buena documentados: OneSignal

Creo que ya sabe acerca de las notificaciones automáticas: básicamente no escucha el servidor cada vez. Cuando llegue el momento, Cloud Messaging Platform activará el teléfono por usted.

Si usted quiere que su servicio siempre abierta, incluso aplicación en uso estado cerrado STICKY_SERVICE: start-sticky-and-start-not-sticky

Además, si quieres ir para Planes de Precios lea FCM: Firebase Cloud Messaging

En esta página: android-migrate-fcm debería ver esta nota:

Firebase Cloud Messaging (FCM) es la nueva versión de GCM. ¡Hereda la infraestructura de GCM confiable y escalable, además de nuevas características! Vea las preguntas frecuentes para obtener más información. Si está integrando mensajes en una nueva aplicación, comience con FCM. Se recomienda encarecidamente a los usuarios de GCM actualizar a FCM para beneficiarse de las nuevas funciones de FCM hoy y en el futuro.

Cuestiones relacionadas