Enviar una App a la Apple App Store

Standard
De la guía “Acerca de los Flujos de Trabajo para la Distribución de Apps” (About App Distribution Workflows) tomamos la siguiente imagen.
Para poder publicar nuestra App en la App Store, tenemos que tomar en cuenta tres pasos:
  1. Enroll. Darte de alta en el Apple Developer Program.
  2. Develop. Básicamente, desarrollar tu App.
  3. Distribute. El proceso de distribución.

App Distribution Workflow

Es en éste último paso donde me voy a enfocar en esta publicación.

Ahora, aunque el paso de hacer de Pruebas Beta (Beta Test App) y Liberar la App (Release App), son muy interesantes, lo vamos a dejar para una publicación a futuro.
Específicamente voy a hablar de las consideraciones que hay que tomar para Enviar la App (Submit App).
Nota. Dejo el link a las guías oficiales por si quieres revisar estos procesos a detalle.

Continue reading

Pruebas Automáticas de UI en Xcode 7

Standard

Hola, el día de hoy voy a ampliar un poco más el tema de las pruebas automáticas, ya que en Hunabsys estamos ampliando más la práctica como parte de los mecanismos de validación que estamos implementando en nuestros proyectos.

¿Qué son las Pruebas de UI?

Las Pruebas de UI son pruebas para validar la interfaz del usuario. No es que sea nuevo, ya lo hacemos todo el tiempo para validar nuestros proyectos, de manera manual, en las apps lo hacemos haciendo taps sobre los diferentes elementos de la pantalla.

Pero las pruebas manuales para realizar las regresiones es aburrido. Además de que tienes que recordar el probar todos los pasos para validar que no hayamos introducido algún error en cada iteración.

Hacer Pruebas Unitarias de clases Swift es relativamente sencillo: podemos probar “unidades” (leer una “clase”) a través de su interfaz de programación, así que escribimos código para asegurarnos que hace lo que se supone programamos.

En el caso de las Pruebas Automáticas de UI no es tan sencillo: debemos pretender que alguien está haciendo tap sobre la pantalla y arrastrando e interactuando con tu app para que haya cambios en la interfaz, debe de haber mecanismos para poder “ver” si la UI cambió de acuerdo a lo esperado.

Continue reading

Storyboards en iOS 9

Standard

Hola a todos, desde hace tiempo he venido buscando la forma de aprovechar al máximo la opción que te da las versiones más nuevas de Xcode y iOS para usar Storyboards sobre el ya conocido Interface Builder, para construir las interfaces gráficas de nuestras aplicaciones.

De entrada los storyboards son excelentes para tener una visibilidad de todas las escenas involucradas con tus proyectos, pero a medida que el proyecto va creciendo se presentan ciertos retos:

Problema

storyboard-problem

1. Complejidad. A medida que va creciendo el proyecto nos llenamos de escenas que se pudieran agrupar de alguna manera como módulos.
2. Colaboración y control de versiones. Al tener un sólo archivo con todas las escenas, Main.storyboard, es muy difícil, por no decir imposible, la modificación de dos o más personas de las escenas, se hace un cuello de botella.
3. Desempeño. Conforme crece la complejidad de nuestros proyectos, hemos visto como el performance al cargar el editor de de storyboards se degrada. Esto no debe de ser problema en Macs más “grandes”, pero dado que no pienso cambiar la movilidad de mi Macbook Air, tuve que buscar opciones. 🙂 Continue reading

Cocoa Pods

Standard

Después de algunos años de resistencia a implementar Cocoa Pods, me vi casi obligado a cambiar mi proyecto actual a esa modalidad por un componente de Gráficas que al final, terminé por no usar por cierto.

¿Por qué me resistía? Porque CocoaPods tiene una manera muy particular de trabajar, mientras que en otros ambientes de desarrollo como Rails, Java, NodeJS por citar algunos, tu instalas tu dependencia y se integra de manera natural en tu proyecto, CocoaPods te genera un workspace, que es un integrador de proyectos. Este workspace integra tu(s) proyecto(s) y agrega otro proyecto con los Pods.

Pero dada la popularidad de CocoaPods, muchos sitios que publican sus componentes solo incluyen el pod que tienes que instalar para empezar a usarlos. Ya se imaginaran en las que me vi para sacarle la vuelta.

Desde el punto de vista de Arquitectura no se me hace un proceso natural, pero en la práctica es muy sencillo de utilizar, y si obviamos ese punto, podemos tener un manejo de dependencias muy dinámico, escalable y es amigable con el control de versiones.
Continue reading