Continuado con la intención de seguir los CodeLab de Firebase, vamos dedicar este post a comentar las experiencias con el CodeLab de Firebase para iOS. Este post es la versión Swift.
El CodeLab que seguimoes es el sigueinte Firebase iOS Codelab Swift (starter) {:target=”cdlios”}
Hay algunos prerrequisitos que hay que complir, como tener el Xcode, el CocoaPod, pero lo que es nuevo para el desarrollador de iOS es que hay que [configuar iOS para Firebase] (https://firebase.google.com/docs/ios/setup){:target="cdls"}
Comencemos
Directorio de trabajo:
/Users/pabloin/Desktop/NoCuestaNada/Mob/GitHub-tmp/googlesamples/firebase/friendlychat
#Utilizamos:
/Users/pabloin/Desktop/NoCuestaNada/Mob/GitHub-tmp/googlesamples/firebase/friendlychat/ios-starter/swift-starter
Clonamos el proyecto:
$ git clone https://github.com/firebase/friendlychat Obervemos que cuando clonamos el proyecto, nos baja todas las versiones de clientes de Firebase: O sea, versiones WEB, iOS objective c, iOS swift, Android:

En este post, utilizamos los de swift: swift y swift-starter
La diferencia, es que el “start” tiene el código de inicio, y que nos permite a nosotros agregarle más código a medida que avanzamos con el CodeLab.
Paso 01: Instalamos Cocoa y CocoaPod
Este es uno de los primeros requisitos:
¿Que son los pod? En dos palabras, los pod son un gestor de dependecias para proyectos del framework Cocoa en iOS y Swift. Mas info en https://cocoapods.org/ y wiki Cocoa
Para instalar Cocoa. tengo que ejecutar:
$ sudo gem install cocoapods Paso 02: Ejecutamos pod update sobre el proyecto Firebase
Vamos al directorio ios-starter/swift-starter y ejecutamos pod update
$ pwd /Users/pabloin/Desktop/NoCuestaNada/Mob/GitHub-tmp/googlesamples/firebase/friendlychat
$ cd ios-starter/swift-starter
$ pwd /Users/pabloin/Desktop/NoCuestaNada/Mob/GitHub-tmp/googlesamples/firebase/friendlychat/ios-starter/swift-starter Luego ejecutamos según el Codelab
$ pod update Me dio el siguiente error:
$ pod update
[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.
You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
Lo cual solucioné, ejecutando manualmente el Git con lo siguiente:
$ cd ~/.cocoapods/repos
$ git clone https://github.com/CocoaPods/Specs.git masterCon lo que finalemnte anduvo ok, ejecutado dentro del directorio … friendlychat/ios-starter/swift-starter
$ pod update Los paquetes que instalo, son los enumerados en Podfile
$ cat Podfile
# FriendlyChat Codelab
use_frameworks! platform :ios, '7.0'
pod 'Firebase/Storage'
pod 'Firebase/AdMob'
pod 'Firebase/Auth'
pod 'Firebase/Crash'
pod 'Firebase/Database'
pod 'Firebase/RemoteConfig'
target 'FriendlyChatSwift' do endCon este paso, sabemos que cumplimos con el primer requerimiento de tener instaldo Cocoa y CocoaPod
Paso 03: Compilamos la aplicacion
Con el Xcode abrimos el proyecto FriendlyChatSwift.xcworkspace:

Que nos permite abrir y compilar la aplicación:

Paso 04: Create Firebase console Project
El proyecto FriendlyChat de Firebase ya lo había creado cuando segui el CodeLab de la parte web.
El proyecto FriendlyChat estaba creado:

Seleccionamos iOS integración.

Agrgamos el bundle y el ID:

Teneoms que copiar el GoogleService-Info.plist dentro del Xcode:

El siguiente paso, por ahora no lo ejecutamos:

Continuamos con el copiado del archivo GoogleService-Info.plist al Xcode:

El archivo esta agregado:

Chequear que esté el import Firebase en AppDelegate.swift, FCViewController.swift:

Esta el import en FCViewController.swift

Y tenemos que agregar la siguiente linea de codigo en AppDelegate.swift que configura Firebase, siguendo lo que dice en: GoogleService-Info.plist a

¿Podemos finalizar el wizard que había quedado pendiente en Firebase? … si, podemos:

De esta forma vemos que en Firebase tenemos el registro de la aplicación de iOS
Paso 05: Reglas de Acceso a la aplicación:
En la consola de Firebse, agregamos las restricciones:
{ "rules": { "messages": { ".read": "auth != null", ".write": "auth != null" } } } Vamos a la sección de Database:

Las reglas (y el simulador):

Paso 06: Firebase Authentication
De nuevo, vamos a la consola de Firebase para configurar la autenticación, pero habilitamos autenticación por mail (recordemos que en el CodeLab de la parte web la autenticación fué por Google):

agregamos el pod ‘FirebaseAuth’
pod 'FirebaseAuth' duda: ¿No sera pod ‘Firebase/Auth’… creo que hay un error de tipeo? Respuesta: Si miramos el proyecto swift en vez del swift-starter vemos que efectivamente es un error de tipeo.
Paso 07: Pausa - Ejecutamos el proyecto finalizado
Vemos a ejectuar la versión finalizada del proyecto: O sea swift en vez del swift-starter
Creo que este es un buen momento para hacer esto, porque ya está configurada la consola de Firebase.
Lo unico que tenemos que ajustar son dos cosas: GoogleService-Info.plist y la dirección dada por Firebase
Y vemos el resultado, que efectivamente la aplicación levanta:

Se ve en la aplicación finalzada,
- La publicidad AdMob
- La Autenticación, etc.
Observemos como parte de los chats ingresados, quedan cargados dentro de la plataforma Firebase:

También están las imágenes subidas como adjuntos:

De esta manera, damos por cerrado el post.
- CodeLab (11) ,
- GoogleSamples (11) ,
- Android (13) ,
- Firebase (4) ,
- iOS (4) ,
- swift (1) ,
- FriendlyChat (4)