Xamarin Forms & Firebase Cloud Messaging: iOS Setup

Carlos R. Campos
Xamarin Latino
Published in
5 min readJan 22, 2018

--

En mis últimas publicaciones, he hablado de cómo integrar OneSignal (una plataforma que facilita el envío de Push Notifications a diferentes plataformas) en aplicaciones Xamarin Forms. Ahora es el turno de que hablemos de Firebase Cloud Messaging.

Este artículo requiere que poseas un dispositivo real de iOS y una cuenta de desarrollador de Apple activa. Para más información vista esta URL.

Si quieres ver mi serie de OneSignal no olvides visitar OneSignal Series

¿Qué es Firebase?

Firebase es una plataforma de Google que proporciona diferentes herramientas para construir aplicaciones móviles. Desde almacenamiento hasta autenticación de usuarios, son de los servicios que provee esta plataforma. En esta ocasión, nos centraremos en Firebase Cloud Messaging (anteriormente conocido como Google Cloud Messaging) el cual provee el servicio de Push Notifications para plataformas móviles iOS y Android.

Configuración del Proyecto en Firebase

Primero, crearemos un proyecto en la consola de Firebase. Para esto, vamos a requerir poseer una cuenta de Google válida. Una vez en la consola, agregaremos un nuevo proyecto de Firebase:

Consola de Firebase
Creando un nuevo proyecto en Firebase
Dashboard de tu proyecto

Buscamos la sección de “Notifications” y procedemos a seleccionar “iOS”.

Ingresaremos nuestro Bundle ID de nuestra app (por ejemplo: com.xamarinlatino.firebasexltest). Luego, Firebase nos brindará un archivo de configuración el cual lo usaremos en nuestro proyecto de Xamarin Forms. Si olvidas guardar este archivo, puedes acceder a el desde la configuración de tu proyecto de Firebase. Una vez descargado el archivo, finalizamos el asistente y quedara configurado nuestra app en Firebase para iOS.

No olvides poner el iOS Bundle ID correspondiente a tu aplicación
Guarda este archivo en un lugar seguro!!!

Nota: Los últimos pasos del asistente contienen configuraciones para proyectos de iOS en Xcode. Puedes omitirlos completamente.

App ID, APN Key y Certificados

Una vez nuestra App esté creada en Firebase, nos dirigimos a Configuración > Configuración del Proyecto > Cloud Messaging. Encontraremos nuestro App de iOS creada. Para que nuestras Push Notifications puedan ser enviadas a nuestros usuarios iOS, debemos asociar certificados de Apple Push Notifications (APN’s). Anteriormente, se creaba un certificado para dispositivos de prueba (Development) y otros para producción (Production / Store); sin embargo, recientemente, Apple agregó las APN’s Key que son certificados generales para las Apps asociadas a una cuenta Apple. Así, nos dirigimos al portal de Apple para desarrolladores [CRCR1] e ingresamos a la sección de Certificados y dentro de el a Keys.

Portal de Certificados, Identificadores y Perfiles

Agregamos una nueva Key, seleccionamos la opción APNs y el nombre de nuestra preferencia. Una vez creada la Key nos brindará la opción de descarga. IMPORTANTE: solo puedes descargar este archivo una vez, para lo cual te sugiero lo almacenes en un lugar seguro. De lo contrario, tendrás que crear una nueva Key.

Vuelve a la consola de Firebase e ingresa el ID de la llave y el archivo “.p12” que generó la llave. Ambos sirven para autenticar la App ID y que Firebase pueda enviar las Notificaciones a tu App enlazada a tu cuenta de Apple.

APN Auth Key para nuestra App en Firebase

Preparando nuestro proyecto de Xamarin Forms

En nuestra solución de Xamarin Forms, en el proyecto de iOS, agregamos el paquete de Nuget llamado “Xamarin.Firebase.iOS.CloudMessaging”:

Luego, debemos agregar el archivo que Firebase nos brindó llamado “GoogleService-Info.plist” en nuestro proyecto de iOS; una vez agregado, debemos asegurarnos de que el Build Action de este archivo sea configurado como “BundleResource”:

Por último, debemos agregar en “Background Modes” de nuestro archivo Info.plist, la opción de “Remote Notifications”.

Iniciando Firebase en iOS

Para iniciar Firebase en iOS, debemos dirigirnos a nuestro “AppDelegate.cs” e ingresar el siguiente código:

Un poco de explicación:

Firebase se inicia en el método “FinishedLaunching” usando “Firebase.Core.App.Configure()” el cual toma la configuración del archivo “GoogleService-Info.plist” (este contiene todos los parámetros necesarios para conectarnos a Firebase). Luego configuramos a nuestra app para que pueda recibir Remote Notifications así como solicitar el permiso adecuado al usuario para el mismo (cabe destacar de como se suscribe a las Remote Notifications depende de la version de iOS); para esto, debemos hacer que nuestro AppDelegate implemente las interfaces “IUNUserNotificationCenterDelegate” y “IMessagingDelegate”.

Además, debemos implementar el método “DidRefreshRegistrationToken” el cual recibe el token de registro de nuestra App a Firebase.

Lanza tu App y prueba

Corre tu aplicación y acepta los permisos para recibir Remote Notifications. Luego ve a la consola de Firebase y envía tu primer mensaje. Observa los resultados:

Ejemplo de la herramienta de envío de Push Notifications
Captura de la Push Notifications en un dispositivo iOS

Conclusión

Ahora tenemos listo nuestra configuración para enviar Push Notifications a nuestros usuarios de iOS, mantente al pendiente de la continuación de esta serie. Puedes ver más detalles de este ejemplo en mi repositorio en GitHub.

Keep Coding

--

--