Notificaciones Push – Parte 1: Xamarin Forms, Microsoft Azure y Amazon AWS SNS

Posted on Posted in .Net, Xamarin, Xamarin.Forms

TL;DR

Trate por 5 días de implementar las notificaciones push con Xamarin Forms, Microsoft Azure y Amazon AWS SNS, y nada funciono, gaste 5 días sin lograr enviar por lo menos una notificación con alguna de esas dos plataformas.

Notificaciones Push

Una característica importante de las aplicaciones hoy en día, es que el usuario sea informado inmediatamente cuando un evento que le incumbe suceda, es decir:

  • En una app de mensajería cuando tiene algún mensaje nuevo
  • En una app de manufactura cuando una maquina se detiene
  • En una app de finanzas personales cuando estás cerca de llegar al límite establecido
  • etc

Siendo tan importante la funcionalidad me di a la tarea de agregarla en una app que estoy haciendo para Android y para iOS con Xamarin.Forms (desarrollo en C# y me genera código nativo para las dos plataformas), el backend lo tengo en ASP.net con MVC.

Microsoft Azure

Mi primer opción fue utilizar Microsoft Azure, ya que una búsqueda rápida en Google de Notificaciones Push Xamarin Forms arrojo como primer resultado el Tutorial con Azure, seguí los pasos que decía:

  • Crear una cuenta en Azure
  • Metí mi tarjeta de crédito (ya me quieren cobrar?!)
  • Crear un Notification Hub dentro de Azure
  • En mi proyecto backend en MVC agregar en Controllers > TodoItemController.cs el código… WHAT?

Yo no tengo ningún controlador TodoItemController!, el tutorial supone que tú tienes el proyecto en el que ellos se están basando, lo cual en la mayoría de los casos es incorrecto, trate de agregar el código que mostraba el tutorial pero me marcaba error, faltaba algo. Así que me decidí a bajar el proyecto en el que ellos se están basando, peeero solamente encontré el de Node.js, no encontraba por ningún lado el de ASP.net MVC.

Te ponen un link para que bajes el ejemplo de Node.js pero no para .Net WHAT???

Amazon AWS SNS (AWS = Amazon Web Services, SNS = Simple (no lo creo) Notification Service)

Después de horas de intentar con Azure, buscando por internet, me topé con el servicio SNS de Amazon AWS, y decidí intentarlo:

  • Crear una cuenta en Amazon AWS
  • Metí mi tarjeta de crédito (de nuevo?)
  • Verificar mi identidad (Primer problema)
  • Hice un proyecto en Firebase, la nueva plataforma recomendada de Google para las notificaciones push
  • Baje el proyecto de Amazon de Github, lo configure con mis llaves y lo instale en mi Moto Z
  • Seguí los pasos para mandar una notificación y
  • Nada paso…

El primer problema que tuve fue verificando mi identidad, ya que Amazon te hace una llamada, la cual NUNCA entro, parece que tienen problemas con llamadas a México (obra de Trump?), tuve que meter un Ticket a soporte para que me resolvieran el problema, ya que no tenía acceso. Al día siguiente recibí la respuesta, les pase mi número y me llamaron, hable con alguien de soporte y me ayudo a verificar mi identidad, tuvo que pasar un día para empezar a usar su plataforma.

Después de eso seguí su tutorial, y nunca pude mandar ninguna notificación, no pasaba nada, a pesar de que no me marcaba error, las llaves que pase de Firebase a Amazon AWS SNS estaban correctas (porque si metes las equivocadas te marcaba error), no pasaba nada.

5 días de trabajo sin recompensa

Me lleve 5 días (obviamente no completos, porque no todo el día me la pase haciendo eso), pero 5 días en tratar de mandar una sola Notificación Push… sin éxito

Se me hace increíble que empresas de la talla de Microsoft y Amazon no ofrezcan alguna solución súper sencilla de mandar notificaciones push con sus plataformas, o será que no seguí bien las indicaciones en los dos casos?.

Azure me obligaba usar su template de backend y hostearlo en sus servidores, pero yo tengo mi hosting, y ahí lo quiero hostear! Solo quiero su servicio de notificaciones, y ya, en caso de tener que pagar, solo quiero pagar por el servicio de notificaciones!.

Amazon AWS SNS me hizo esperar un día para poder iniciar a trabajar, si estuviera contra tiempo me hubiera costado un día de trabajo perdido, la llamada fue en inglés, así que si no hubiera entendido nada no hubiera podido verificar mi identidad, y tras seguir todos sus pasos, nada pasa, ni un mensaje de error, ni nada, busque por todos lados como suscribir un dispositivo a un tópico, como hacer X, Y, Z y nada pasaba.

Descansaré unos días de la implementación de las notificaciones, y tratare de otra forma.