Experiencias con la Appstore del iPhone


Ha pasado bastante tiempo des de la famosa keynote de Apple donde presentaron la SDK, desde que adquirí la licencia para distribuir aplicaciones y des de que me aprobaron algunas de ellas. Por lo tanto creo que ha llegado el momento de describir mis experiencias, que quizá ayuden a conocer un poco más a fondo el entramado de la AppStore.

download_iphonesdk.png

¿Que es la SDK?

La SDK son un conjunto de herramientas que proporciona Apple para el desarrollo de aplicaciones de la plataforma iTouch (o sea programas para el iPod Touch/iPhone). Básicamente estas herramientas son el XCode (un IDE), el iPhone Simulator (emulador para probar/debugar las aplicaciones desde el mac) y Instruments (aplicaciones para debugar y hacer pruebas de rendimiento de nuestros programas).

Estas herramientas solo funcionan en Mac OSX Leopard y pueden ser descargadas gratuitamente en la página http://developer.apple.com/iphone

¿Que es la AppStore?

La AppStore es un repositorio de aplicaciones de terceros “oficial” para la plataforma iTouch. Se puede acceder desde iTunes o desde el mismo iPhone/iPod Touch (versiones > 2.0). En la AppStore puedes navegar por las aplicaciones e instalarlas en tu teléfono con un solo click.

Básicamente una vez hayas creado tu aplicación, debes mandarla a la AppStore para que te la publiquen y de este modo pueda ser instalada en cualquier iPhone.

¿Es difícil crear una aplicación para iPhone?

Bueno, entramos a la parte más techie. Mi respuesta a mi pregunta es parece que sí, pero al final no lo es tanto.

Parece que sí por el marketing de Apple, la “facilidad de uso” de sus herramientas, su extensa documentación, sus vídeos explicativos de la SDK, sus ejemplos de código.

Pero al final no lo es tanto por las siguientes razones:

  • Lenguaje: Se programa en Objective C. A decir verdad no había oído esa palabra en mi vida antes de empezar con la SDK, y como yo, la mayoría de gente no habrá hecho en su vida nada con Objective C (quizás esto cambie en un futuro breve gracias al auge de Apple). Este lenguaje está a medio camino entre C++ y C#. Me explico, es un lenguaje compilado (no interpretado como .NET/Java) y orientado a objetos pero tiene un sistema de gestión de memoria que se “acerca” al Garbage Collector de C#(.Net) o Java.
  • Gestión de memoria:En el anterior punto digo que su gestión de memoria se”acerca” al Garbage Collector porqué en realidad cede el control al desarrollador de usar la gestión de memoria automática (Autorelease pools) o bien hacer la gestión manualmente (init / release). Esto a la gente más purista le puede parecer el súmmum pero al menos en mi opinión volver a gestionar la memoria me parece una cosa del pasado. Y además este paso no se puede pasar por alto, ya que el iPhone es un dispositivo con memoria limitadilla y no se debe hacer algo extraordinariamente extraño para agotarla y ver como te casca la aplicación de forma aleatoria una vez tras otra.
  • UIKit: El UIKit son las librerías base que contienen los objetos para crear aplicaciones (como p.ej. la clase “Ventana” o la clase “Botón”). Como el iPhone es un dispositivo nuevo, aquí tenemos librerías base nuevas para crear nuestras aplicaciones, que requiere volver a tragarse toda la curva de aprendizaje hasta comprender qué clases necesito para hacer esa cosa específica. A decir verdad están muy bien documentadas y son bastante intuitivas, pero no dejan de ser clases nuevas que debes aprender para desarrollar tu programa. Desconozco si para desarrollar aplicaciones de escritorio para Mac se utiliza algo similar a UIKit, por eso reitero que es la primera vez que desarrollaba para Mac.

No todo va a ser negativo, por eso aquí van sus puntos fuertes:

  • El XCode es fácil rápido y fiable. No lo había utilizado nunca y en un par de días de inmersión ya te sientes “como en casa” usándolo.
  • El simulador y debugger son bastante buenos. Puedes ejecutar tu programa paso a paso ya sea desde el simulador o desde un iPhone conectado al Mac (esto último requiere una licencia de desarrollador)

