Home » Guías » Guía de integración de Firebase para iOS (I): Configuración
Firebase Guía I

Guía de integración de Firebase para iOS (I): Configuración

Firebase es un conjunto de herramientas para desarrolladores creado por Google, con un gran número de posibilidades y que, principalmente, nos facilitan la integración y funcionamiento de funciones tan demandadas pero complejas de integrar o desarrollar como bases de datos en remoto, autenticación de usuarios a través de nuestro propio sistema o usando plataformas de redes sociales, analíticas, informes de errores, envío de notificaciones push, etc.

La plataforma funciona tanto para iOS como para Android, y nos vamos a centrar en una serie de guías en cómo funciona y cómo se integran cada una de las diferentes funcionalidades para sacarle el máximo partido.

Funciones y precio de Firebase

En principio, Firebase es gratuito en un plan que, obviamente, tiene sus limitaciones en algunos servicios. Todos los servicios son gratuitos siempre, salvo el uso de base de datos, almacenamiento, hosting (que no aplica a una app), laboratorio de pruebas (solo para Android) y el uso de la plataforma Google Cloud (que solo está incluido en el plan más alto de pago por uso). Las limitaciones en los servicios de pago cuando se usan gratuitamente son las siguientes:

  • Base de datos: 100 conexiones simultáneas, 1GB de almacenamiento y 10GB al mes de descarga de datos en la opción gratuita. No incluye copias de seguridad.
  • Almacenamiento: 5GB de almacenamiento, 1GB al día de descarga, 20.000 operaciones de subida y 50.000 de descarga al día.

Estos servicios solo se usan cuando queremos almacenar información en la nube, tanto datos como información de nuestros usuarios (fotos, vídeos, etc…). Si no usamos esto sino cualquier otro servicio de los disponibles, nunca tendremos coste.

Configurar nuestro proyecto para Firebase

Lo primero es configurar nuestro proyecto. Para ello, tendremos que abrir el navegador y acceder a la web de Firebase en Firebase (este enlace se abre en otra ventana). En ese momento vemos una imagen con el primer reclamo de “Comienza a probar este producto gratis”.

Firebase Intro

Si no tenemos iniciada sesión con nuestro usuario Google (el que vayamos a usar para administrar la cuenta con Firebase y los proyectos) tendremos que iniciarla. Obviamente, hace falta una. Una vez dentro lo primero es crear un nuevo proyecto ya que todo el funcionamiento será por proyectos dentro de Firebase asociados a cada app. Si tenemos 5 apps, tendremos 5 proyectos en Firebase (obviamente).

Nos pedírá un nombre para el proyecto y luego el país donde estamos. Tras esto nos llegará un email con más información de los pasos siguientes a dar:

  1. Añadir una app a tu proyecto.
  2. Configurar Firebase Analytics (la SDK base del servicio)
  3. Desarrollar (donde podremos elegir integrar cualquiera de los servicios a nuestro alcance)
  4. Crecer (gracias a más servicios a nuestra disposición)
  5. Monetizar (en este caso, a través de la integración de la red de publicidad AdMod)

Nosotros hoy nos vamos a quedar en el paso 2 y durante las próximas semanas iremos lanzando guías de cómo integrar y usar cada uno de los servicios que podemos usar en la plataforma iOS.

Tras este paso mencionado de creación del nombre del proyecto se nos dirige a la consola principal de Firebase, que será donde añadamos nuestra app al proyecto recién creado.

Firebase consola

Al pulsar sobre “Añadir Firebase a la aplicación de iOS” nos pedirá algunos datos esenciales: el bundle ID de la app como dato obligatorio y opcionalmente podemos indicarle el nombre y el ID de la misma en iTunes Connect si ya tenemos uno o la app está ya publicada en el App Store. Tras esto, nos bajará un fichero plist con la configuración de nuestro proyecto Firebase, que reservamos para más adelante. El siguiente paso es seguir los pasos de instalación que pasan por usar el gestor de dependencias CocoaPods.

Instalando CocoaPods y dependencias

Si no tenemos instalada este utilidad (ni sabemos cómo funciona) es muy simple: es un gestor de dependencias que se encarga de instalar, configurar y mantener de una manera muy simple cualquier tipo de librería de terceros en nuestro proyecto. A partir de un fichero de texto en el raíz de nuestro proyecto, llamado podfile, solo tenemos que incluir una línea de configuración por cada librería de terceros que queramos usar y llamar a una sencilla instrucción que actualice, instale y descargue cualquier tipo de dependencia (librería necesaria) para usar lo que queramos.

CocoaPods nos obliga, no obstante, a trabajar a través de un fichero de espacio de trabajo de Xcode (de extensión .xcworkspace) por lo que siempre que usemos nuestro proyecto (a partir de ese momento) tendremos que abrirlo con este y no el usual .xcodeproj. Si estamos usando Git para control de versiones no hay problema, todos estos ficheros e integraciones entran en el gestor de versiones sin problema.

Si no tenemos CocoaPods instalado en nuestro sistema, lo hacemos usando Ruby en nuestro Mac, para ser más preciso el package manager (gestor de paquetes) del lenguaje llamado gem. ¿No lo tienes instalado? Bueno, si tienes Xcode 7 u 8 instalado, sí que lo tienes aunque no lo sepas.

Abrimos un terminal en nuestro Mac, vamos a la carpeta donde está nuestro proyecto (la misma donde esté el fichero .xcodeproj) y desde ahí ejecutamos el siguiente comando para instalar CocoaPods:

