2011-04-27 11 views
8

Estoy tratando de desarrollar una aplicación de mensajes dentro de mi aplicación de Android. El mensaje será como whatsapp y beluga. Lo busqué en Google y descubrí que C2DM Android 2.2 puede enviar notificaciones automáticas al dispositivo. Sin embargo, esto no está disponible en Android 2.1. ¿Alguien sabe cómo WhatsApp envía las notificaciones para dispositivos 2.1?Cómo implementar Beluga o WhatsApp como sistema de mensajería en Android 2.1

Respuesta

13

Para Android: Whatsapp se basa en C2DM y, cuando se abre la aplicación, abre una conexión XMPP a su servicio para entregar los mensajes al instante. También pueden usar MQTT como protocolo para minimizar el uso de la batería. Eso es básicamente eso.

Editar: Aprendí más, Facebook usa MQTT en su aplicación de mensajería. Whatsapp está basado en XMPP con sus propias extensiones. Su lado del servidor se ejecuta en la parte superior de ejabbard (implementación XMPP en erlang). http://www.ejabberd.im/

En dispositivos pre 2.1 WhatsApp probablemente mantiene una conexión abierta a sus servidores XMPP en el fondo, pero esto no es realmente bueno para la duración de la batería.

+0

¿cómo se determina qué están usando C2MD? ¿Pueden explicarlo, porque C2MD también utiliza el protocolo XMPP? ¿Por qué WhatsApp no ​​usará su propio servicio en lugar de usar C2MD? – Hunt

0

No sé qué tecnología exacta se usa en whatsapp. Sin embargo, si he de poner en práctica las notificaciones donde no hay soporte para notificaciones push desde el sistema operativo, lo que puedo hacer dos cosas:

  1. Poll un servidor remoto cada X segundos y compruebe si hay nuevas notificaciones (este es el más caro elección).
  2. Ejecutar un servicio en segundo plano, mantener una conexión con un servidor remoto, que me enviará cualquier notificación que se reciba (algo así como mi propia implementación de notificaciones automáticas).
+0

¿Su segundo enfoque también funciona para las notificaciones fuera de línea? – angelokh

+0

¿Puede explicar en detalle a qué se refiere con 'notificaciones fuera de línea'? – thekindofme

+0

Creo que hay que hacer algo en el lado del servidor, como almacenar el estado y la notificación en el almacenamiento cuando el dispositivo de destino está apagado. – angelokh

2

C2DM ha sido reemplazado por GCM (google cloud messaging) ahora. puede usarlo para entregar las notificaciones a su aplicación. Para el intercambio de mensajes, uno debe confiar en protocolos como xmpp (whatsapp), mqtt (facebook messenger), mtproto (telegrama), etc.

si está buscando familiarizarse con GCM. Pruebe este tutorial por appsrox - Create an Instant Messaging app using Google Cloud Messaging (GCM)

están usando GCM para la entrega del mensaje también. no se adaptará para la producción, pero es un recurso excelente para las personas que desean desarrollar una aplicación de mensajería instantánea de Android.

Cuestiones relacionadas