Estoy usando AWS
recursos para mi proyecto de Android, planeo agregar un servicio de notificación push para mi proyecto con AWS SNS
. Hay pocas preguntas que me molestan mucho. No encontré ninguna pregunta al respecto, excepto una o dos, pero con explicaciones poco claras.
1.Does AWS
apoyan FCM
? SNS
trabajar con GCM
. Pero Google recomienda usar FCM en lugar de GCM
. No encontré AWS
apoyo FCM
.
¿ AWS
Almacenan mensajes (o datos) en sus bases de datos incluso después de enviar notificaciones automáticas?
3. Intenté poner la clave api de FCM en la plataforma de aplicaciones SNS, muestra parámetros no válidos ¿por qué?
Respuestas:
FCM es compatible con versiones anteriores de GCM. Los pasos para configurar FCM en AWS son idénticos al procedimiento de configuración de GCM y (al menos por el momento) FCM funciona de forma transparente con GCM y SNS con respecto a la configuración del lado del servidor.
Sin embargo , si envía
data
cargas útiles al dispositivo Android, no se procesarán a menos que implemente un servicio del lado del cliente que se extiendaFirebaseMessagingService
. El generador de mensajes JSON predeterminado en la consola de AWS envíadata
mensajes, que su aplicación ignorará a menos que se implemente el servicio mencionado anteriormente. Para evitar esto para las pruebas iniciales, puede proporcionar unanotification
carga útil personalizada que recibirá su dispositivo (siempre que su aplicación no esté en primer plano)Hay instrucciones de migración de GCM-FCM proporcionadas por Google, sin embargo, los cambios que debe realizar son predominantemente del lado de la aplicación.
Los pasos que debe seguir para probar GCM / FCM en su aplicación con SNS son:
FirebaseInstanceIDService
y anular elonTokenRefresh
método para ver esto dentro de su aplicación de Android. Una vez que haya hecho esto , desinstale y reinstale su aplicación y su token debería imprimirse en la consola de depuración en Android Studio en el primer arranque.El mensaje generado por SNS tendrá la forma:
Como mencionamos anteriormente, las
data
cargas útiles se ignorarán si no se ha implementado ningún servicio para recibirlas. Nos gustaría probar sin escribir demasiado código, por lo que deberíamos enviar unanotification
carga útil. Para hacer esto, simplemente cambie el mensaje JSON para leer:Una vez que haya hecho esto, asegúrese de que su aplicación no se esté ejecutando en el dispositivo y presione el botón Publicar mensaje . Ahora debería ver una notificación emergente en su dispositivo.
Por supuesto, puede hacer todo esto mediante programación a través de la API de Amazon SNS; sin embargo, todos los ejemplos parecen usar la
data
carga útil, por lo que debe tener eso en cuenta y generar una carga útil adecuada para su caso de uso.fuente
data
messages funciona bien usando sns incluso si la aplicación cliente no implementa FCM sino GCM. En mi aplicación, no he actualizado a FCM en el lado del cliente, pero FCM usando SNS también funciona bien para losdata
mensajes. ¿No debería funcionar?Ahora puede ir a su consola de base de fuego ( https://console.firebase.google.com/ ), seleccionar su proyecto, hacer clic en el ícono de ajustes y elegir la configuración del proyecto, luego hacer clic en la pestaña de mensajería en la nube ...
Verá la clave de servidor heredada, que es la clave de API de GCM, y tendrá la opción de generar nuevas claves de servidor, que son las versiones de FCM.
SNS aceptará ambas versiones, pero su opción de menú aún lo clasifica en GCM.
Aquí hay una imagen para su referencia:
Tenga en cuenta que puede eliminar "accidentalmente" sus claves de servidor, pero la clave de servidor heredada no se puede eliminar. Además, si hace clic en el botón Agregar clave de servidor, obtendrá una nueva clave de servidor DEBAJO de la primera, ¡SIN ADVERTENCIA! ... Buen trabajo Google;)
fuente
Intenté usar una solución con carga útil de notificación en lugar de datos, pero no recibí notificaciones automáticas en el dispositivo móvil. Encontré este tutorial https://youtu.be/iBTFLu30dSg con subtítulos en inglés de cómo usar FCM con AWS SNS paso a paso y un ejemplo de cómo enviar notificaciones push desde la consola de AWS e implementarlo en php con aws php sdk. Me ayudó mucho.
fuente
Una nota adicional más a la gran respuesta de Nathan Dunn. Cómo enviar datos con la notificación de SNS a Firebase.
Necesitamos agregar datos al Json (dentro de la notificación):
En su implementación de FirebaseMessagingService (ejemplo de Xamarin)
fuente
Solo una nota adicional a la respuesta de Nathan Dunn: para agregar sonido, use el siguiente mensaje JSON
fuente
Me tomó un tiempo descubrir cómo enviar la notificación con la carga útil correcta (publicar en el tema). Así que lo pondré aquí.
fuente
Amazon es compatible con FCM ya que todo el código anterior se ha migrado de GCM a FCM. El artículo siguiente explica en detalle.
Artículo publicado por Amazon
fuente
Para responder a las preguntas:
Para obtener un tutorial detallado sobre cómo configurar FCM con SNS, lea este artículo.
fuente