Tutorial Firebase: cómo incluirlo en tu proyecto manualmente

Programación Comentarios desactivados en Tutorial Firebase: cómo incluirlo en tu proyecto manualmente

Mientras la distribución de las librerías de Firebase siga en estado experimental a través de Carthage, y si, como yo, no estáis por la labor de hacer una cafetera cada vez que queráis compilar vuestro proyecto con Cocoapods incluido, es muy sencillo integrar las librerías de Firebase manualmente en vuestro proyecto de Xcode.

En esta entrada vamos a seguir uno a uno los sencillos pasos necesarios para incluir las librerías de Firebase en un .xcodeproj de forma manual. Empezando por los SDK base obligados por Google, hasta cualquiera de los específicos de cada producto que pone a nuestra disposición.

Veremos también cómo enlazar con el artículo previo Automatizando la configuración de tus compilaciones, definiendo los parámetros de conexión en función del entorno o proyecto.

Descargar la última versión de las librerías SDK

Primero deberemos descargar la última versión de los SDK que Google pone a nuestra disposición como librerías estáticas. Podéis encontrarlos en el apartado Integrar sin Cocoapods de su tutorial oficial. El tamaño total es de casi 600 megas, así que mejor si hicisteis caso al último comercial que os ofreció velocidad decente para vuestra conexión.

Una vez descomprimido el zip encontraréis las librerías divididas por carpetas, siendo el contenido de Analytics obligatorio para cualquiera que deseéis integrar. Ya sabéis, no vaya Google a perderse algo de lo que hacéis con vuestra vida.

Generar la estructura de carpetas y grupos en Xcode

Carpetas

A la hora de incorporar las librerías que queráis (y la que no), podéis optar por muchas formas de organización, tanto a nivel de archivos como de Xcode. Personalmente me gusta la siguiente estructura a nivel de archivos:

  • Carpeta contenedora del proyecto
    • proyecto.xcodeproj
    • proyecto
      • AppDelegate.swift
    • Frameworks
      • Firebase
        • FirebaseAnalytics.framework
        • FirebaseCore.framework
        • Firestore
          • Resources
        • UI
          • FirebaseAuthUI
            • Strings

Dicho con palabras, la carpeta Frameworks en la raíz del proyecto, y dentro de ésta catalogados por proveedor, Firebase en este caso. A partir de aquí, ya que varias librerías usan los mismos *.framework, opto por no separarlos, así no corremos el riesgo de tenerlos duplicados, y gracias a los grupos sin carpeta de Xcode podemos tenerlos igualmente organizados desde el IDE.

Para las librerías con recursos específicos, sí que los agrego por carpetas, como es el caso en el ejemplo de Firestore y UI.

Xcode

En Xcode replicamos la estructura hasta llegar a Firebase, incluido. Una vez aquí generamos grupos para cada librería, pero sin carpeta. Así contamos con la ventaja de verlo todo perfectamente organizado por servicio, pero no corremos el riesgo de tener archivos duplicados.

Incluir los SDK base

Analytics

Como decía, sea cual sea el servicio de Firebase que queráis incluir en vuestra súper aplicación, deberéis incorporar también las librerías de Analytics.

Podéis llegar a Roma por dos caminos distintos, creando la estructura desde Xcode y copiando los archivos al arrastrarlos, o hacer esto mismo desde el Finder y copiar directamente los archivos, para arrastrarlos después.

Así que, primer paso, cread la estructura de grupos (con carpeta) y el grupo (sin carpeta) Analytics.

Para comenzar con el tutorial de firebase y Xcode es importante crear los grupos y sus carpetas correspondientes con Analytics y valorar si son necesarias

Arrastrad en proyecto/Frameworks/Firebase/ los 8 archivos que encontraréis en la carpeta Analytics del contenido descomprimido del zip descargado. Marcad copiar si es necesario si arrastráis desde la descarga, y marcad a que Targets queréis que se añadan las librerías, recordad que esto siempre es modificable más tarde.

El siguiente paso del tutorial de firebase es arrastrar los archivos que nos encontramos en la carpeta de Analytics y marcar los Targets necesarios

El siguiente paso del tutorial de firebase es arrastrar los archivos que nos encontramos en la carpeta de Analytics y marcar los Targets necesarios

En la opción de incluir firebase manual hay que incluir groups y target

