Mi primera aplicación para iPhone. (Experiencias con Apple)

Algo que tenía pendiente, y que sabía que tarde o temprano tendría que aprender es a programar para iOS, desde que tengo el iPhone no dejo de sorprenderme de las cosas que se pueden hacer con este aparatito. Aprovechando la excusa de hacer un cliente móvil para BiblioEteca me puse manos a la obra y pude comprobar los pros y contras de programar para iOS.

Pero antes de continuar escribiendo nada sobre el particular, me gustaría que pudieseis ver el video que preparé (gracias al iMovie) sobre la aplicación gratuita que ya está en la appstore de apple:

El resultado no es perfecto, pero si que es lo suficientemente llamativo para ser considerada una aplicación adecuada para el móvil. todavía no he terminado su desarrollo y tengo más ideas interesantes para implementar en la aplicación, pero ya me ha permitido programar en la plataforma iOS y subir a la appstore una aplicación y una actualización de la misma. Este post es un resumen de mis experiencias con apple.

Después de varios años programando en Java, con incursiones en C y C++ (que, a mi entender, es el lenguaje más completo que hay), hacer cositas en PHP, Javascript y frameworks varios, creí que aprender un lenguaje más no iba a ser demasiado complicado y es que Apple utiliza objective-c como base de todos sus desarrollos. Tal como reza la definición de este lenguaje, se trata de un superconjunto de c, pero orientado a objetos… Creí que iba a ser algo parecido a C++… Pero no, no se parece en casi nada. Es más, en lo que a sintaxis se refiere, solo tienen en común la base del C, pero el resto no tiene nada que ver la sintaxis de orientación a objetos de C++ y la de objective-c.

Gracias a DiosJobs, la programación en iOS se basa en el uso del entorno de desarrollo Xcode y las herramientas adicionales Interface Builder, todo ello se puede descargar gratuitamente y sin requisito alguno, excepto que debe correr en un ordenador con OS-X. Por suerte yo ya me había comprado mi macbook hace tiempo, aunque tuve que actualizarlo a Snow Leopard para poder instalar la última versión de Xcode… Parece un detalle sin importancia, pero el hecho de que todos los desarrolladores para iPhone deban tener uno o varios Mac para desarrollo ha debido aportar unas cuantas ventas a Jobs. El caso es que la utilización de Xcode, aunque un poco diferente de las herramientas de Java a las que estaba acostumbrado, es bastante cómoda y la herramienta es robusta 100%.

Superado el tema de los entornos, lo siguiente era saber dónde encontrar documentación para aprender, me decidí a comprar un par de libros en amazon (iphone application development y The iphone developer’s cookbook)y otro (Desarrollo de aplicaciones para iphone) que encontré en Español, que resultó ser la traducción del primero que compré en Amazon, además, eliminando el color de la edición inglesa y costando más que los otros dos libros (cosas de las editoriales patrias). Sobre estos libros, tengo que decir que el primero comprado en Amazon me fue más que suficiente para iniciarme en el desarrollo para iPhone (y está bastante actualizado) y el segundo me sirve más de referencia que de guía. Hay muchísimos libros en inglés sobre el tema y, otra cosa que descubrí, es que hay una comunidad de programadores ahí fuera, no tan amplia como para Java o para productos open-source, pero si muy activa y colaboradora, por lo que buscar en internet siempre tiene su premio.

Lo siguiente que «choca» es la forma en la que poder probar en tu iphone… Simplemente, no puedes, es decir, no puedes si no has pagado previamente a apple por el registro en el programa de desarrolladores. Son unos 90$ y te dan para un año… Con ese pago ya te proporcionan perfiles de despliegue para que puedas probar en tu teléfono (o en unos cuantos dispositivos de desarrollo) tu aplicación. Si no, solo podrás probarlo con el simulador en el ordenador y, desde luego, no es lo mismo. A pesar de que el simulador de iPhone es casi perfecto, siempre es necesario ver tu aplicación funcionando en el teléfono real para poder detectar problemas. Así que, dicho y hecho, ya estamos suscritos y nos hemos instalado todos los certificados y demás (ahi hay que seguir la documentación al pie de la letra o podemos terminar sin saber cómo ejecutar nada en el teléfono). Eso si, una vez instalado puedes hasta depurar la ejecución en el mismo dispositivo.