Nos pedirá la clave de administración del Mac (debido a que hacemos uso de sudo para obtener privilegios de sistema). Veremos que tarda unos minutos en responder (también dependerá de nuestra máquina). No debemos desesperar pues es normal. Llega un momento que veremos una serie de mensajes de instalación y una vez termine ya tendremos el gestor de dependencias CocoaPods instalado.

Configurando Firebase a través de CocoaPods

Ahora, sin movernos de la carpeta raíz de nuestro proyecto con el xcodeproj, ejecutamos la siguiente instrucción:

Esto lo único que hace es configurar el proyecto para usar CocoaPods con él. Crea el fichero de espacio de trabajo xcworkspace que hemos comentado, una carpeta Pods para instalar todos los paquetes que usemos y (lo más importante), un pequeño fichero podfile situado en la misma carpeta donde estamos (fichero sin extensión alguna). Si editamos ese fichero veremos que tiene un contenido similar a este:

La primera línea nos dice que si queremos configurar una versión mínima para nuestra app, la descomentemos (habría que quitarle el símbolo # antes de la línea). Por ejemplo, si quisiéramos que nuestro proyecto solo funcione en iOS 10 quitaríamos el # antes de la línea que pone platform e indicaríamos como valor '10.0'.

Donde pone target está el nombre de nuestro proyecto que, en mi caso, es applecoding. Si vamos a usar Objective-C y no queremos frameworks dinámicos, pondríamos un # antes de la línea use_frameworks!. Pero como trabajamos con Swift lo dejamos como está. En mi en caso he puesto tests unitarios de código e interfaz y me ha configurado dos targets dentro del principal para cada uno de los test, que heredan rutas del principal y donde puedo indicar librerías específicas para cada uno de ellos (las de mi proyecto general las heredan).

¿Cómo instalo Firebase? Nada más simple que poner, debajo de la línea que dice # Pods for applecoding (donde en tu caso en vez de applecoding aparecerá el nombre de tu proyecto) ponemos la línea que instala la librería:

Introducido este cambio, cerramos el fichero y ahora desde el terminal escribimos la instrucción que instala las dependencias que hemos seleccionado:

Una vez terminado, ya lo tenemos listo. Podemos abrir el proyecto con Xcode, haciendo doble click al fichero .xcworkspace y una vez abierto veremos que tenemos una nueva carpeta Pods y un nuevo proyecto dentro del nuestro llamado también Pods. Dentro de este están todas las librerías que vamos a usar. Si abrimos la carpeta Pods dentro de ese nuevo proyecto Pods veremos que tenemos FireBase y unas cuantas carpetas más para las analíticas, utilidades de Google, instancias, etc.

Es posible que si generamos la Build veamos alguna advertencia, pero la ignoramos y punto. Es un “pequeño” fallo que tiene la versión de Firebase que al compilar normalmente desaparece. Ahora, lo que tenemos que hacer es incorporar la configuración de Firebase y las analíticas en el AppDelegate. Vamos al AppDelegate.swift e incorporamos recuperar la librería con un import de forma que debajo del actual import UIKit ponemos import Firebase.

Por último, la función delegada didFinishLaunchingWithOptions la cambiamos para que quede así:

Básicamente solo hemos añadido la línea FIRApp.configure() para que se arranque la configuración. Pero antes de ejecutar tenemos que coger ese fichero que habíamos reservado GoogleService-Info.plist (se tiene que llamar así, si pone otro nombre por cualquier motivo tendréis que renombrarlo) que se bajó al poner nuestro bundle ID y arrastrarlo a nuestro proyecto (al nuestro, no a Pods). Hemos de añadirlo a todos los targets que vayan a usar Firebase. Una vez hecho, ahora ya podemos ejecutar y veremos una serie de mensajes que nos indican que la librería se ha configurado correctamente.

¿Y ahora qué?

Ya hemos configurado Firebase en nuestro proyecto. Lo primero que vamos a tener es analíticas básicas ya integradas, pero como opciones tenemos bastantes para poder usar:

  • Analytics: Analíticas personalizadas para saber cómo nuestros usuarios usan la app.
  • Authentication: Autenticación para usar redes sociales como login o nuestro propio sistema de login.
  • Database: Bases de datos NOSQL (no son relacionales)
  • Storage: Almacenamiento para guardar cualquier información que queramos y que suban nuestros usuarios.
  • Crash Reporting: Informes de cuelgues, que nos indicarán qué error ha sucedido en nuestra app cuando se le cierre a algún usuario.
  • Notifications: Notificaciones, donde podremos incorporar incluso las notificaciones enriquecidas de iOS 10.
  • AdMob: Publicidad con la red de banners publicitarios de Google.
  • Cloud Messaging: Infraestructura de mensajería multiplataforma.
  • Remote Config: Configuración remota para cambiar valores remotamente que afecten al comportamiento de tu app sin necesidad de hacer un update.
  • App Indexing: Indexación de contenidos para que Google indexe y permita acceder al contenido de tu app directamente desde una búsqueda de Google.

Iremos poco a poco haciendo tutoriales de cómo ir implementando estas funciones para sacar el máximo partido a esta interesante librería de Google que, además, tras la compra de Fabric mejorará aun más. Un saludo y Good Apple Coding.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

UISearchBar

Lecciones por prototipos (III): barras de búsqueda (UISearchBar)

Descubre lo simple que es crear una barra de búsqueda para una vista de tabla, siguiendo paso a paso el proceso mediante un Playground interactivo. Veremos cómo implementarla, controlarla y reaccionar en tiempo real a sus resultados. Algo que no debe faltar en ninguna tabla o elemento que muestre muchos datos, para filtrarlos adecuadamente.