Cómo construir una aplicación de mensajería paso a paso para Android

Ya he tratado de desarrollar una aplicación de mensajería y siempre he sido un fracaso, así que permítanme compartir por experiencias.

Bueno, por aplicación de mensajería, supongo que te refieres a una aplicación de mensajería instantánea en lugar de una aplicación de mensajería SMS.

Mejorando una idea de hackathon que ganamos, decidimos hacer una aplicación de mensajería para que personas de la misma localidad chatearan. Soy un desarrollador bastante ingenuo en ese momento y la mensajería instantánea es una bestia . Incluso después de aproximadamente 1 año de experiencia en el desarrollo de aplicaciones de Android, pensar en desarrollar un Instant Messenger es una pesadilla para mí. Sin embargo, desarrollé la aplicación y elegí el camino más fácil disponible en ese momento, es decir, Parse .

Parse tenía una API fácil de usar para comenzar con las notificaciones push y permitía un millón de notificaciones push gratis por mes, lo cual es más que suficiente para mí. Así que comencé con Parse y desarrollé la aplicación. Tuvo algunos problemas, como una mayor latencia varias veces, etc., pero estoy de acuerdo, ya que no quería destronar a Whatsapp con mi velocidad, solo quería desarrollar una aplicación que me permitiera chatear con otra persona que tenga la misma aplicación. . La aplicación nunca fue un éxito (esa es una historia completamente diferente), pero fue una gran experiencia de aprendizaje para mí y tuve la orgullosa sensación de poder desarrollar una aplicación que tenía pocas de las funcionalidades de una aplicación importante como WhatsApp. .

La aplicación continúa en la Play Store, pero en un día auspicioso, Parse anuncia que cerrará Parse después de ser adquirido por Facebook dentro de unos meses. No planeaba mover la aplicación a otro servicio ya que de todos modos no tenía ningún usuario. Me di por vencido pero mi compañero no (socio no técnico). Entonces, mirándolo, decidí, bien, déjame echarle otro vistazo. Ahora ni siquiera podré entender qué monstruo ha codificado en ese momento, pero estoy listo para enfrentarlo. Durante dos días me quedaría estupefacto por el desorden que hice, pero lentamente lo recogería y lo mejoraría.

Entonces comencé a buscar opciones. Lo primero que me pareció es GCM / FCM (Google Cloud Messaging / Firebase Cloud Messaging). Incluso mientras estaba usando parse intenté usar GCM. Había un formulario de registro en ese momento para poder usar GCM y nunca recibí una respuesta de Google que me permitiera usarlo. Sin embargo, traté de mirar su documentación. Es un horror absoluto para mí ya que no tenía idea del protocolo HTTP o XMPP y, por lo tanto, no podía entenderlo. Recientemente volví a hacerlo, pero ahora estoy equipado con el conocimiento de HTTP, por lo tanto, revisar la parte HTTP de la documentación ha sido muy fácil para mí. Y no hay un formulario de registro, también puede acceder directamente a las credenciales de GCM. Puedo lograr una notificación push en la aplicación de Android. Ahora quería probar el uso de XMPP, pero aún me llevó unos 2-3 días entender qué significa GCM con XMPP.

En este momento, puede estar confundido sobre qué es HTTP y qué es XMPP

  • HTTP : – Es el protocolo que alimenta la web estándar y, por lo tanto, el protocolo más popular. Se puede usar junto con GCM para enviar notificaciones push . El proceso es el siguiente: implementa un servidor web utilizando cualquier marco de su elección Node.js / Django / Ruby on Rails / Laravel, etc. Cada dispositivo Android obtiene un gcm_id único que puede almacenarse en el servidor. Si el servidor envía una solicitud HTTP a la URL de GCM con la identificación de registro de su dispositivo, recibirá una notificación. El proceso es muy simple de implementar. En el lado del servidor, usé python-gcm (solo es compatible con GCM HTTP) junto con Django para manejar las solicitudes HTTP.

  • XMPP : – Es el protocolo que se utiliza principalmente para aplicaciones de mensajería y, por lo tanto, no es tan popular como HTTP. Se considera que su latencia es menor que cuando se usa GCM con HTTP y, por lo tanto, se usa en aplicaciones de velocidad crítica como la mensajería instantánea. XMPP con GCM admite tanto mensajes descendentes, es decir, enviar notificaciones push del servidor a la aplicación de Android como mensajes ascendentes, es decir, enviar mensajes de la aplicación de Android al servidor y hay un servidor de Google en el medio que actúa como intermediario . Para implementar XMPP con GCM, es necesario establecer una conexión XMPP con el punto final de Google. Por lo tanto, es necesario iniciar un cliente XMPP y conectarlo al punto final de Google en su servidor. La conexión con el servidor de Google debe estar viva siempre. Ahora, cada vez que su aplicación de Android envíe un mensaje al punto final de Google, su servidor lo recibirá y viceversa.