Después de todos estos requisitos y, de muchas horas programando en un lenguaje extraño, descubrimos que objective-c tiene los mismos problemas de memoria que c y c++, es decir, que debes liberar la mayoría de lo que reservas (y yo que me había acostumbrado al GC de Java…) y que dejar las lagunas de memoria pueden hacer petar a la aplicación, sobre todo en un dispositivo con memoria limitada como es un teléfono móvil. Así que lo siguiente es «optimizar» la aplicación para que no perdamos memoria y nos aseguremos que lo que no liberamos a mano ordenamos que se libere más pronto que tarde… Sería una ardua tarea si no fuese porque, una vez más, apple nos ofrece la herramienta correcta: Instruments. La potencia de este profiler es infinita, os dejo una imagen de la pantalla para que os hagáis una idea, pero, desde luego, es de lo mejor que he usado para detectar problemas en programación, y todo super integrado con Xcode, permitiendo incluso ejecutar el profiler con el programa ejecutando en el teléfono (hacer click para ver más grande):

Una vez depurado y con todo en su sitio viene la parte que, a mi modo de ver, es más fastidiosa en la experiencia de programar para iphone, el subir la aplicación a la tienda… Primero hay que comprender bien el proceso, saber para qué sirve cada certificado y tener mucho cuidado en las cosas que ponemos en el itunesconnect (hay algunas cosas que no podremos deshacer)… Si todo ha ido bien, tendremos que poner imágenes para itunes, imágenes de volcados de pantalla y calificar la aplicación según su contenido (la mia pone que es para mayores de 12 años) y quedará pendiente de enviar el binario… Eso se hace desde el Xcode sin problemas si hemos instalado los perfiles de despliegue adecuados. Y entonces tenemos que esperar.

La primera vez que envié la aplicación tardaron cosa de una semana en asignarme a un revisor y casi 4 días en dar el ok a la aplicación (y eso que era sencillita). Por suerte, y como descargo, decir que la actualización tardó solo unas pocas horas en ser actualizada cuando terminé la siguiente versión.

En suma, y como resumen, la experiencia de programar para plataformas apple es, cuando menos, agradable, se nota que hay entornos de desarrollo maduros, sistemas de depuración y profiling adecuados, simuladores que funcionan siempre y bien y un flujo de trabajo bastante bien definido. Los puntos oscuros son el desconocimiento del lenguaje (subsanable) y lo desagradable de tener que estar firmando y dependiendo de certificados que caducan cada cierto tiempo para desarrollar (amén del dinero que hay que pagar).

Por si queréis descargaros la aplicación:

Seguiremos investigando…

