desarrollo ios firebase

Firebase en iOS: servicio de backend para tu app

Toda app moderna se respalda con servicios en la nube que nos permiten: conocer analíticas de uso, escribir y leer de una base de datos, llamar a funciones que corren en un servidor, conocer dónde y cómo casca la app, almacenar datos como fotos y vídeos, etc.

Tienes dos grandes alternativas para abordar este reto. La primera, y más flexible, sería hacerlo tú mismo en tu equipo de desarrollo, con el coste de programación y mantenimiento que ello conlleva. Tienes, como ventaja, el control total sobre los procesos del servidor, y sobre la propiedad de los datos. La segunda, contratar un servicio de backend que te ofrezca todo aquello que una app necesita en la parte del servidor.

En esta línea, hoy te vengo a hablar de Firebase en iOS, la solución de Google para integrar un servicio de backend, y que te ofrece de forma gratuita (hasta que tengas cierta cantidad de tráfico) todo lo que necesita tu app para salir a producción. Además, tienes SDKs para iOS, Android y Web.

Firebase en iOS: ¿Qué se puede hacer con Firebase?

Bueno, pues prácticamente todo lo que tu app necesita para salir al mercado.

App analytics. Las analíticas son fundamentales para conocer qué uso se está dando a tu app, medir y optimizar conversiones a usuarios de pago, analizar el rendimiento de campañas de marketing, lanzar campañas personalizadas a usuarios que cumplen ciertos criterios, y muchas cosas más.

Autenticación. Casi todas las apps que personalizan datos para sus usuarios necesitan de un mecanismo de autenticación. Firebase actualmente soporta hasta 7 mecanismos de autenticación diferentes. Cada uno más o menos cómodo para el usuario: correo electrónico/contraseña, número de teléfono, Facebook, Twitter, Google, GitHub, o autenticación anónima (si el usuario decide registrarse, se transfiere su información al nuevo usuario autenticado).

Base de datos Realtime. Firebase tiene una potente base de datos en tiempo real, que permite almacenar y recuperar información de forma muy rápida aunque desnormalizada. Esta base de datos se llama Realtime Database, tiene un formato parecido a JSON, y nos permite realizar acciones (triggers) sobre cualquier evento que suceda en la misma.

Base de datos Cloud Firestore. Es un producto relativamente nuevo (a fecha de Octubre de 2017), y mejora notablemente la flexibilidad de la Realtime database. Están soportados arrays y otros tipos de colecciones, y tiene una estructura basada en colecciones de documentos, documentos, y mapas de datos. Permite hacer queries de datos mucho más potentes que la Realtime database.

Almacenamiento de datos. ¿Necesitas que tus usuarios suban fotos, vídeos o documentos al servidor? Con el módulo de storage de Firebase se puede conseguir de forma muy sencilla.

Hosting. Firebase también ofrece un servicio de hosting, donde podemos alojar la página web de nuestra app. Ahí podríamos subir, por ejemplo, una landing de la aplicación que lleve a los usuarios a los respectivos market de aplicaciones. Este módulo le daría a la web de tu proyecto el subdominio “firebaseapp.com”.

Cloud functions. También lanzado hace bien poco, Firebase ofrece un servicio mediante el cual podemos desplegar funciones javascript que se ejecutarán en el servidor. Y esto abre todo un abanico de posibilidades. Un posible uso de cloud function puede ser la implementación de un mecanismo de moderación de imágenes subidas por tus usuarios. Esto se podría hacer configurando un trigger que se lanza cada vez que un usuario sube una foto al servidor, de forma que se ejecutaría una cloud function que acceda al API de moderación de contenidos de Google, y la eliminara en caso de que se trate de contenido no apropiado. Esta funcionalidad es super potente, y tienes más ejemplos de lo que se puede hacer con ello aquí.

Test Lab. (De momento sólo disponible para Android) Parece mentira, sí. Pero este módulo permite probar nuestra app en dispositivos alojados en las dependencias de Google. Los dispositivos de prueba tienen todo tipo de configuraciones, y los resultados de las pruebas los puedes ver en la consola de Firebase.

Crash reporting. Es la herramienta que nos va a decir qué casques tiene nuestra app, y a cuántos usuarios afectan dichos casques. Google adquirió recientemente Crashlytics, la herramienta de crash reporting de facto. Ahora mismo en la consola de Firebase nos recomiendan seguir con Crashlytics, pues dentro de poco harán la migración total a la consola de Firebase.

Performance reporting. Este módulo nos ofrece informes sobre los problemas de rendimiento que pueda tener nuestra app, ayudándonos a detectar y solucionar posibles cuellos de botella. Por defecto nos indica el tiempo de lanzamiento de la app mediante la traza “app start”, pero podemos configurar nuestras propias trazas para medir procesos internos de nuestra app.

