studio segundo plano notificaciones notificacion enviar ejemplo app android push-notification

enviar - notificaciones push en segundo plano android



¿Es compatible Android con notificaciones push en tiempo real? (16)

Recientemente me enteré de la capacidad de las aplicaciones de iPhone para recibir notificaciones casi instantáneas de las notificaciones de aplicaciones .

Esto se proporciona en forma de notificaciones push, un protocolo a medida que mantiene una conexión de datos siempre con el iPhone y mensajes binarios a la aplicación, que muestra alertas increíblemente rápido, entre 0,5 y 5 segundos desde la aplicación del servidor. tiempo de respuesta. Esto se envía como datos, en lugar de SMS, en paquetes muy pequeños que se cargan como parte del plan de datos, no como mensajes entrantes.

Me gustaría saber si, con Android, existe una instalación similar, o si es posible implementar algo similar utilizando API de Android. Para aclarar, defino similar a:

  • No es un mensaje SMS, sino una solución basada en datos
  • Tan real como sea posible.
  • Es escalable, es decir, como parte del servidor de una aplicación móvil, podría notificar miles de instancias de la aplicación en segundos

Aprecio que la aplicación pueda basarse en el estilo de solicitud / respuesta HTTP, pero idealmente no quiero hacer una encuesta tan fuerte solo para verificar la notificación; además de que es como goteo drenar el plan de datos.


¿Por qué no vas con la implementación XMPP? ahora mismo hay muchos servidores públicos disponibles, incluyendo gtalk, jabber, citadel, etc. Para Android, hay un SDK también llamado SMACK. No podemos decir una notificación de inserción, pero al utilizar 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 cumplirá con la necesidad de Push in android. He implementado un código de ejemplo y realmente funciona muy bien


Echa un vistazo a la plataforma Xtify . Parece que esto es lo que están haciendo,


El problema con GCM es que hay mucha configuración involucrada en el proceso:

  • Tienes que añadir un montón de repetitivo a tu aplicación de Android
  • Debe configurar un servidor externo para comunicarse con el servidor GCM
  • Tendrás que escribir pruebas

Si te gustan las cosas simples (como yo) deberías probar UrbanAirship . Es (IMHO) la forma más fácil de usar GCM en su aplicación sin hacer mucha configuración. También le proporciona una bonita GUI para probar que sus mensajes GCM se están entregando correctamente.

  • Puedes encontrar los documentos y la guía de inicio here
  • Puedes encontrar una aplicación de muestra here

Nota: No estoy afiliado a UrbanAirship de ninguna manera.


Existe un nuevo esfuerzo de código abierto para desarrollar una biblioteca Java para notificaciones push en Android, utilizando el servidor Meteor Comet como backend. Puedes verlo en el Blog del Proyecto Deacon . Necesitamos desarrolladores, así que por favor, corre la voz!


Firebase Cloud Messaging FCM Preguntas frecuentes 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 GCM SDK hoy en día 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 .



Google recientemente (18 de mayo de 2016) announced que Firebase es ahora una plataforma unificada para desarrolladores móviles que incluye notificaciones push casi en tiempo real. También es multiplataforma:

La compañía ahora ofrece a todos los usuarios de Firebase notificaciones gratuitas e ilimitadas con soporte para iOS, Android y la Web.

announced


He estado investigando esto y PubSubHubBub recomendado por jamesh no es una opción. PubSubHubBub está destinado a las comunicaciones de servidor a servidor.

"Estoy detrás de un NAT. ¿Puedo suscribirme a un concentrador? El concentrador no puede conectarse conmigo".

/Anónimo

No, PSHB es un protocolo de servidor a servidor. Si estás detrás de NAT, no eres realmente un servidor. Si bien hemos utilizado ideas para que las extensiones PSHB opcionales realicen bloqueos ("sondeo largo") y / o sondeo de mensajes para dichos clientes, no está en la especificación básica. La especificación principal es de servidor a servidor solamente.

/ Brad Fitzpatrick, San Francisco, CA

Fuente: http://moderator.appspot.com/#15/e=43e1a&t=426ac&f=b0c2d (enlace directo no es posible)