Durante muchos días estuve confundido con este servidor y cliente XMPP y lo que se debe implementar para usar con GCM. Lo he intentado muchas veces, pero como Google está lleno de muchas discusiones, siempre tuve que renunciar, ya que después de un tiempo nunca supe lo que estaba haciendo. Permítanme explicar las diferencias entre el servidor XMPP y el cliente aquí.

  1. Servidor XMPP : – Si no desea utilizar GCM para enviar mensajes, puede crear un servidor XMPP propio. Todavía soy ingenuo en esta parte y estoy comenzando en él, por lo tanto, no puedo decir muchas cosas al respecto. Actualmente estoy revisando este libro XMPP: la guía definitiva para comenzar a implementar un servidor XMPP. Su aplicación de Android abre una conexión a este servidor XMPP y puede usarla para enviar mensajes. Un inconveniente es que siempre debe mantener una conexión con el servidor para poder recibir mensajes que puedan agotar la batería.
  2. Cliente XMPP : esta es la parte que se utiliza en GCM. Los clientes HTTP están muy extendidos, pero los clientes XMPP son pocos. Para Java, el preferido es Smack y, por suerte, para Python pude encontrar uno en xmpppy . Ahora suponga que desea enviar un mensaje de un teléfono Android a otro, la ruta es como este teléfono Android 1 -> Google -> cliente XMPP mantenido en su servidor -> Google -> dispositivo Android 2 .

Ahora puede preguntar cuál es la necesidad de XMPP Server cuando GCM solo puede manejar la parte de mensajería. Aunque GCM es lo suficientemente bueno la mayoría de las veces, no se considera confiable. Hay muchos desarrolladores que se quejaron de que la aplicación no recibió la notificación GCM pocas veces. Entonces, todos los grandes jugadores como Whatsapp hacen esto. No usan GCM como el servicio principal para su mensajería instantánea. En su lugar, alojan su propio servidor XMPP para enviar mensajes. Cada vez que se cierra la aplicación de Android y, por lo tanto, se cierra la conexión XMPP, ahora si el servidor necesita enviar un mensaje al dispositivo fuera de línea, usan GCM para enviar una notificación push. Ahora, cuando el usuario hace clic en una notificación push, la aplicación se abre y se conecta al servidor XMPP y recupera todos los mensajes pendientes. Por lo tanto, usan GCM solo para sincronizar los mensajes, pero no para los servicios de mensajería convencionales.

XMPP no es la única opción para la mensajería instantánea. Muchas personas también usaron enchufes, pero yo nunca los he usado, así que me abstengo de comentarlos.

Si está buscando construir su propio sistema, consulte: La respuesta de Devashish Datt Mamgain a ¿Cómo creo una aplicación básica de chat de Android usando Android Studio y cuál es el punto de partida apropiado para hacerlo?

¿Qué tecnologías se deben considerar para hacer aplicaciones de chat como Messenger y WhatsApp?

Si está buscando una solución de chat rápida y escalable, puede usar Applozic o cualquier servicio de chat similar que brinde una solución de chat lista para usar, de modo que no tenga que perder tiempo reinventando la rueda.

Guía paso a paso sobre la creación de la aplicación de mensajería con Applozic:

Applozic – Documentación del SDK de chat y mensajería

Código fuente: AppLozic / Applozic-Android-SDK

Descargo de responsabilidad: soy el cofundador de Applozic

Google lanza un curso de programación de Android para principiantes absolutos , en asociación con Udacity , está haciendo que el desarrollo de Android sea accesible y comprensible para todos.

Incluso si no tienes experiencia en programación.

Desarrollarás tus conocimientos paso a paso para convertirte en un desarrollador experto de Android.

Solo necesita crear una cuenta para poder tener acceso a todo este contenido.

No te preocupes todo este curso gratis:

  • Conceptos básicos de Android: interfaz de usuario
  • Conceptos básicos de Android: entrada del usuario
  • Conceptos básicos de Android: múltiples pantallas de aplicaciones
  • Conceptos básicos de Android: redes
  • Conceptos básicos de Android: almacenamiento de datos
  • Cómo crear en Android
  • Conceptos básicos de programación de Java
  • Introducción a la programación Java

También puede solicitar el Nanodegree pero se paga por más:

  • Android Basic Nanodegree de Google | Udacity

