Guías
Trending

Instalar Firebase en tu proyecto en Swift SIN usar CocoaPods

CocoaPods es el peor invento jamás realizado por ser humano viviente. Pero a veces se nos obliga a usarlo para instalar librerías de terceros. Aprende a cómo instalar Firebase sin necesidad de ensuciar tu proyecto.

Resumen del artículo

  • Instalar Firebase en un proyecto iOS es siempre un problema porque requiere, obligatoriamente, que usemos CocoaPods ya que es la forma oficial que usa Google para esta solución. Sin embargo aquí os enseñamos a hacerlo manualmente sin poner este gestor que enlentece y llena de basura vuestros proyectos, además de dificultar su gestión.

Firebase es un conjunto de librerías que nos aportan multitud de funcionalidades que nos facilitan la vida en nuestro desarrollo. Aquellas que son obligatorias son las librerías de analítica, que llevan el núcleo funcional de estas. A partir de ahí, podemos elegir entre una buena variedad donde acaban de incluirse las librerías de ML Kit, las librerías de Machine Learning de Google para uso de modelos entrenados preparados para funcionalidades concretas.

Firebase se compone de las siguientes librerías, a fecha de mayo de 2018: A/B Testing, AdMob, Analytics (de instalación obligada), Auth, Crash (o Crashlytics para los amigos, antiguamente parte de Fabric), Database, DynamicLinks, FireStore, Functions, Invite, Messaging, Performance, RemoteConfig y Storage. Además se suman las librerías de ML Kit que serían: MLModelInterpreter, MLVision, MLVisionBarcodeModel, MLVisionFaceModel, MLVisionLabelMode y MLVisionTextModel.

A nivel de dependencias, todo Firebase depende del framework de Analytics, siendo todos los demás opcionales. Pero si usamos cualquiera que pertenezca en ML Kit al grupo Vision, hemos de instalar MLVision antes de cualquiera de los otros.

Vamos a comenzar a ver cómo realizar la instalación.

Configurando Firebase

Para poder usar Firebase necesitamos un proyecto. Es tan simple de crear como ir a la consola de FireBase en la URL: https://console.firebase.google.com/ (te lo ponemos sin enlace para que copies y pegues y no salgas del artículo). Obviamente habremos de haber iniciado sesión con nuestro usuario de Google. Una vez ahí nos aparecerán los proyectos que tengamos creados dentro de Firebase o si no tenemos ninguno nos invitará a “Añadir Proyecto” o “Ver un proyecto de demostración”.

Firebase Guía #1

Le damos a “Añadir Proyecto” o elegimos el que usemos si ya está creado. Si le hemos dado a añadir nos pedirá el nombre del mismo. Le damos uno y listo. Iremos a la pantalla de configuración y bienvenida. En ella pulsamos en Add Firebase to your iOS app.

Add Firebase to your iOS App

En la siguiente pantalla nos pedirá datos de configuración de la app: el bundle de la misma (que ha de coincidir obviamente con la app en que vamos a integrar Firebase) y datos opcionales donde podremos introducir un apodo a nuestra app o si esta está en producción, el ID que tiene la misma en el App Store.

iOS Bundle

Seguimos y le damos a “Continue” con lo que ahora nos pedirá que bajemos un fichero .plist que es imprescindible para la configuración del proyecto. Un fichero llamado GoogleServices-info.plist.

GoogleServices-info.plist

Una vez bajado lo reservamos para más tarde. Pulsamos en “Continue” y vamos al siguiente paso. Aquí es donde hemos de tener mucho cuidado y no hacer nada que no debamos, si no queremos caer en el yugo de CocoaPods. Vamos a fijarnos en la flecha que señala a la posibilidad de descargar Firebase como un ZIP. Donde pone Download ZIP.

Download ZIP

Pulsamos ahí, en Download ZIP y se nos abrirá una ventana nueva (o pestaña) que nos llevará a las incompletas instrucciones de Google para instalar Firebase sin CocoaPods. En ellas, la única parte a la que hay que hacerle caso es a la que nos dice que bajemos el ZIP con toda la librería de Firebase que tiene un peso de 500MB, aproximadamente. Tranquilos: no hay que ponerlo todo en nuestra app si no queremos.

Integrate without CocoaPods

Cuando se baje el ZIP, lo más normal es que el sistema lo descomprima automáticamente. Si no, lo hacemos nosotros. Bien, ya tenemos todo preparado para empezar a trabajar con Xcode, así que allá vamos.

Integrando Firebase en nuestro proyecto Xcode

Salvo por un pequeño detalle que veremos en su momento, esta guía sirve igual para Xcode 8 y 9, y de hecho Firebase es compatible con ambas versiones del IDE de Apple. De hecho, el requisito mínimo es Swift 3 y Xcode 8 en la versión actual.

Abrimos nuestro proyecto, o lo creamos desde 0 con la plantilla de Single View App y comenzamos la magia siguiendo los siguientes pasos. Primero, cogemos el fichero GoogleServices-info.plist que habíamos bajado y lo copiamos en nuestro proyecto.

GoogleServices-info.plist

Una vez copiado el archivo, tenemos que configurar algunos aspectos del proyecto de Xcode. Veamos la imagen más abajo y sigamos los puntos.

Other Linker Flags