¿Como subo mi aplicación a la AppStore?

Debes darte de alta en el iPhone Developer Program. Cuesta $99 para desarrolladores y $399 para empresas que quieran desarrollar aplicaciones in-house para sus clientes o empleados (deben tener más de 500 empleados).

Con el Standard Program de $99 puedes subir aplicaciones gratuitas o de pago. Apple te ofrece gratis el almacenamiento y distribución de estas, con la única condición de que si subes una aplicación de pago apple se quedará el 30% de los beneficios, y el desarrollador el 70% restante (después de impuestos).

Esta licencia te da acceso a 2 webs con paneles de control de Appl:

  • iPhone Developer Program: Este panel de control te permite crear nuevas aplicaciones, registrar tus teléfonos para probar tus apps, y firmar tus apps para prueba o para distribución en appstore.
  • iTunes Connect: Este panel de control te permite ver el estado de tus aplicaciones en la appstore, ver estadísticas de descarga, gestionar la información que muestra la appstore sobre tu aplicación, etc.,

Estuve investigando la documentación requerida para subir una aplicación de pago y a parte de una información heavy de tu cuenta bancaria (debe incluir información para transferencias internacionales), necesitas un U.S. Taxpayer identification (ITIN). Creo que no es absolutamente necesario, si no lo provees apple retendrá un 30% de las ganancias en forma de impuestos. Si lo obtienes apple retendrá el % estipulado por el convenio entre USA y tu país (creo que en españa es un 8%). A ver si alguien me puede confirmar estos datos :)

Aparecer en la AppStore

Todas las aplicaciones que se mandan a la AppStore son validadas una por una por staff de Apple, que se encargan de que las aplicaciones no incumplan las condiciones de uso y que cumplan unos mínimos estándares de calidad. Por mi experiencia y si todo sale correcto el proceso de validación tarda entre 3 y 5 semanas. Si algo sale mal después de las 3-5 semanas apple te rechaza la aplicación avisándote del motivo, lo que requerirá correjirlo y volver a mandar el programa (esperando otras 3-5 semanas más ;))

El problema viene en el proceso de firmado digital de la aplicación. Este firmado es requerido para probar tu aplicación con un dispositivo real y para mandarla a la AppStore. Para nada es un proceso trivial, además falla bastante, por lo que requiere varios ciclos prueba/error hasta que permita instalar la aplicación en el teléfono.

Recomiendo totalmente probar las aplicaciones en el teléfono porque aunque el simulador es bastante fiel al dispositivo real, este cuenta con recursos bastante mayores y podemos encontrarnos con alguna que otra sorpresa al ejecutarlo en el iPhone (velocidad de carga lenta, memoria escasa, etc.,)

¿Como instalo mi app en desarrollo a otro iPhone?

Imagina que estás desarrollando una aplicación para un importante cliente en USA y quiere probar tu prototipo en su iPhone.

  1. Pídele el identificador de su iPhone y éntralo en la sección “Devices” del iPhone Developer Program Portal. Para saber el ID de un iPhone conéctalo a iTunes y en la pantalla de información del iPhone pincha encima del texto “Número de série” con el SHIFT pulsado.
  2. En la sección “Provisioning” del iPhone Developer Program Portal modifica el profile de tu aplicación añadiendo el nuevo Device.
  3. En unos segundos podrás descargarte el nuevo provisioning. Descárgalo y arrástralo al Xcode o al iTunes (lo instalará en tu sistema).
  4. Haz un Buid de tu aplicación (no te olvides de firmarlo con el nuevo provisioning).
  5. Mándale al cliente el paquete de tu aplicación junto con el fichero de provisión (.mobileprovision). Se lo podrá instalar a su dispositivo primero arrastrando el .mobileprovision y luego el paquete (.app) a iTunes

¿Merece la pena desarrollar para iPhone?

Sin lugar a duda. Próximamente espero poner algunos números sobre las descargas de la aplicación de Moneytrackin ya que son verdaderamente interesantes :)


Escribe un comentario

Puedes usar HTML básico.

Comentarios

muy intersante victor !!! muchas gracias por escribir este post :D

Muy bueno el post Victor!
Muy interesante :)

Aprobar se escribe con ‘b’

Corregido, gracias Carlos