13 comentarios en “Mi primera aplicación para iPhone. (Experiencias con Apple)

  1. Hola, pues te felicito por tu primera App, queria preguntarte algo, cuanto tiempo te llevo aprender xcode al punto de poder hacer un programa completamente funcional?, tienes alguna recomendacion para darme visto que estoy por empezar en el mundo de xcode?. Gracias. Jose

  2. Hola Jose,

    La verdad es que el objective-c no es demasiado complicado si tienes experiencia en otros lenguajes orientados a objetos, un poco liosa la gestión de memoria, pero la sintaxis general se pilla rápido. En un mes pude desarrollar la primera versión de la aplicación completa basándome en los ejemplos de los libros que comento, dedicando una hora al día a aprender y unas cuantas horas más cuando decidí construirla… El xcode como entorno ya digo que es bastante bueno e intuitivo. Te recomiendo que empieces con algún libro o tutorial y que dediques un tiempo fijo al día a hacer algo con él (si no, al final se te olvida y tienes que volver a empezar).

    SALUDOS

  3. hola como estas?

    tengo una pregunta que hacerte, lo que pasa es que me quiero meter a desarrollar una aplicación para un trabajo de mi escuela y quería saber si son 90 dolares o pesos que se tienen que pagar y claro si es necesario para poder pasarlo al iphone…

    muchas gracias

  4. Hola Diego,

    La verdad es que depende del país y las tarifas de Apple, lo mejor es que hagas el intento de suscribirte y ahí te aparecerá el precio final. Si quieres ver la aplicación funcionar en un iphone de verdad, es obligatorio, si no, solo podrás verla en el simulador del Xcode.

  5. Buenas,

    mis felicitaciones por tu app, me encuentro en una situación en la que tu estuviste y me gustaría solucionar algunas dudas que tengo, si es posible.

    He elaborado una app para iPhone, pero cuando voy a ejecutarla en mi dispositivo me he topado con que no tengo cuenta de iPhone Developer Program, se suponía que cuando pagas la cuota anual debes tener esa información …. pero fue mi jefe el que realizo el pago y ando perdido sobre la información que necesito para conseguir los certificados.

    Quizas puedas orientarme….

    Gracias y un cordial saludo.

    David.

  6. Hola David,

    La verdad es que tendrías que acceder al provision portal de apple y generar perfiles de desarrollo para instalarlos en tu teléfono. El nuevo Xcode4 lo hace casi todo por ti si vas al organizador y seleccionas tu teléfono conecta por ti con el provision portal y te instala los perfiles adecuados. Eso si, necesitas la cuenta y el password que debe tener tu jefe.

    Espero que te ayude.

    Por cierto, si quieres ser betatester de mi próxima aplicación dímelo y te mando instrucciones.

  7. Gracias por tu repuesta Jose Antonio,

    Aun trabajo con Xcode 3, pero actualizaré ya que veo que el 4 tiene algunas ventajas que me vendrán bien.

    La pregunta concreta que tengo es la siguiente:

    ¿ El usuario y pass de la cuenta de desarrollador de Apple son las mismas que las de la cuenta de iOS Developer Program??

    Me imagino que son diferentes…

    Respecto al tema de betatester, actualmente estoy haciendo el proyecto de fin de carrera en una empresa (una comparativa entre el desarrollo de apps para iPhone e iPad), en estos momentos estoy testeando la app para iPhone y acontinuación comenzaré con la app para iPad. No obstante, estaré encantado de ser betatester de tu proxima app.

    Un saludo.

    David

  8. Hola de nuevo,

    En realidad solo hay una cuenta de desarrollador y tienes que hacer login en ella para acceder al ios provisioning portal… Si te instalas el xcode 4 esto es más o menos transparente para los perfiles de desarrollo.

    Para ser betatester solo tienes que instalar la siguiente aplicación (es gratis).

    http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=285691333&mt=8

    El correo que genera esta aplicación (que incluye el id del teléfono para el perfil de distribución), me lo mandas a [email protected] y yo te enviaré las instrucciones para que te lo instales.

  9. Hola,

    Tengo problemas con publicar mi aplicación en la app store he buscado información y encuentro mucho y nada a la vez, podrias ayudarme? mi mail es [email protected]

    Gracias
    Carlos Vazquez

  10. Hola Carlos,

    Si me dices en que parte del proceso te has quedado quizá podría ayudarte… Explicar todo el proceso es un poco largo, quizá haga una entrada sobre eso cuando encuentre tiempo.

    SALUDOS

  11. Felicidades amigo yo en estos momentos trato de hacer una aplicación pero aun no se como programar en Objective-C no se si tengas algún tip o ejemplos que me ayuden a entrar en marcha en este lenguaje es para un proyecto de mis practicas para mi titulación.

    Muchas Gracas.
    [email protected]

  12. Hola Josh,

    A mi me sirvió de mucho el libro «Teach youself iphone application development» de John Ray. Tienes una versión en Español aqui, aunque es mejor la original. Luego hay un montón de consejos y soluciones en la web de stackoverflow, entre otras.

  13. Hola, tengo un blog y he desarrollado una app para la apple store pero el precio me parece excesivo, podrías subírmela tu x fa…

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.