Firebase para aplicaciones Xamarin.Forms – Parte 4. FirebaseDataBase para iOS

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 FirebaseDB 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.iOS.Firebase.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
 

Publicado en Desarrollo, Xamarin y etiquetado , , , , .

Ingeniero Técnico en Informática de Sistemas. Apasionado de la tecnología y enfocado al desarrollo móvil

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *