iOS

¿Qué es Firebase?

Si trabajas haciendo apps para móviles, sabes lo complicado que resulta a veces realizar algunas operaciones, sobre todo la gestión multidispositivo con la base de datos. Por ejemplo a la hora de realizar aplicaciones muy grandes como CLMs, hay una enorme inversión de horas de trabajo para crear un backend poderoso que nos permita sincronizar de forma bidireccional la comunicación entre dispositivo y servidor aunque estemos desconectados de la red.

Firebase se podría decir que es un framework de trabajo de Google que nos ayuda con esto y con muchas cosas más. Aunque tiene soporte para web, está más orientada al desarrollo móvil iOS y android, para que los desarrolladores no tengan que preocuparse de desarrollar y mantener un servidor con su backend, además de ofrecer herramientas para la interconexión entre la app y el backend.

 

Firebase dispone de diferentes funcionalidades, entre las que se encuentran:

  • Base de datos en tiempo real: una base de datos gestionada por Google basada en JSON que nos permite, mediante eventos, tener funcionalidades en tiempo real. También nos permite llevar una gestión automática de los datos en el caso de que la aplicación se encuentre sin conexión, sincronizando todos los cambios una vez haya recuperado dicha conectividad.
  • Sistema de autentificación de usuarios tanto por email/contraseña como por otros sistemas como facebook, twitter, google, github, etc.
  • Cloud Messaging para el envío de notificaciones push a los dispositivos de una forma sencilla.
  • Un sistema de almacenamiento y sincronización de ficheros con el dispositivo.
  • Un sistema de hosting estático, ideal para realizar páginas estáticas o utilizarlo a modo de CDN de la app.
  • Sistema de reporting de errores.
  • Laboratorio de pruebas, para realizar pruebas en los dispositivos.
  • Funciones lambda basadas en NodeJS para realizar mediante eventos ciertas operaciones.
  • Conexión con AdMob para la monetización de la aplicación.
  • Configuración remota de la aplicación, pudiendo cambiar dinámicamente funcionalidades de la misma.

Lo más llamativo de Firebase es el Free Tier que ofrece, puesto que un proyecto para arrancar es gratuito, pudiendo dar el salto al pago cuando la aplicación haya crecido lo suficiente. Como opciones de pago disponemos de una tarifa plana de 25$ al mes que nos ofrece lo necesario para funcionar en proyectos de mediana envergadura. También disponemos de un «pago por uso» que nos permite pagar por aquellos recursos que utilicemos y que nos permitirá, de una forma escalonada, ir aumentando los costes poco a poco, según va creciendo nuestra aplicación.

¿Qué es un protocolo de ObjetiveC y para que se usan los protocolos en ObjetiveC?