Notificaciones. Esta herramienta nos permite programar el envío de notificaciones, estableciendo el título de la notificación y el cuerpo, así como a quién va dirigida. Podemos elegir como destinatarios dispositivos concretos, o bien segmentos de usuarios que hayamos creado previamente en el apartado de analíticas. Podemos también, en caso de tratarse de notificaciones destinadas a conseguir conversiones, medir dichas conversiones.

Cloud messaging. Firebase Cloud Messaging (FCM) es un módulo de mensajería multiplataforma que nos permite enviar mensajes a dispositivos. El servicio de notificaciones está desarrollado sobre cloud messaging, por lo que éste nos ofrece más flexibilidad y complejidad.

Remote config. Este módulo nos permite establecer un conjunto de configuraciones para nuestra app. Es un mapa asociativo de clave valor. Cada configuración (par clave-valor) puede aplicarse bien a toda la base de usuarios, o bien a cierto segmento: por ejemplo, a usuarios de iOS, o a usuarios franceses. Mediante remote config podemos hacer que nuestra app presente un interfaz ligeramente diferente para determinado segmento de usuarios con el fin de aumentar las conversiones, y medir los resultados. Todo mediante un flag en el servidor.

Dynamic links. Esta tecnología nos permite llevar a nuestros usuarios a determinada sección de nuestra aplicación, tengan la app instalada o no. Podemos configurar cómo se comportará el enlace, tanto si este es abierto desde un navegador, como si es abierto desde nuestra app iOS. También añadir podemos meta etiquetas, que definirán cómo se mostrará nuestro enlace en redes sociales. Además, podremos configurar parámetros UTM para hacer un seguimiento de la campaña. Por último, lo cual me parece súper potente, los dynamic links sobreviven a las instalaciones a través del Apple Store. Es decir, cuando un usuario abre nuestra app por primera vez, podemos saber si la instaló debido a que clicó en un dynamic link determinado, de forma que nada más instalar la app, podremos llevarle al sitio que él quería antes de instalarla.

App indexing. Es el servicio que integra los contenidos de tu app con el motor de búsqueda de Google. Si el usuario tiene nuestra app instalada, y busca un término en google cuyo contenido está en la app, Google le redirigirá a la sección de la app concreta. Si no la tiene instalada, le mostrará una tarjetita de instalación y le dirigirá al Store.

App invites. Es un servicio basado en Dynamic Links, y se usa para que tus usuarios puedan recomendar tu app a sus contactos. Se basa en la premisa de que la mayoría de las instalaciones vienen por el boca a boca, por habérselo escuchado a alguna amiga. Un caso de uso que nos permite implementar App invites es enviar códigos de promoción, como hace Just-eat. En este caso, Firebase presenta al usuario un listado de sus contactos. Cuando selecciona contactos, Firebase decide si mandarles la invitación por email o SMS, dependiendo del contacto. Cuando el contacto recibe la invitación y tiene la app instalada, le enviará a una sección concreta (codificada en los metadatos de la invitación, que no deja de ser un Dynamic link). Si no tiene la app instalada, le enviará al Store, y una vez abra la app, detectaremos que el usuario procede de una invite, y le aplicaremos el descuento prometido. Maravilloso.

Admob. Es un sistema que permite monetizar tu app mediante anuncios dirigidos. Si se usa conjuntamente con Firebase, puedes obtener mucha información para su posterior análisis y uso dentro de la app. Puedes integrar banners, intersticials, y ads de vídeo.

Firebase en iOS: Precios

¿Qué te parece si te digo que todo esto lo tienes gratis con la capa de precio llamada Spark? Firebase funciona con 3 capas de precio. La capa Spark es gratuita hasta cierta cantidad de transferencia de datos. Tienes el plan Flame, por 25 dólares al mes, e incluye mayor tráfico de datos y de almacenamiento en base de datos y hosting. Y por último, está la capa Blaze, cuyo modelo es el pago por uso.

Es decir, con este sistema de precios puedes empezar de forma gratuita, y luego ajustar el modelo de pago al crecimiento de tu negocio.

Conclusión

Firebase es una herramienta que se ha convertido esencial en mi día a día como desarrollador iOS frontend nativo, por varios motivos:  no necesitas mucho conocimiento de backend para usarla; es gratuita hasta que tengas cierta cantidad de tráfico; es autogestionada y no necesitas un hosting; te brinda todo lo que necesitas para poner tu prototipo iOS en producción. Eso sí, puede no ser muy flexible, y dependiendo del dominio de tu app, puede no encajarte.

Además, Firebase en iOS se integra de manera muy sencilla: es posible usar el gestor de dependencias Cocoapods, y existe un pod para cada módulo de Firebase que quieras integrar en tu app.

¿Y tú? ¿Qué backend usas en tus apps? ¿Has usado Firebase? ¿Qué opinión te merece? ¡Dímelo en los comentarios!

No hay comentarios

Deja un comentario