Pulsamos en la raíz del proyecto (la parte más alta del mismo que en el navegador de proyectos (punto 1) y luego en Build Settings (punto 2). En el buscador arriba a la derecha (punto 3) escribimos linker y entonces solo nos aparecerán las opciones que tienen esa palabra. Buscamos la opción Other Linker Flags (punto 4) y a su derecha, donde irían los valores, hacemos doble click. Eso abrirá una pequeña ventana emergente como la que vemos en la imagen (punto 5) y pulsamos el símbolo + que hay abajo a la izquierda de dicha ventana (punto 6). Tras esto nos dejará escribir donde señala el punto 5 y pondremos -ObjC (respetando mayúsculas y minúsculas).

No abandonamos esta opción de Build Settings y ahora borramos en el punto 1 de la nueva imagen bajo estas líneas donde ponía linker para escribir header. Una vez vistas nuevas opciones, buscamos una llamada User Header Search Paths (punto 2). La última opción que aparece en el epígrafe Search Paths.

User Header Search Paths

Aquí le vamos a dar la ruta donde va a encontrar las diferentes librerías (frameworks) que vamos a usar. Y para ello, el fichero más importante es el de cabecera. Pulsamos dos veces a la derecha de User Header Search Paths (punto 3) y ponemos $(PROJECT_DIR). Veremos que aparece la ruta hasta nuestro proyecto cuando le demos a ENTER.

Cabeceras

Ahora hemos de ir a la carpeta donde hemos bajado toda la SDK de Firebase y buscar dos ficheros clave: Firebase.h y module.modulemap y los arrastramos a la raíz del proyecto, al nivel más alto de carpetas (como se ve en la imagen a la derecha). Es importante que hagamos esta operación bien, porque si los ponemos en otro sitio diferente, el proyecto no encontrará las rutas y no funcionará o no nos dejará importar más tarde de forma correcta. Al mover ha de estar marcado Copy ítems if needed pero la opción Add to targets a donde tenemos el proyecto o sus tests unitarios no es necesario que estén marcadas. En Added folders que esté elegido Create folder references.

Header File

Ya está configurado Firebase a nivel de proyecto. Ahora solo nos queda crear la correspondiente cabecera Bridging Header que nos va a permitir usar Objective-C con Swift. Para ello pulsas CMD+N o nos vamos a File, New, New File y elegimos un fichero de tipo cabecera .h.

Hemos de crearlo con el nombre Bridging-Header.h y muy importante: hay que crearlo en el grupo raíz del proyecto para que esté a la misma altura que los ficheros Firebase.h y module.modulemap que creamos anteriormente.

Bridging-Header.h

Ahora solo nos queda volver a la opción de Build Settings que debería seguir abierta, y sin cambiar nada en el buscador donde habíamos puesto header, buscamos una nueva opción llamada Objective-C Bridging Header (punto 1). Damos doble click a la derecha y en sus opciones escribimos en la primera línea $(SRCROOT)/Bridging-Header.h (punto 2). De esta forma sabrá encontrar el fichero puente entre Swift y Objective-C.

Un paso menos. Ahora nos vamos al recién creado fichero Bridging-Header.h y borramos su contenido (podemos dejar los comentarios si queremos) y ponemos una simple línea:

Listo. Ya tenemos instalado y configurado Firebase. Pero claro, no hemos puesto framework alguno todavía, así que vamos a poner el obligatorio que es el que hay en la carpeta Analytics de lo que nos hemos bajado. Primero, en nuestro proyecto, en cualquier lugar que queramos pulsamos botón derecho en el navegador de proyectos donde están todos nuestros archivos creamos un nuevo grupo sin carpeta: elegimos New Group Without Folder. Esto si estamos en Xcode 9. Si es Xcode 8 elegimos New Group nada más. De esta forma, lo que copiemos en dicho grupo no heredará las rutas del proyecto de forma estricta (en el caso de Xcode 9). Lo llamamos Frameworks, por ejemplo.

Vamos a la carpeta Analytics y vemos sus ficheros, que seleccionamos y arrastramos. Todos ellos hacia el grupo recién creado. Elegimos al igual que antes Copy ítems if needed y esta vez (si no lo está) marcamos también Add to targets. Ya hemos copiado la base de Firebase y el núcleo con la librería de analíticas, así que podemos pulsar (por fin) CMD+B para que todo compile.

Si hemos seguido los pasos de manera estricta, veremos que ya no da error alguno y ya tenemos configurado Firebase. Ahora, nos queda la última configuración que nos dejamos en la web: la entrada e inicialización de la librería en el AppDelegate.swift.

Vamos a este archivo en nuestro proyecto y debajo de import UIKit ponemos import Firebase. Luego vamos al primer procedimiento, y lo dejamos como en el ejemplo de abajo.

Si ya tenemos más cosas en dicha función, solo hay que añadir FirebaseApp.configure() que es la instrucción clave.

Listo sin CocoaPods

Cada vez que queramos usar un nuevo framework de la lista de Firebase, solo tenemos que copiar todo lo que haya en su carpeta correspondiente dentro de nuestro proyecto. Nada más. Es importante recordar que NO hay que copiar la carpeta: copiaremos el contenido de cada una arrastrando todo a nuestro grupo Frameworks. Así de sencillo.

Ya sabemos que puede que os suponga un lío y muy tedioso y que tal vez sea más fácil usar CocoaPods. **Pero creedme que será mucho más fácil gestionar este proyecto y más rápido a la hora de compilar y probar.

¿Y qué hacéis si hay una actualización? Bajar las nuevas versiones, borrar los ficheros antiguos del grupo Frameworks y arrastrar los nuevos. No hay que tocar nada más.

Esperemos que os sea útil y si queréis hacer instalaciones manuales con otras librerías, sabed que estos puntos que hemos visto son claves casi para cualquier instalación. Si algo os va mal o no funciona, no dudéis en comentar el artículo y responderemos a vuestras dudas, pero antes repasad bien por si se os ha escapado algo y no tengáis miedo de empezar de 0 si es necesario. Un saludo y Good Apple Coding.

Etiquetas

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.

Artículos relacionados

Close
Close