Desea llevar sus habilidades al siguiente nivel, puede comenzar los cursos avanzados

  • Desarrollando aplicaciones de Android
  • Desarrollo avanzado de aplicaciones de Android
  • Gradle para Android y Java
  • Servicios de ubicación de Google en Android
  • Google Analytics para Android
  • Monetice su aplicación de Android con anuncios
  • Agrega Google Maps a tu aplicación de Android
  • Rendimiento de Android
  • Diseño de materiales para desarrolladores de Android
  • Desarrollo de Android Wear
  • Desarrollo de Android TV y Google Cast
  • Desarrollo automático de Android
  • Firebase Essentials para Android
  • Agregue Google Sign-In a sus aplicaciones de Android

O el nanogrado

  • Desarrollador de Android Nanodegree de Google | Udacity

Youtube

  1. Desarrollo de aplicaciones de Android para principiantes Playlist (Thenewboston) A Legend
  2. Cómo hacer aplicaciones de Android (Derek Banas) también Una leyenda
  3. Desarrolladores de Android

Páginas web útiles

  1. Android Training Lynda
  2. Vogella Java Tutorials
  3. CodePath Android Cliffnotes
  4. Android para todos | Desarrolladores de Google
  5. Documentos para desarrolladores de Google Android
  6. Referencia de la API de Android
  7. Documentos para desarrolladores de Google Android: instalación de Android Studio
  8. Documentos para desarrolladores de Google Android: diseño de interfaz de usuario
  9. anddev.org – Foro de desarrollo de Android
  10. Blog de desarrolladores de Android – Blogspot
  11. Mobiforge – Diseño y desarrollo de Android
  12. DroidDraw
  13. DroidDraw – Índice visual de los widgets de Android
  14. ThinkAndroid: cómo colocar las vistas correctamente en los diseños
  15. Android Weekly: boletín semanal gratuito de desarrollo de Android

Es muy facil. Tal vez debería compartir mi código contigo. La aplicación que creará enviará un mensaje y recibirá señales de transmisión. Investigue acerca de un mayor desarrollo al respecto, ya que esto será muy básico. Puede agregar sus propias funciones como mensajes grupales, intercambio de enlaces de redes sociales, etc.

Descargue android studio y cree una actividad – Actividad principal – Ese es el nombre de mi actividad

android: layout_width = “match_parent”
android: layout_height = “20dp”
android: inputType = “textMultiLine”
android: id = “@ + id / content” />

android: layout_width = “match_parent”
android: padding_top = “50dp”
android: layout_height = “20dp”
android: inputType = “textMultiLine”
android: id = “@ + id / destinatario” />

android: layout_width = “match_parent”
android: layout_height = “15dp”
android: gravity = “bottom”
android: onClick = “enviar” />

Estos son mis atributos de diseño de actividad (actividad_principal). Cambia su posicionamiento como prefieras

clase pública MainActivity extiende AppCompatActivity {

Número de cadena;
Estado de la cadena;
Contenido de cadena;

@Anular
vacío protegido onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState)
setContentView (R.layout.activity_main);
}

envío público vacío (Ver vista) {

EditText content = (EditText) findViewById (R.id.content);
Destinatario EditText = (EditText) findViewById (R.id.recipient);

Mensaje de cadena = content.getText (). ToString ();
Contacto de cadena = recipiente.getText (). ToString ();

sendMesage (mensaje, contacto);

}

sendMessage vacío protegido (contacto de cadena, mensaje de cadena) {
SmsManager sms = SmsManager.getDefault ();
sms.sendTextMessage (contacto, nulo, mensaje, nulo, nulo);
}

Esta es mi clase MainActivity.Java

Importa los elementos necesarios, Android Studio te los sugerirá

Solicite permiso para enviar mensajes y compile su código si está listo para comenzar

Para aprender a construir una aplicación de mensajería, recomendaría comenzar desde dos ángulos separados.

  1. Aprenda los conceptos básicos de la mensajería instantánea haciendo un tutorial para principiantes
  2. Aprenda conceptos más avanzados mirando un marco existente

Para empezar, recomendaría usar Firebase como back-end. Firebase es el back-end en tiempo real de Google y es excelente para crear aplicaciones de mensajería. Le permitirá explorar los conceptos básicos y crear una aplicación totalmente funcional sin tener que lidiar con el lado del servidor.

Estos son algunos de los beneficios de Firebase:

  • Transferencia y almacenamiento de datos en tiempo real, así como almacenamiento de archivos
  • Excelente documentación
  • Generoso nivel gratuito: puede admitir hasta 10k usuarios diarios
  • El pedigrí de mensajería, los fundadores de Firebase surgieron del inicio anterior de los fundadores, que era un servicio de mensajería instantánea
  • Puede crear una aplicación completa con Firebase, la mayoría de los otros servicios requieren un servidor de aplicaciones separado

