Estoy buscando escribir una aplicación que reciba alertas enviadas desde un servidor. Encontré un par de métodos para hacer esto.
- SMS: intercepta los SMS entrantes e inicia una extracción desde el servidor
- Sondear el servidor periódicamente
Cada uno tiene sus propias limitaciones. SMS: no hay garantía en la hora de llegada. La encuesta puede agotar la batería.
¿Tiene una mejor sugerencia por favor? Muchas gracias.
Respuestas:
La respuesta oficial de Google es
Android Cloud to Device Messaging Framework (en desuso)Google Cloud Messaging (en desuso)Firebase Cloud MessagingFuncionará en Android> = 2.2 (en teléfonos que tienen Play Store).
fuente
( Publicación cruzada de una respuesta que di a una pregunta similar: ¿es compatible Android con notificaciones push casi en tiempo real? )
Recientemente comencé a jugar con MQTT http://mqtt.org para Android como una forma de hacer este tipo de cosas (es decir, notificaciones push que no son SMS sino datos, entrega de mensajes casi inmediata, 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
Mi comprensión / experiencia con la notificación push de Android son:
C2DMGCM : si su plataforma Android objetivo es 2.2+, entonces hágalo. Solo una trampa, los usuarios de dispositivos deben estar siempre conectados con una cuenta de Google para recibir los mensajes.MQTT : enfoque basado en Pub / Sub, necesita una conexión activa desde el dispositivo, puede agotar la batería si no se implementa con sensatez.
Diácono : puede no ser bueno a largo plazo debido al apoyo limitado de la comunidad.
Editar : Agregado el 25 de noviembre de 2013
GCM - Google dice ...
fuente
Marco de mensajería de Android Cloud a dispositivo
Importante: C2DM ha quedado en desuso oficialmente a partir del 26 de junio de 2012. Esto significa que C2DM ha dejado de aceptar nuevos usuarios y solicitudes de cuotas. No se agregarán nuevas funciones a C2DM. Sin embargo, las aplicaciones que usan C2DM continuarán funcionando. Se alienta a los desarrolladores existentes de C2DM a migrar a la nueva versión de C2DM, llamada Google Cloud Messaging para Android (GCM). Consulte el documento de migración de C2DM a GCM para obtener más información. Los desarrolladores deben usar GCM para nuevos desarrollos.
Compruebe amablemente el siguiente enlace:
http://developer.android.com/guide/google/gcm/index.html
fuente
Aquí he escrito algunos pasos para obtener RegID y notificaciones a partir de cero
Puede encontrar el tutorial completo en el siguiente enlace URL
Recorte de código para obtener la ID de registro (Token de dispositivo para notificación push).
Configurar proyecto para GCM
Actualizar el archivo AndroidManifest
Para habilitar GCM en nuestro proyecto, necesitamos agregar algunos permisos en nuestro archivo de manifiesto Vaya a AndroidManifest.xml y agregue el código siguiente Agregar permiso
Agregar declaración de receptor de difusión de GCM
agregue la declaración del receptor de difusión de GCM en la etiqueta de su aplicación
Agregar declaración de servicio de GCM
Obtener ID de registro (token de dispositivo para notificación push)
Ahora vaya a su Actividad de lanzamiento / bienvenida
Agregar constantes y variables de clase
Actualizar los métodos OnCreate y OnResume
Nota : guarde REGISTRATION_KEY, es importante para enviar un mensaje PN al GCM, también tenga en cuenta que será único para todos los dispositivos, al usar esto solo GCM enviará una notificación push.
Recibir notificaciones push
Agregar clase de receptor de difusión de GCM
Como ya hemos declarado "GcmBroadcastReceiver.java" en nuestro archivo de manifiesto, creemos este código de clase de receptor de actualización de clase de esta manera
Agregar clase de servicio GCM
Como ya hemos declarado "GcmBroadcastReceiver.java" en nuestro archivo de manifiesto, creemos este código de clase de receptor de actualización de clase de esta manera
fuente
Hay un nuevo esfuerzo de código abierto para desarrollar una biblioteca Java para notificaciones push en Android basada en el servidor web Meteor. Puede consultarlo en el Blog del Proyecto Deacon , donde encontrará enlaces a Meteor y al repositorio GitHub del proyecto. Necesitamos desarrolladores, así que ¡corra la voz!
fuente
Puede usar Xtify ( http://developer.xtify.com ): tienen un servicio web de notificaciones push que funciona con su SDK. es gratis y hasta ahora me ha funcionado muy bien.
fuente
o....
fuente
Recomiendo usar GCM - Google Cloud Messaging para Android Es gratis, y para usos simples debería ser muy fácil.
Sin embargo, requiere mantener un tercer servidor lateral para enviar las notificaciones en su nombre. Si desea evitar que haya algunas soluciones industriales muy buenas para el servicio de notificaciones push de Android:
Diclaimer : trabajo en PushApps y también uso su producto en mis aplicaciones desde hace más de un año.
fuente
A partir del 18/05/2016 Firebase es la plataforma unificada de Google para desarrolladores móviles que incluye notificaciones push.
fuente
Me temo que has encontrado ambos métodos posibles. Google, al menos inicialmente, iba a implementar una API GChat que podría usar para una implementación push / pull. Lamentablemente, esa biblioteca fue cortada por Android 1.0.
fuente
No sé si esto sigue siendo útil. Logré algo como esto con una biblioteca de Java en http://www.pushlets.com/
Si lo hace en un servicio, no evitará que Android lo cierre y mate el hilo del oyente.
fuente
Google C2DM se deprecia ahora, para eso, debe usar el nuevo servicio GCM (Google Cloud Messaging). Para documentación, consulte http://developer.android.com/guide/google/gcm/gs.html
fuente
C2DM: los usuarios de su aplicación deben tener la cuenta de gmail.
MQTT: cuando su conexión llegó a 1024, dejará de funcionar porque usó "seleccionar modelo" de Linux.
Hay un servicio gratuito de inserción y una API para Android, puedes probarlo: http://push-notification.org
fuente
Método gratuito y fácil:
Si su base de usuarios objetivo no es grande (menos de 1000) y desea comenzar con un servicio gratuito, Airbop es el mejor y más conveniente.
Sitio web de Airbop Utiliza el servicio Google Cloud Messaging a través de su API y ofrece un buen rendimiento. Lo he usado para dos de mis proyectos y fue fácil implementarlo.
Los servicios como Urbanship son excelentes, pero proporcionan una pila completa de implementación y no solo las notificaciones automáticas.
Si solo el servicio push es su objetivo, Airbop funcionará bien.
No he usado Pushwoosh , pero también es una gran opción. Permite empujar hasta 1,000,000 de dispositivos gratis
fuente
Sugeriría usar ambos SMS y HTTP. Si el usuario no ha iniciado sesión, envíe un SMS a su teléfono para notificarle que hay un mensaje esperando.
Así es como funciona este servicio de Ericsson Labs: https://labs.ericsson.com/apis/mobile-java-push/
Si implementa esto usted mismo, la parte difícil es eliminar el SMS entrante sin que el usuario lo vea. O tal vez está bien si lo ven en su caso.
Parece que esto funciona: Eliminar SMS usando BroadCastReceiver - Android
Sí, escribir código como este puede ser peligroso y potencialmente puede arruinar la vida de alguien porque su aplicación eliminó un SMS que no debería.
fuente
Puede usar Google Cloud Messaging o GCM , es gratis y fácil de usar. También puede usar servidores push de terceros como PushWoosh, que le brinda más flexibilidad
fuente
Hay muchos servidores de terceros como Urban Airship , Xtify, Mainline , ... lo que permite enviar no solo en Android, sino también en iOs, Windows Phone ...
fuente
Firebase Cloud Messaging (FCM) es la nueva versión de GCM. FCM es una solución de mensajería multiplataforma que le permite enviar mensajes de forma segura y gratuita. Hereda la infraestructura central de GCM para entregar mensajes de manera confiable en Android, iOS, Web (javascript), Unity y C ++.
A partir del 10 de abril de 2018, Google ha desaprobado GCM. El servidor GCM y las API del cliente están en desuso y se eliminarán el 11 de abril de 2019. Google recomienda migrar las aplicaciones GCM a Firebase Cloud Messaging (FCM), que hereda la infraestructura GCM confiable y escalable.
Recurso
fuente
Puedes usar Pusher
Es un servicio alojado que hace que sea muy fácil agregar datos y funcionalidades en tiempo real a aplicaciones web y móviles.
Pusher ofrece bibliotecas para integrarse en todos los principales tiempos de ejecución y marcos.
PHP, Ruby, Python, Java, .NET, Go and Node
en el servidorJavaScript, Objective-C (iOS) and Java (Android)
en el cliente.fuente