APPLE: xCode, iPhone OS, etc...

bLaKnI

Bueno gente.
Hoy me he puesto al tute. Ya tengo todo lo que necesitaba (Macbook Pro + iPhone) y hoy mismo he comprado la licencia anual de desarrollador (ya tenia plan de Developer, pero no estaba enrolado).

Mañana espero, recibiré los permisos de liberación de apps, pero de momento, hoy he realizado mi primera aplicación de iPhone (la he corrido sobre 3.1.2 en emulador de iPhone), tal y como el siguiente tutorial brinda:

http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhone101/Articles/00_Introduction.html

Y que decir... OMG!
Que locura el Objective-C, que locura el mundo Cocoa y que locura el sistema de bindeo y delegaciones cuando uno viene de procedural imperativo + POO de delegación directa "objeto.metodo(parametros)", y hay que empezar a usar los "mensajes" y el sistema de uso de parámetros anidados... madre mia madre miiiiaaaa! xD

Además, si se ha trabajado en Visual Studio, el mundo este es una locura!
Hay que hacerlo TODO manual. Nada de poner un botoncito, doble click y ale.
Hay que poner el botoncito en el NIB, luego bindearlo a un Outlet del Controller, y finalmente, implementarlo likandolo primero a un método (el que se implementa...). xD

Supongo que con el tiempo le iré cojiendo el rollito, pues la "docu" de Apple es digna de admirar (aunque BASTAMENTE extensa)...

Me coge con un poco de "miedo" primerizo... xD

¿Alguna experiéncia?
¿Alguien que ya haya pasado por esto, y pueda dar consejos o ánimos? :D

Saludos y abrazos!

B

Yo despues de leer el contrato te doy animos porque los vas a necesitar :P

Tu_Dios

Yo me limito a darte animos, Objetive-C lo ha inventado Satan. Cuando lo pille tarde 5 mins en lanzar el hello world y 30 en entenderlo.

Si has tenido alguna experiencia con Android vas a notar el salto, vas a echar de menos eso de un eclipse + 1 plugin + SDK y a tirar Java de toda la vida.

De paso te recomiendo que metas esta web en favoritos: http://www.cimgf.com/

bLaKnI

Bueno!
Hoy me han enrolado porfin! Ha sido un proceso duro... xD
Dios mio con el proceso de conseguir "lanzar" una app en el iphone.

He peticionado un certificado via keychains.
Lo he subido a certificados de developer del portal.
Lo he aceptado como Admin y developer que soy a la vez.
He descargado el certificado cocinado y lo he instalado en keychains.
Luego, intentando hacer lo del Profile, me he equivocado y he generado otro certificado de distribucion, que no se necesita para nada, pero bueno... xD lo tengo instalado porque "si". xD
Luego, finalmente he entendido lo de los Profiles. Al intentar generar uno, me ha pedido el App ID. He tenido que generar uno, haciendolo generico via * --> com.empresa.*
Y FINALMENTE, he podido generar el profile. Bajado, arrastrado a xCode y sincronizado con el terminal. Y finalmente, al ejecutar, peta. xDD
El puto bundle no cuadraba con el profile. Entro al XIB, lo cambio y voilà! Ya tengo mi puto hello world en mi iphone!! xDDD

Mola mazo!

La aplicación se llama "LOLAZO" xDDDD

Varias preguntas que me vienen a la cabeza:

  • Un compi mio, no es desarrollador, pero es el técnico de sonido, diseño...
    Si quiero que pruebe la app en su iphone, que hay que hacer?
    Dar de alta su iphone UID en el Portal, y generar otro profile nuevo con el mismo certificado que he generado para mi (el developer) y con el mismo app ID? O como va eso?
    Quiero que pueda probar las apps en su iphone!!

Otra cosa que he visto, al ser developers, podemos poner el firmware que nos salga del pene?? Y hacer downgrade las veces que queramos o que!?
Porque mola mucho esto eh?

Menuda tela con los de Apple y sus sistemas... xD

bLaKnI

Bien bien bieeen!
Ya me voy haciendo con todo el tinglado... es mas facil de lo que parece.
Solo hay que leer mucho y tenerle cariño y disposición al Obj-C.

He aquí mi primera aplic completamente solo, sin tutos ni ostias a seguir!

Os presento, "Hola i Adeu" (en catalán, sorry... xD)

Es una aplicación en la que introduces un numero abajo a la izquierda, y te aparecen tantos HOLAS o ADIOS como le hayas indicado en la parte de arriba verde claro.

Esssssssssssspectaculaaaarrrr lokkoooooo! xD
Proximaménte en sus mejores stores, por 20$

xDDD

El prog no me ha llebado demasiado tiempo, pero he invertido cantidad de tiempo en buscar métodos, leer api y ir probando diferentes formas de hacer lo mismo (mensajes, anidación, copias, etc...).
No me acaba de cuadrar el autorelease en las funciones... es extraño pero cuando lo pongo, se sale del prog y se pira al springboard... creo que la ReleasePool actua automaticamente para las NSStrings... :S