Llegué a la conclusión de que el método más sencillo es utilizar Comet HTTP push. Esta es una solución simple y bien entendida, pero también puede reutilizarse para aplicaciones web.


No puedo encontrar dónde lo leo, pero creo que gmail utiliza una conexión TCP abierta para enviar mensajes de correo electrónico.


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).


Recientemente he desarrollado http://pushdroid.org. Es una aplicación única que debería instalarse en el teléfono, tal como Google lo implementó en 2.2. Esto funciona desde 1.5 y se transmite a través de intenciones.


Si puede confiar en que las bibliotecas de Google estén allí para su mercado objetivo, es posible que desee recuperar la funcionalidad de GTalk (registrar un recurso en el nombre de usuario existente: interceptar los mensajes a medida que llegan con BroadcastReceiver).

Si no, y espero que no puedas , entonces estarás en un paquete de tus propias versiones de XMPP . Esto es un problema, pero puede ser más fácil si XMPP se incluye por separado como una biblioteca independiente.

También puede considerar PubSubHubub , pero no tengo idea de su uso en la red. Creo que está construido sobre XMPP.


Tienen sus oyentes que debe usar usted usando sus clases de biblioteca en su código. No tienes que preocuparte por empujar. Debe enviar el mensaje al servidor. El mensaje se enviará 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 el código en la aplicación de Android para enviar, así como el código del servidor. el envío del mensaje se hará únicamente por su código. El descanso será atendido por el servidor de Google en caso de GCM. Puedes consultar 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, entonces los dispositivos también pueden recibir una notificación porque tiene que escribir código para los oyentes de transmisión. En segundo plano, escuchará al servidor y, siempre que haya un paquete de mensajes, recibirá el mensaje como notificación. Android tiene un servicio que no debe preocuparse por ello. 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 y luego recibir una notificación. Obviamente, habrá algún oyente que haga la aplicación para recibir. Verifique la sección "Recibir el mensaje" en este enlace

http://developer.android.com/google/gcm/client.html

Se aceptará solicitud de los usuarios también. Para GCM lo hará. Por favor marque "Enviar un mensaje"

http://developer.android.com/google/gcm/client.html


XMPP es una buena solución. Lo he usado para una aplicación de Android activada, en tiempo real, habilitada. 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 una de sus propias casillas. OpenFire es una excelente opción.

La biblioteca que desea no es Smack como se mencionó 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 duración de la batería de una solución XMPP:

El cliente de Android debe mantener una conexión TCP persistente al despertarse periódicamente para enviar un latido al servidor XMPP.
Esto claramente impone un costo en términos de uso de energía. Una estimación de este costo se proporciona a continuación:

  • Usando una batería de 1400mAh (como se suministra en el Nexus One y HTC Desire)
  • Un dispositivo inactivo, conectado a una red 3G, utiliza aproximadamente 5 mA
  • El ciclo de activación, latido del corazón, sueño se produce cada 5 minutos, tarda tres segundos en completarse y usa 300 mA
  • El costo en el uso de la batería por hora es por lo tanto:
    • 36 segundos 300mA = 3mAh enviando latidos del corazón
    • 3600 segundos 5mA = 5mAh en reposo
    • 4:95 + 3 = 7: 95mAh combinados
  • Una batería de 1400mAh dura aproximadamente 11.6 días en reposo y 7.3 días cuando se ejecuta la aplicación, lo que representa una reducción aproximada del 37% en la vida útil de la batería.
  • Sin embargo, una reducción en la duración de la batería del 37% representa el peor caso absoluto en la práctica, dado que los dispositivos rara vez están completamente inactivos.


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 tiene que ejecutar un servicio, solo una conexión TCP adicional debe estar abierta. Las aplicaciones deben comunicarse con este servicio utilizando Intents 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. Luego, el usuario otorgará o denegará el permiso, por lo que mantendrá el control. La aplicación registrará una categoría de acción + en el servicio, de modo que el servicio sepa cómo entregar el mensaje enviado.

¿Sería una buena idea o no?