Tras el último artículo donde implementamos FirebaseDB para Android (http://albertomontesdeoca.xyz/firebase-para-aplicaciones-xamarin-forms-parte-3-firebasedatabase-para-android/), llegamos al final de esta serie de tutoriales sobre la implementación de Firebase en Xamarin.Forms. Esta vez con FirebaseDataBase para iOS.
Configurando nuestro proyecto Xamarin.Forms
Lo primero que haremos será agregar a nuestro proyecto los paquetes Nugets necesarios para poder disfrutar de Firebase Database en nuestro proyecto, para ello buscamos el paquete “Xamarin.Firebase.iOS.Database“.
Configurando la aplicación
Lo primero que debemos hacer antes de nada es configurar nuestra aplicación para poder usar las características de la base de datos de Firebase.
En iOS la configuración es común tanto para la autenticación como para la base de datos, por lo que no debemos hacer nada en el código, si en cambio debemos habilitar una opción dentro de las “opciones de compilación” de nuestro proyecto iOS.
Dentro las opciones encontramos una que indica “Argumentos mtouch adicionales“, en esta opción deberemos agregar lo siguiente
--registrar:static
A continuación procederemos con la implementación del servicio en iOS.
Implementando el Servicio
Al igual que se hizo con el servicio en Android, usaremos la inyección de dependencias para implementar nuestro servicio IFirebaseDBService, para ello lo primero que haremos será definir nuestra clase:
using System; using System.Threading; using System.Threading.Tasks; using Firebase.Auth; using firebasesample.iOS.Services.FirebaseAuth; using firebasesample.Services.FirebaseAuth; using firebasesample.Services.FirebaseDB; using firebasesample.iOS.Services.FirebaseDB; using Foundation; using UIKit; using Xamarin.Auth; using Xamarin.Forms; using Firebase.Database; [assembly: Dependency(typeof(FirebaseDBService))] namespace firebasesample.iOS.Services.FirebaseDB { public class FirebaseDBService : IFirebaseDBService { public void Connect() { throw new NotImplementedException(); } public void GetMessage() { throw new NotImplementedException(); } public string GetMessageKey() { throw new NotImplementedException(); } public void SetMessage(string message) { throw new NotImplementedException(); } } }
Conectar la base de datos
Para ello implementamos el método Connect
DatabaseReference databaseReference; public void Connect(){ databaseReference = Database.DefaultInstance.GetRootReference(); }
Obtener mensaje
Para ello implementamos el método GetMessage.
public void GetMessage(){ var userId = authService.GetUserId(); var messages = databaseReference.GetChild("messages").GetChild(userId); nuint handleReference = messages.ObserveEvent(DataEventType.Value, (snapshot) => { String message = ""; if (snapshot.GetValue() != NSNull.Null) { message = snapshot.GetValue().ToString(); } MessagingCenter.Send(FirebaseDBService.KEY_MESSAGE, FirebaseDBService.KEY_MESSAGE, message); }); }
Establecer mensaje
Para ello implementamos el método SetMessage.
public void SetMessage(String message){ var userId = authService.GetUserId(); var messages = databaseReference.GetChild("messages").GetChild(userId); messages.SetValue<NSString>((Foundation.NSString)message); }
Como podeis comprobar la implementación del servicio en iOS es muy parecida a la implementación en Android, por lo que se hace relativamente rápido.
Conclusión
Después de algunas lecciones hemos aprendido a configurar nuestro proyecto Xamarin.Forms para usar Firebase, tanto en su faceta de Autenticación como de Base de datos.
Aunque es un proyecto pequeño seguro que os sirve para utilizarlo de base para vuestros futuros proyecto.
Recordad que podeis descargar el código fuente completo desde el siguiente repositorio de GitHub: https://github.com/jamontes79/xamarin-forms-firebase-sample
Excelente serie de artículos Felicitaciones!!!!
Muchísimas gracias por tus comentarios!
Un saludo