Para finalizar este primer paso del tutorial de Firebase hay que fijarse bien en que todos los grupos y targets estén correctamente añadidos en Analytics

Comunes

Además, para que todo fluya, se deben incluir los ficheros module.modulemap y Firebase.h, en este caso los arrastraremos al grupo Firebase, aunque estarán al mismo nivel en el sistema de archivos. OJO, en este caso no marcaremos añadir a los Targets.

Para continuar con el tutorial de Firebase hay que añadir los ficheros ficheros module.modulemap y Firebase.h que son fundamentales

Module.modulemap y Firebase.h son archivos que deben añadirse a la carpeta correspondiente de Firebase sin añadir los Targets esta vez

los ficheros module.modulemap y Firebase.h de Firebase estarán en el mismo nivel de archivos pero en su carpeta correspondiente llamada Firebase

Incluir las librerías específicas

Listo, ahora haríamos lo propio con el resto de librerías que queramos usar: Firestore, Dynamic Links, Storage, etc.

Recordad, si la carpeta de la librería en cuestión tiene la carpeta Ressources, como por ejemplo en el caso de Firestore, deberéis crear dicha estructura como grupos de Xcode (con carpetas) y arrastrar el contenido.

  • Frameworks
    • Firebase
      • Firestore
      • Resources
      • InAppMessagingDisplay
      • Resources

Ajuste de tornillos

Build Settings

Por último, hay que realizar un par de ajustes en Build Settings para que no haya quejas por parte del compilador.

  • Añadir el flag -ObjC en el apartado Other Linker Flags.
  • Añadir la ruta de la carpeta que contiene el fichero module.modulemap en el apartado User Header Search Paths

En este tutorial de añadir Firebase manualmente también contiene retocar Build Settings para que no haya problemas de ningún tipo con el compilador

Hay que añadir el flag -ObjC en el apartado Other Linker Flags y la ruta de la carpeta que contiene el fichero module.modulemap 

Firebase-Bridging-Header.h

Si estáis usando Swift,  hay que generar el fichero Bridging-Header.h para importar las cabeceras desde Firebase.h. La manera más sencilla y para toda la familia es crear un nuevo fichero en Objective-C y dejar que Xcode se encargue del resto. En el fichero creado automáticamente deberemos añadir la línea mágica:

#import “Firebase.h”

Al fichero creado anteiormente Bridging-Header.h deberemos añadir automáticamente la línea #import "Firebase.h" si utilizas Swift

Un nuevo fichero en Objective- C es fundamental para continuar con Firebase

Configuración y conexión

En este punto el proyecto ya debería compilarse sin problemas.

Por último, debemos indicarle a Firebase nuestros datos de conexión para que pueda acceder al proyecto y todos sus servicios. Si recordáis la última entrada, Automatizando la configuración de tus compilaciones, haremos uso del fichero xcconfig para poder conectar con distintos proyectos según el entorno, pudiendo diferenciar bases de datos, archivos, usuarios, etc.

Fichero GoogleService

Firebase nos ofrece en la sección Configuración/General/Tus aplicaciones la descarga del fichero GoogleService_Info.plist para que, una vez añadido al proyecto en Xcode, la librería se configure automáticamente. Para diferenciar los ficheros según el entorno suelo añadir la extensión .entorno justo delante de .plist, resultando según el caso:

  • proyecto
    • Resources
    • Firebase
      • GoogleService_Info.development.plist
      • GoogleService_Info.staging.plist
      • GoogleService_Info.plist

De nuevo no deberéis añadir el fichero a ningún Target al arrastrarlo al proyecto

Lectura

Para recoger los datos del fichero correcto, habiendo seguido los pasos de la última entrada, debemos incluir en los ficheros xcconfig Info.plist lo siguiente:

 

Recapitulando

Y eso es todo amigos, ya tenemos nuestro proyecto conectado a los servicios de Firebase que queramos, a través de librerías estáticas, añadidas de forma manual. También queda configurada la conexión automáticamente en función del entorno.

Ventajas: la compilación va a ser mucho más rápida y nadie va a hurgar en la configuración de nuestro proyecto, cosa que se agradece con un nivel de complejidad medio/alto.

Inconvenientes: la actualización de las librerías es manual, teniendo que revisar cada cierto tiempo si existen nuevas versiones.

Author: Nicolás Landa

USO DE COOKIES

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Enviar un mail
Mandar un Whatsapp
Llamar por teléfono