Para comenzar, recomiendo mirar el laboratorio de código de mensajería de Firebase. Eso te presentará algunos de los conceptos básicos de la mensajería instantánea con Firebase.

Después de eso, le recomiendo que consulte el SDK de Firebase Chat para Android. Es un marco de mensajería instantánea de código abierto que utiliza Firebase como back-end.

Mirar esta biblioteca le daría una mejor idea de cómo construir una aplicación de mensajería completamente funcional y una interfaz de usuario de mensajería.

La comunicación en tiempo real juega un papel vital en el desarrollo de aplicaciones de mensajería.

Diseñar una aplicación de mensajería por su cuenta se vuelve más fácil.

Métodos para desarrollar una aplicación de mensajería de Android:

  • Rasguño / Personalizado
  • Solución confeccionada

El método Scratch es un proceso de mucho tiempo y ofrece más complejidad. Para superar la mejor solución es preferir una solución preparada.

Contus Fly es la mejor solución instantánea que ayuda a crear fácilmente una aplicación de chat en tiempo real. Viene con excelentes características avanzadas: canales individuales a múltiples, actualizaciones en tiempo real y notificaciones sin conexión, transmisión de archivos multimedia, uso compartido de ubicaciones, llamadas de voz y video, indicador de presencia en línea, etc.

Las tecnologías de backend utilizaron Ejabberd, Erlang, XMPP, Mnesia y MySQL, FreeBSD.

Las funciones de las tecnologías anteriores son:

  • Servidor Ejabberd : se utiliza para alojar una gran red de comunicación.
  • Erlang – Lenguaje de programación.
  • XMPP : protocolo de comunicación más adecuado para el servidor Ejabberd.
  • FreeBSD : SO altamente estable con funciones avanzadas de red, seguridad y almacenamiento.
  • Mnesia & MySQL – Sistema de gestión de bases de datos.

Construir una aplicación de mensajería para Android desde cero es un proceso que consume mucho tiempo si eres nuevo en el desarrollo de aplicaciones de chat.

Hay dos formas de crear una aplicación de mensajería instantánea para Android.

  • Use Firebase de Google para crear su aplicación de chat de Android.
  • Use la solución de creación de aplicaciones Ready Made que se puede personalizar según sus necesidades.

Apphitect IM Solution es la mejor solución preparada para crear su propia aplicación de mensajería de Android .

Utilizan el servidor Ejabberd y el lenguaje Erlang, el protocolo XMPP, el cifrado HMAC, la base de datos Mnesia, MySQL, Cassandra y el cubo Amazon S3 para crear aplicaciones de mensajería de clase mundial.

Configuración básica de la aplicación de chat para la pila de alta tecnología. Se pueden seguir los siguientes parámetros.

  • Erlang
  • MySQL
  • Ejabberd
  • PSi +
  • Chat uno a uno

¿Cómo construir una aplicación privada de chat uno a uno desde cero?

More Interesting

¿Cuánto necesito para crear un juego de Android?

¿Cómo muestro la pantalla de mi teléfono Android en mi PC sin instalar el SDK?

¿Qué recursos recomienda para aprender el desarrollo de Android con Kotlin, para un desarrollador de iOS?

¿Cuál es el software de sincronización más confiable entre un teléfono Android y Outlook en una PC sin el uso de una nube?

¿Pueden algunos desarrolladores de Android indios compartir sus historias con informes de ingresos para motivarse?

Tenemos puertas cerradas con RFID en la universidad. ¿Cómo puedo hacer que mi teléfono Android emule mi tarjeta de identidad de estudiante y abra puertas cerradas con RFID?

¿Cuál es la mejor manera de comercializar y promocionar mi aplicación Android de finanzas con un presupuesto limitado?

¿Cuánto desarrollo de aplicaciones de Android debe saber antes de solicitar un trabajo como desarrollador junior de Android?

Como desarrollador web, ¿qué debo saber para crear una aplicación de Android con Ionic Framework utilizando Ubuntu OS?

Cómo hacer una aplicación de Android desde un sitio web de WordPress

¿Por qué utilizamos bibliotecas en Android Studio?

¿Cuándo obtendrá Verizon Galaxy Nexus Android 4.0.4?

¿A cuántos pies (o metros) es típicamente preciso el GPS de un teléfono inteligente Apple o Android moderno?

¿Podría ir para el desarrollo de aplicaciones de Android? ¿Cuáles son las formas en que podría mejorar esta computadora portátil para este propósito?

¿Por qué Samsung tarda tanto en dar actualizaciones de Android KitKat?