Tengo que leer mas.

Es un mundo, pero es cojonudo macho! ^^

HoTiTo

Yo estoy como tú, solo que en vez de para iPhone, para OSX. Tengo que entregar dentro de 24 días un proyecto de un editor de texto online vía paso de mensajes (una especie de Google Docs) para OSX, desarrollado en Cocoa con Xcode.

Estuve con Objective-C, pero no me leí toda la documentación ni harto coca. Como dices, es MUY MUY AMPLIA. Viniendo de C++ no cuesta mucho ir pillando el tema, pero es diferente (no se llama al objeto, se le envía un mensaje xDD). Ando con la documentación de Cocoa sobre creación básica de aplicaciones en Xcode con Objective-C, Interface Builder, el modelo MVC y toda la hostia puta. Voy contrarreloj pero tengo que reconocer que es maravilloso la cantidad de documentación que hay, lo bien hecho que está todo y lo exageradamente sencillo que lo han querido hacer.

Si flipé con QT, con Cocoa me estoy llevando una muy grata sorpresa también.

Sigue comentando tus experiencias, están interesantes xD

bLaKnI

Es cojonudo.
Hoy si puedo haré una magnífica aplicación...

Os encantará... xD

PD: tengo que aprender como puedo distribuir dicha aplicación sin pasar por AppStore.
Es decir, si puedo instalarla en el iphone de algun otro compi, o pasar algunas claves particulares por aquí para que podais probar...
Sabeis como va el tema?

PiTaGoRaS

#7 Aquí tienes cómo hacerlo, pero es básicamente lo que comentabas antes, dar de alta el UDID del iPhone + instalar un provisioning profile.

Lo que te comentaba en el otro hilo de usar un framework intermedio como Appcelerator Titanium yo lo hago (más bien lo voy a hacer) por dos razones:

1) Porque no tendré que aprender Objective-C, sino que puedo programar la app al completo en Javascript + HTML5 + CSS, que ya conozco.

2) Porque el mismo código que generas se puede compilar y distribuir para otras plataformas, como Android, con cuatro cambios mínimos.

Pero también tiene inconvenientes claro, como que la API de Titanium por ejemplo no soporta aún todas las características del SDK, pero sí la mayoría de ellas.

bLaKnI

Pero como va eso?
Haces "una web" y se convierte?

Paso paso... nunca me han gustado los frameworks. Siempre he sido de picar cual esclavo, empollar bien la api, y aprovecharla 1000 a 1000. Amén de que me encanta aprender nuevos lenguajes y pasar tiempo perdido en las profundidades de la API.

PiTaGoRaS

Un framework per se no es nada malo, ni restrictivo ni emperora la calidad del software, más bien al contrario. Es una manera de facilitar la programación y establecer metologías para hacer ciertas cosas de manera más simple en vez de reinventar la rueda reescribiendo código que ya existe y ha sido testeado, lo cual a su vez trae más y más posibilidades de introducir bugs.

Ahora, en este caso en concreto, al usar Appcelerator Titanium tienes unas ventajas y unos inconvenientes, que ya te he comentado brevemente. Es cuestión de ponerlo en una balanza y sopesarlos a ver qué es lo más conveniente para tu caso en particular. A mi personalmente me parece muy ventajoso porque puedo crear una aplicación y distribuirla para iPhone y Android simultáneamente, sin tener que escribir el código en 2 lenguajes distintos. Aparte, yo ya sé Javascript con lo cual puedo comenzar a desarrollar desde ya.

Si en algún momento me encuentro con un obstáculo insalvable, como alguna funcionalidad específica del SDK que no esté soportada aún por Titanium, entonces será el momento de plantearse si merece la pena dar marcha atrás y escribir código nativo, pero es algo que en general puedes preveer durante la fase de analisis. Además Titanium en concreto es un framework muy bien construido y te permite insertar tus propios modulos escritos en el código nativo de la plataforma.

El cómo funciona Titanium, pues es bastante sencillo. Lo que hace es básicamente utilizar controles WebView nativos para meter screens construídas con HTML y CSS dentro de una aplicación nativa. Además tiene su propia API en Javascript que sirve de "puente" para acceder a funciones del dispositivo, como la cámara, el acelerómetro, sonido, vibración, etc. Y todo esto lo haces sin preocuparte de si debajo hay un iPhone OS o un Android.

Si te da por probarlo tienen una demo app llamada KitchenSink que sirve como fuente de ejemplos de código y como batería de pruebas de la API de Titanium, para que veas todo lo que es capaz de hacer, y es impresionante ver cómo el resultado es indistinguible de una app nativa, tanto gráficamente como en velocidad de reacción, suavidad, etc.

Usuarios habituales