Cuando programamos en ObjetiveC para iphone o ipad, utilizando funciones mas avanzadas de la interfaz gráfica nos encontramos con delegados, llamados también delegates. En estos casos, por ejemplo cuando tenemos un UIScrollView que captura el evento – (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView que utilizamos para controlar cuando ese UIScrollView se ha parado. Para controlar esto lo hacemos mediante el uso de los delegados. Pero mejor verlo con un ejemplo que se vea mas claro.

@implementation IndalcasaViewController

– (void)viewDidLoad {
[super viewDidLoad];
self.indalScroll.delegate = self;
}

– (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
int page = scrollView.contentOffset.x / scrollView.frame.size.width;

NSLog(@»Hemos cambiado a la pagina %i», page);
}

@end

Tras este ejemplo vemos como funciona un delegado en una clase normal de ObjetiveC. Pero aún no entendemos lo que significa ser un delegado. Un delegado no es mas que un nombre de convención, que podemos llamar como queramos y que utilizaremos como disparador, donde el objeto que está almacenado implementa una serie de funcionalidades definidas en un protocolo.

Se que ahora ha quedado claro del todo :P, pero mejor verlo en un ejemplo.

@interface IndalcasaViewController : UIViewController
@end

Como vemos en el ejemplo anterior, a la hora de extender la clase UIViewController decimos que implementa el protocolo UIScrollViewDelegate. Para los mas veteranos desarrolladores, un protocolo no es mas que una interfaz. Para los mas novatos, una interfaz es como una clase donde se definen llamadas pero no se implementa código.

Para verlo todo mas sencillo, vamos a poner un último ejemplo. Lo que vamos a hacer es definir otro UIViewController al que instanciaremos en el viewDidLoad y que implementará un metodo vacío llamado «cambioPagina» que recibirá la página por parámetro.

IndalcasaViewController.h
@interface IndalcasaViewController : UIViewController

@property UIViewController delegate;
@property (weak, nonatomic) IBOutlet UIScrollView *indalScroll;

@end

IndalcasaViewController.m
@implementation IndalcasaViewController

– (void)viewDidLoad {
[super viewDidLoad];
self.indalScroll.delegate = self;
}

– (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
int page = scrollView.contentOffset.x / scrollView.frame.size.width;

NSLog(@»Hemos cambiado a la pagina %i», page);

[self.delegate cambioPagina:page];
}

@end

DelegadoViewController.h
@interface DelegadoViewController : UIViewController
@end

@protocol IndalcasaDelegate

-(void)cambioPagina:(int)pagina;

@end

DelegadoViewController.m
@implementation DelegadoViewController

– (void)cambioPagina:(int)pagina {
NSLog(@»Hemos cambiado a la pagina %i con un delegado», pagina);
}

@end

Como vemos en el ejemplo, lo que hacemos es que cuando capturamos el evento scrollViewDidEndDecelerating, que nos indica que se ha parado el scroll, llamamos a un delegado, previamente seteado que implementa el protocolo (intefaz) IndalcasaDelegate. Como sabemos que el delegado, al implementar el protocolo IndalcasaDelegate tiene un método cambioPagina que recibe un entero con la página, podemos llamar al método desde el delegado.

Comentar también que en muchos casos, nos encontraremos delegados de tipo id y no de un tipo concreto. Los tipos id vendrían a ser tipos de objetos genéricos, algo parecido al object de cualquier lenguaje.

Overflow scroll fluido para safari mobile

Algunos desarrolladores que hacemos webs para dispositivos móviles como puede ser un iPhone o un iPad, a veces nos encontramos con un gran problema y es que si queremos hacer un scroll horizontal funciona pero no queda muy fluido. Supongamos que tenemos una pequeña página y a modo de appstore, queremos tener un cuadro que tenga varias capturas de pantalla o imágenes y que entre las imágenes, hemos hecho un scroll. Si probamos esto en un iPad o un iPhone, veremos como el scroll no es muy fluido, va como a tropezones, pero la solución es bien fácil, solo hay que cambiar un pequeño estilo de CSS.

Para solucionar esto podemos utilizar -webkit-overflow-scrolling: touch; para indicarle a safari mobile que queremos hacer un scroll con el dedo y de esta forma, el scroll ira fluido y no se trabará.

Os dejo un ejemplo de como quedaría:

Mobile test

Phonegap, programar para móviles en HTML5

Programar para dispositivos móviles a veces es una cuestión complicada ya que cada dispositivo cuenta con sus propias herramientas, lenguajes y peculiaridades. Por ejemplo, si queremos programar en Windows Phone, usaremos HTML o C# (.Net), mientras que para Android lo haremos en Java y en Objetive-C para IOS. ¿Cuantos de nosotros tiene tiempo para aprender todo esto como hobby y no de forma profesional? ¿No sería maravilloso poder hacer las aplicaciones móviles sencillas utilizando HTML?

PhoneGap o también conocido como Apache Cordova es un framework que desarrolla (compró) Adobe y que permite crear aplicaciones para dispositivos móviles utilizando HTML. Realmente PhoneGap crea una vista web donde cargará el contenido de la carpeta www del proyecto, cargando en todo momento páginas web en HTML.

Esto esta muy bien, pero ¿Cómo trabajo con los datos? Es fácil, con Javascript. PhoneGap provee de un API en Javascript para interactuar con el teléfono, por ejemplo para el acceso a base de datos, a la cámara, GPS, contactos, etc. Por tanto trabajar con PhoneGap es como hacer una web utilizando un API de javascript especial. También existe la posibilidad de trabajar nativamente, ya que PhoneGap lo único que hace es crear un proyecto especial para el dispositivo, por lo que creara un proyecto de eclipse para android o un proyecto de xcode para IOS, por lo que podemos utilizar plugins nativos o hacernos nosotros mismos el nuestro.

Por último mencionar que PhoneGap tiene soporte para iPhone/iPad, Android, Windows Phone y BlackBerry y en menor medida tiene soporte de Bada, Symbian y WebOS. Así que si quereis hacer una app para IOS, Android o Windows Phone, es una buena opción echarle un vistazo a PhoneGap.

La muerte de symbian

En el año 2010, escribí un artículo que dio un tanto de que hablar, el artículo en concreto fue Los sistemas operativos móviles para smartphones: Android vs iOS vs Symbian vs Windows Phones. Es curioso ver como si se leen los comentarios, la gente va pasando de defensores de Symbian frente al resto de sistemas a poco a poco, ir queriendo actualizar a iOS o a Android. Bueno, escribo esto como aclaratoria, Symbian finalmente murió, y Symbian ha muerto no por que lo diga yo, sino por los hechos. Nokia compro el 100% de Symbian, por lo que el resto de marcas se interesaron por otros sistemas mas estables para los teléfonos de última generación (de todos es sabido los problemas de Symbian y los telefonos táctiles). La propia Nokia, por si aun queda algún defensor de este sistema operativo para móvil, abandono Symbian para utilizar Windows Phone, increíble pero cierto. Los planes de futuro de Symbian, en teoría mantenido con respiración asistida hasta 2016, son para teléfonos de baja gama de Nokia, el típico teléfono que tu madre se compraría.

Tengo que decir que es una lastima, ya que todos hemos crecido con Symbian, pero en la vida hay que ser fuerte y reconocer una derrota, solo nos queda mirar a los nuevos sistemas como Windows Phone, Android, iOS, etc.

Android ya es el segundo sistema operativo móvil en el mundo

Como cito en el título de este post, Android ya es el segundo sistema operativo móvil mas usado en este mundo. Según un estudio que ha realizado la consultora tecnológica Gartner según el crecimiento y uso de cada sistema operativo móvil, Android acaba de superar a BlackBerry, convirtiendose en el segundo sistema operativo móvil mas usado y con una estimación de que en los próximos 4 años alcance a la todopoderosa Nokia y su Symbian, pudiendo superar a esta en 2014. Según este estudio, en la actualidad y como se espera en los próximos años, Nokia con Symbian, seguirá al frente de los dispositivos móviles pero perdiendo cuota de mercado poco a poco frente a Android.

En la actualidad, el listado de sistemas operativos móviles mas usados es el siguiente:

  • Nokia, Symbian: 107.662.400 unidades, 40.1% cuota de mercado
  • Google, Android: 47.462.100 unidades, 17.7% cuota de mercado
  • RIM, Research In Motion, BlackBerry: 46.922.900 unidades, 17.5% cuota de mercado
  • Apple, iOS (Iphone): 41.461.800 unidades, 15.4% cuota de mercado
  • Microsoft, Windows Phone: 12.686.500 unidades, 4.7% cuota de mercado

Según las previsiones de crecimiento, y aunque desconozco si se han contado con los futuros proyectos que Google plantea para Android, como Google TV, se espera que en tan solo 4 años, Android alcance a Symbian, por lo que para 2015 y si las cosas no se tuercen, podríamos ver desbancada a Nokia de la privilegiada primera posición en el mundo de los dispositivos móviles. Las previsiones para 2014 son las siguientes:

  • Nokia, Symbian: 264.351.800 unidades, 30.2% cuota de mercado
  • Google, Android: 259.306.400 unidades, 29.6% cuota de mercado
  • Apple, iOS (Iphone): 130.393.000 unidades, 14.9% cuota de mercado
  • RIM, Research In Motion, BlackBerry: 102.579.500 unidades, 11.7% cuota de mercado
  • Microsoft, Windows Phone: 34.490.200 unidades, 3.9% cuota de mercado

Veremos si la evolución e innovaciones de las compañías hacen de esto una realidad o no. De momento y en opinión de un humilde servidor, Android, si el resto de compañías siguen con sus actuales políticas, se convertirá en breve en el numero uno de los sistemas operativos móviles, ya que Nokia no evoluciona ni innova, estaba genial cuando tenia móviles de toda la vida, pero ha llegado tarde y con grandes tropezones a la carrera de las nuevas tecnologías móviles. BlackBerry que mantendrá su posición corporativa y Apple con iOS y sus políticas restrictivas, no llegaran a donde todos esperan que lleguen. Solo el tiempo dirá que pasara y pondrá a cada compañía en su lugar.

Los sistemas operativos móviles para smartphones: Android vs iOS vs Symbian vs Windows Phone

Hace pocos días, estuve mirando para comprarme un nuevo teléfono móvil, digo teléfono por no decir ordenador de bolsillo. El caso es que a la hora de elegir dicho teléfono, me asaltaba una gran duda, ¿Hacia dónde voy? ¿Qué marca escojo? ¿Qué modelo escojo? Durante días me estuvieron asaltando estas preguntas hasta que hice análisis de lo que quería y lo que había, fue entonces cuando todas mis dudas quedaron resueltas. Aunque las características técnicas del modelo a elegir son muy importantes, no hay que obviar que hoy en día casi todos teléfonos disponen de un buen hardware por detrás, también teniendo en cuenta cuanto nos queramos gastar. En mi caso yo quería un móvil de gama media-alta de precios similares y características aun mas similares, así que solo queda para el análisis y decisión el sistema operativo que los hace funcionar. A continuación dejaré un breve análisis de cada uno basado entre otras cosas mi propia experiencia personal.

Windows Phone

Windows PhoneEste es el sistema operativo para móviles de Microsoft, antiguamente llamado Windows Mobile. He usado desde hace 5 años este sistema operativo, en PDA’s y en teléfonos móviles o smartphones, y la verdad es que es una maravilla, el entorno en general esta pensado con vistas profesionales, aunque permite mucho mas. Por defecto el sistema operativo es bastante normalito, tienes pocas aplicaciones, efectos visuales muy pobres, por regla general esta basado en otra época, cuando hace 7 u 8 años, era una novedad, pero abandonado desde entonces. Microsoft como no, en su linea de actualizar unos productos muy a menudo, y abandonar a su suerte otros productos y es esto lo ocurrido con Windows Mobile, fue abandonado, y desde versiones de Windows Mobile 2003, Windows Mobile 5 y Windows Mobile 6 no encontramos ninguna diferencia y apenas mejoría. Cuando el boom de iPhone, Microsoft libero la versión Windows Mobile 6.5, un caramelito antes de la llegada de Windows Mobile 7 donde ya si se veian cambios sustanciales en la interfaz y funcionamiento del sistema operativo, siendo mas enfocado al uso con los dedos y no con puntero. Ademas de esto en breve, finales de 2010 aparecerán los primeros modelos con Windows Phone 7, un sistema operativo que renovara, partiendo de la base de Windows Mobile 6.5 y Zune HD, darán otro concepto a lo visto en los Windows Mobile. Hasta aquí la historia, llega el momento de la practica. Windows Mobile, al menos hasta su versión 6.5, ya que la 7 es un poco desconocida aun, es un gran sistema operativo, estable, modificable (vease HTC Sense y similares), con capacidad para albergar plugins o widget desde hace ya años como son los plugins today, consume pocos recursos, existen miles de aplicaciones disponibles y ademas Microsoft recientemente creo un market similar al AppStore para Microsoft Windows Mobile. Pero no es oro todo lo que reluce, y no todo pueden ser ventajas, hay que ponerle pegas, una de las cuales y para mi la mas importante es el desarrollo, que obliga a los desarrolladores a utilizar Windows con Visual Studio en sus versiones de pago, ya que no hay versiones libres capaces de compilar aplicaciones para Windwos Mobile y como no solo en Windows. También decir el tiempo de desarrollo, he tenido desde hace 5 años dispositivos con Windows Mobile, y nunca jamas he podido instalar ninguna  versión superior, a no ser que fuera flasheando la ROM bajo mi responsabilidad y riesgo. Si a todo esto le sumamos un sistema operativo, que a falta de ver como será definitivamente el tan esperado durante años Windows Phone 7, visualmente deja mucho que desear, así como sus aplicaciones. Ah y mas para desarrolladores, su API es muy muy malo, por lo que hacer una aplicación visualmente atractiva, nos dejara la piel en ello.
Microsoft Windows Phone 7 Microsoft Windows Phone 7

Nokia Symbian

Que puedo yo decir de Symbian que la gente no conozca ya. Symbian es el sistema operativo de Nokia, aunque en realidad pertenece a un consorcio de empresas, la parte mayoritaria, 52% de la compañía es de Nokia, así que podemos afirmar que Symbian es de Nokia. Symbian es un sistema operativo mas que probado, durante años de uso en Nokia, y quien no ha tenido en sus manos alguna vez un Nokia. La verdad es que el sistema operativo es bastante bueno, tiene un sistema muy probado y miles de aplicaciones. Para mi, Symbian es un descarte completo, en primer lugar, es muy potente pero a la vez muy lento de ejecución. Aparte de esto, las versiones táctiles han sido un relativo fracaso para Nokia, ya que por experiencia con mi Nokia 5800 o algun N97 de amigos, es que Nokia ha metido la pata hasta el fondo, ya que hasta que no han sacado la 4ª o 5ª versión de firmware para estos dispositivos no han empezado a funcionar cierta fluidez. Esto es un problema de credibilidad, puesto que aunque se venda como rosquillas, para mi, una compañía que ya no en funcionalidad, sino en drivers, el típico juego por defecto que viene en el móvil vaya a tropezones y que un par de años después, actualizando a la ultima versión, el juego vaya como una bala, quiere decir que han sacado versiones como les han dado la gana y que ya lo mejoraran y estamos hablando de tema de drivers o calidad en los mismos. Para mi Nokia no es lo que era y aunque siga teniendo mucho nombre, poco a poco va a ser desbancando por compañías como HTC
Nokia SymbianNokia Symbian

iOS – iPhoneOS

Apple hace unos años  apostó y muy fuerte en el campo de la telefonía móvil y el resultado final es el iOS, un sistema operativo muy estable, muy cuidado, elegante, vamos, lo que se dice una maravilla, ademas con la idea del AppStore, ya que fue el primer sistema operativo en disponer de un market a gran escala, existen miles de aplicaciones para el iPhone. Que puedo decir sobre este sistema operativo tan comentado, alabado y criticado a la vez. Pues que a la hora de elegir un terminal en base a su sistema operativo, iPhone o mejor dicho el iOS es una de mis principales opciones, pero tiene varios problemas, uno de ellos es que es demasiado restrictivo. Para dar a iPhone el toque de terminal exclusivo, Apple no podría dejar que la gente hiciera lo que quisiese, pudieran instalar aplicaciones que modificaran el sistema operativo porque  permitiría de una manera sencilla liberar el terminal y se acaba el chollo para las  compañías que lo venden con planes abusivos, tampoco podemos correr ninguna  aplicación que sea interpretada y no compilada en código nativo ya que sino el terminal iría mas lento, excusa de mas lento un terminal que hasta su versión 4 no ha introducido el concepto de multitarea, algo que el resto de los anteriormente comentados llevan años haciendolo. Para mi, puntos fuertes es el estilismo, aplicaciones, API muy cuidada y documentada, pero por el contrario me atan con un proveedor con tarifas exageradamente elevadas y abusivas. Ademas, resaltar los problemas que ha tenido el iPhone4 por la cobertura de la señal. Bueno, también resaltar que para realizar una  aplicación para iPhone, tienes que programarla con xCode desde Mac, no se puede en ninguna otra plataforma.
Apple IphoneApple Iphone

Android

Por último, lo dejo para el final porque ha sido mi elección, un sistema operativo de Google, una maravilla de sistema donde los haya. Muy cuidado en todos los sentidos. He podido probar las versiones 1.6 desde el  móvil de un amigo, así como la 2.1 con mi actual teléfono HTC Legend y puedo decir que todo esta muy pensado, aunque aun esta verde. Es un sistema operativo pensado para tener acceso a internet. Los contactos, email y demás, aunque podemos configurarlo desde el propio teléfono, esta preparado para funcionar desde la nube, nube que genera Google con Gmail, pudiendo añadir, a esta nube Facebook, Twitter y Flickr. Las aplicaciones al igual que pasa con los Symbian de Nokia, pueden correr con un API Nativo de C o con un API de Java, aunque decir que el API de Java de Android esta mucho mejor pensado y distribuido que el de Symbian, también porque lleva menos años y por tanto menos parches. Las aplicaciones son visualmente atractivas, pero con su toque de sistema, es decir, al mismo estilo de iPhone, pero con el sello Android. A diferencia de iPhone, cosa que me gusta mucho, es que Android dispone de varios escritorios principales, donde podemos incluir accesos directos a nuestras aplicaciones pero también carpetas con archivos, widget, etc. y luego ya tenemos nuestra ventana con el listado completo de aplicaciones. Punto fuerte de este sistema es el Google Maps Navigator, un GPS que se actualiza en red con los  últimos datos desde Google Maps y que esta haciendo temblar a TomTom y Garmin. Programar para Android es mucho mas sencillo porque el SDK es fácil de instalar y utilizar, se programa en Java con Eclipse, para cualquier plataforma, da igual Windows, Linux o Mac por lo que no tenemos que invertir en licencias para programar. A pesar de ser el mas similar en cuanto a estilo con iPhone, es bastante mas superior en otros aspectos, ya que se puede personalizar mucho mas, por ejemplo el HTC Sense, puedes instalar libremente programas que bajes de internet y no estén en el Android Market. Para los desarrolladores es mas barato ya que la nube es de Google y no tiene subscripción como Azure de Microsoft o el Market solo cuesta 25$ y no 100$ como el de Apple.
Google AndroidGoogle Android

Resumiendo lo anteriormente dicho, de los 4 sistemas operativos que he comentado, decir en pocas palabras, que Microsoft llega muy pero que muy tarde a la nueva carrera de los smartphones y ha quedado descolgado del resto, al menos hasta navidad y la salida de Microsoft Windows Phone 7. Si buscamos un teléfono que sea igual que hace 5 años, en todos los sentidos, velocidad incluida, Symbian es el tuyo, pero como no, con un Symbian, casi siempre ira acompañado un Nokia, que siempre se venderá bien y no deja de ser un Nokia. Si queremos fardar, aparentar y gastar mucho dinero, iPhone es el nuestro, pero si queremos tener algo como un iPhone pero mas asequible al bolsillo, lo mejor es un Android. En definitiva Android es para mi opinión personal, el mejor sistema operativo a elegir dentro de un terminal móvil en la actualidad, ya que podemos disfrutar su potencia y características, desde un simple, sencillo y barato Huawei hasta el increíble HTC Desire.

Scroll al inicio