Recientemente aprendí sobre la capacidad de las aplicaciones de iPhone para recibir notificaciones casi instantáneas de notificaciones de aplicaciones .
Esto se proporciona en forma de notificaciones push, un protocolo a medida que mantiene una conexión de datos siempre activa al iPhone y envía paquetes binarios a la aplicación, que genera alertas increíblemente rápidas, entre 0,5 y 5 segundos desde el envío de la aplicación del servidor a la aplicación del teléfono tiempo de respuesta. Esto se envía como datos, en lugar de SMS, en paquetes muy pequeños cargados como parte del plan de datos, no como mensajes entrantes.
Me gustaría saber si, usando Android, hay una instalación similar o si es posible implementar algo similar a esto usando las API de Android. Para aclarar, defino similar a:
- No es un mensaje SMS, sino una solución basada en datos
- Tan en tiempo real como sea posible
- Es escalable, es decir, como parte del servidor de una aplicación móvil, podría notificar a miles de instancias de la aplicación en segundos
Aprecio que la aplicación pueda estar basada en el estilo de solicitud / respuesta HTTP, pero lo ideal es que no quiera sondear tanto para verificar la notificación; además de lo cual es como goteo drenando el plan de datos.
fuente
Respuestas:
Firebase Cloud Messaging FCM FAQ es la nueva versión de GCM. Hereda la infraestructura central de GCM para entregar mensajes de manera confiable en Android, iOS y Chrome. Sin embargo, continuarán admitiendo GCM porque muchos desarrolladores están usando SDK de GCM hoy para manejar las notificaciones, y la actualización de la aplicación cliente lleva tiempo.
A partir del 26 de junio de 2012, Google Cloud Messaging es la forma preferida de enviar mensajes a aplicaciones que se ejecutan en dispositivos.
Anteriormente (y ahora en desuso), el servicio se llamaba Cloud To Device Messaging .
fuente
XMPP es una buena solución. Lo he usado para una aplicación de Android en tiempo real habilitada para inserción. XMPP es potente, altamente extensible y fácil de integrar y usar.
Hay muchos servidores XMPP gratuitos (aunque por cortesía no debe abusar de ellos) y hay servidores de código abierto que puede ejecutar en uno de sus propios cuadros. OpenFire es una excelente opción.
La biblioteca que desea no es Smack como se señaló anteriormente, es aSmack . Pero tenga en cuenta que este es un entorno de compilación: tendrá que compilar la biblioteca.
Este es un cálculo que hice sobre el impacto de la vida útil de la batería de una solución XMPP:
fuente
Recientemente comencé a jugar con MQTT http://mqtt.org para Android como una forma de hacer lo que está pidiendo (es decir, no SMS sino datos, entrega de mensajes casi inmediata, escalable, no sondeo, etc.)
Tengo una publicación de blog con información de fondo sobre esto en caso de que sea útil http://dalelane.co.uk/blog/?p=938
(Nota: MQTT es una tecnología de IBM, y debo señalar que trabajo para IBM).
fuente
Echa un vistazo a la plataforma Xtify . Parece que esto es lo que están haciendo,
fuente
Google está depreciando C2DM, pero en su lugar presenta su GCM (Google Cloud Messaging). ¡No creo que haya ninguna cuota y es gratis! ¡Sin embargo, requiere Android 2.2+! http://developer.android.com/guide/google/gcm/index.html
fuente
Si puede depender de que las bibliotecas de Google estén allí para su mercado objetivo, entonces puede aprovechar la funcionalidad GTalk (registrar un recurso en el nombre de usuario existente: interceptar los mensajes a medida que ingresan con un BroadcastReceiver).
Si no es así, y espero que no pueda , entonces está interesado en combinar sus propias versiones de XMPP . Esto es una molestia, pero puede hacerse más fácil si XMPP se incluye por separado como una biblioteca independiente.
También puede considerar PubSubHubub , pero no tengo idea del uso de la red. Creo que está construido sobre XMPP.
fuente
He estado investigando esto y PubSubHubBub recomendado por jamesh no es una opción. PubSubHubBub está diseñado para comunicaciones de servidor a servidor
He llegado a la conclusión de que el método más simple es usar el empuje HTTP Comet. Esta es una solución simple y bien entendida, pero también se puede reutilizar para aplicaciones web.
fuente
Hay un nuevo esfuerzo de código abierto para desarrollar una biblioteca Java para notificaciones push en Android, utilizando el servidor cometa Meteor como back-end. Puede consultarlo en el Blog del Proyecto Deacon . Necesitamos desarrolladores, así que ¡corra la voz!
fuente
Google recientemente (18 de mayo de 2016) anunció que Firebase es ahora su plataforma unificada para desarrolladores móviles que incluye notificaciones push casi en tiempo real. También es multiplataforma:
fuente
fuente
No puedo encontrar dónde lo leí, pero creo que gmail utiliza una conexión TCP abierta para enviar el correo electrónico.
fuente
Como
GTalk
se ha ido del SDK, podría ser una buena idea hacer un sistema de mensajería push 'estándar'. De esa manera, solo se debe ejecutar un servicio, solo se debe abrir una conexión TCP adicional. Las aplicaciones deben comunicarse con este servicio utilizandoIntents
y primero deben solicitar permiso para enviar y recibir notificaciones del servicio. El servicio debe notificar al usuario que una nueva aplicación desea enviar y recibir mensajes. El usuario otorgará o denegará el permiso, por lo que mantiene el control. La aplicación luego registrará una acción + categoría para el servicio, de modo que el servicio sepa cómo entregar el mensaje enviado.¿Sería una buena idea o no?
fuente
¿Por qué no vas con la implementación de XMPP? en este momento hay tantos servidores públicos disponibles, incluidos gtalk, jabber, citadel, etc. Para Android, hay un SDK que también está disponible como SMACK. Esto no podemos decir una notificación de inserción, pero utilizando el XMPP puede mantener una conexión abierta entre el cliente y el servidor que permitirá una comunicación bidireccional. Significa que el cliente y el servidor de Android pueden comunicarse entre sí. En la actualidad, esto satisfará la necesidad de Push en Android. He implementado un código de muestra y realmente funciona muy bien
fuente
Recientemente desarrollé http://pushdroid.org, es una aplicación única que debe instalarse en el teléfono tal como Google lo implementó en 2.2, esto funciona desde 1.5 y se transmite por intención.
fuente
El problema con GCM es que hay mucha configuración involucrada en el proceso:
Si te gustan las cosas simples (como yo), deberías probar UrbanAirship . Es (en mi humilde opinión) la forma más fácil de usar GCM en su aplicación sin hacer mucha configuración. También le ofrece una interfaz gráfica de usuario bonita para probar que sus mensajes GCM se entregan correctamente.
Nota: no estoy afiliado a UrbanAirship de ninguna manera
fuente
https://github.com/Guti/Google-Cloud-Messaging--Titanium-/blob/master/src/com/google/android/gcm/GCMRegistrar.java
Su solución realmente buena y de trabajo para empujar.
Por favor pruebalo
fuente
Tienen sus oyentes, que usted debe usar utilizando sus clases de biblioteca en su código. No necesita preocuparse por empujar. Tiene que enviar el mensaje al servidor servidor empujará el mensaje al dispositivo. Ellos usan OAuth. Con respecto a los protocolos, hay dos métodos que utilizan CCS y XMPP. CCS solo usa XMPP como una capa de transporte autenticada, por lo que puede usar la mayoría de las bibliotecas XMPP para administrar la conexión. Para enviar notificaciones al dispositivo, puede escribir código en la aplicación de Android para enviar, así como el código de su servidor. el envío del mensaje se realizará solo con su código. El resto será atendido por Google Server en el caso de GCM. Puedes consultar los detalles en este enlace
http://developer.android.com/google/gcm/server.html
Además, por cuestiones de seguridad
seguridad de mensajería en la nube de Google https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ
En caso de que su aplicación no se esté ejecutando, los dispositivos también pueden recibir notificaciones porque debe escribir código para los oyentes de difusión. En segundo plano, estará escuchando al servidor y cada vez que haya algún paquete de mensajes, recibirá el mensaje como notificación. Android tiene un servicio que no debes molestarte. Solo tiene que usar esos recursos usando la clase de biblioteca que facilita su trabajo y les permite escribir si su aplicación no se está ejecutando, entonces también recibirá una notificación. Obviamente, habrá algún oyente que haga que la aplicación reciba. Verifique la sección "Recibir el mensaje" en este enlace.
http://developer.android.com/google/gcm/client.html
Aceptará la solicitud de los usuarios también. Para GCM lo hará. Por favor marque "Enviar un mensaje"
http://developer.android.com/google/gcm/client.html
fuente