Dispositivos moviles
Transcripción
Dispositivos moviles
02-06-2008 | © Máster en Ingeniería Web DISPOSITIVOS MÓVILES IPHONE Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web TABLA DE CONTENIDO INTRODUCCIÓN 4 Como leer este documento 5 Organización del documento 5 Mirar también 6 IPHONE, CARACTERÍSTICAS Y 7 FUNCIONALIDADES 7 iPhone 7 Renderizado de un sitio web 10 PLATAFORMA DE DESARROLLO 14 Herramientas de desarro"o 14 Lenguaje de desarro"o 19 Tecnologías en el iPhone 20 PROCESO DE DESARROLLO 24 DE UNA APLICACIÓN EN EL IPHONE 24 Tamaño de la panta"a 24 El uso de la memoria 25 Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Aplicaciones simultáneas 25 Ventanas simultáneas 26 Simplicidad absoluta 26 Tipos de aplicaciones 26 Estilo de las aplicaciones 27 Diseño de una aplicación para el iPhone 29 Entorno de ejecución de una aplicación 30 Ciclo de vida de una aplicación 32 El SandBox y el Bundle 33 Integrar características del iPhone 35 APLICACIÓN DESARROLLADA 38 Rebote 38 DISTRIBUCION DE LAS 40 APLICACIONES 40 App Store 41 CONCLUSIONES 42 REVISIÓN HISTÓRICA DEL 43 DOCUMENTO 43 Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web I N T RODUCCIÓN El objetivo de este informe es en primer lugar, describir las funcionalidades del nuevo teléfono de Apple Inc. y estudiar el entorno de desarrollo que nos brindan a los desarrolladores de dispositivos móviles, para posteriormente, realizar un análisis y diseño de la aplicación desarrollada para el curso de “Desarro"o de Dispositivos Móviles” del Máster de Ingeniería Web de la Universidad de Oviedo A su vez, hay que tener claro y en mente, que estamos ante un nicho todavía en evolución, o mejor dicho, en crecimiento continuo. El número de dispositivos móviles y el número de tecnologías nacidas a su alrededor es cada vez más grande. La presentación del iPhone en Enero de 2007 fue un revulsivo en todo el panorama internacional pero aún lo fue más la salida en Febrero de 2008 del SDK para el iPhone OS, el conjunto de herramientas y documentación para poder desarrollar, probar las aplicaciones para el iPhone. El desarrollo para dispositivos móviles abarca uno de los aspectos más importantes y con más evolución dentro de la informática de los últimos años. Invitamos al lector a que profundice en este apasionante mundo todo lo que cree oportuno y comparta todo lo que sea necesario. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Como leer este documento Este documento está dirigido a desarrolladores para dispositivos móviles y más concretamente a desarrolladores de la plataforma Mac OS X y en su defecto de la plataforma iPhone OS. Se estudiarán aspectos importantísimos del framework en el que se sustenta el iPhone OS, las capas que lo forman así como el único lenguaje disponible actualmente para el desarrollo de las aplicaciones. La usabilidad y la riqueza de interfaces de usuario en dispositivos móviles también será un aspecto en los que se profundice y en los que el lector deberá prestar suma atención ya que su importancia es sublime. No pretende ser un tutorial ni de Cocoa Touch ni de Objetive-C aunque tras su lectura será capaz de iniciarse en el desarrollo de aplicaciones móviles en Objective-C para el iPhone OS. Organización del documento Este documento contiene los siguientes puntos: • iPhone características y funcionalidades donde se hace un repaso a las características que hacen del iPhone un gran dispositivo móvil. • Plataforma de desarrollo, donde se estudia que nos brinda Apple Inc para el desarrollo de una aplicación para el iPhone • Proceso de desarrollo de una aplicación en el iPhone, donde estudiamos cuales son los puntos que hay que estudiar y conocer para desarrollar una buena aplicación • Aplicación desarrollada, donde se explica cuál fue la aplicación creada. • Distribución de las aplicaciones, donde se comenta como se lleva a cabo la distribución de las aplicaciones. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Mirar también Para un análisis más detallado de programación de aplicaciones para el iPhone en La Guía de programación para el iPhone * Para un análisis detallado de Cocoa, en La Guía fundamental de Cocoa. * Información general para desarrolladores de la plataforma Mac OS X en el Apple Developer Connection. * Información específica para desarrolladores del iPhone en iPhone Developer Programa * Información sobre el teléfono en la sección iPhone de la página oficial de Apple. * Videopodcast en iTunes de ingenieros de Apple sobre Cocoa, Objective-C, tecnologías, frameworks y desarrollo para el iPhone. Wiki en español para programadores Mac OS X. Macprogramadores, página en español con diferentes manuales, recursos, noticias y enlaces destinados a programadores Mac OS X. *Requiere registro en la sección de desarro"adores de Apple Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web I P H O NE, CARACTERÍSTICAS Y F U N CIONALIDADES Como se ha comentado anteriormente, en un primer momento se describirán las principales características y funcionalidades, que nos brinda al usuario, el primer terminal móvil desarrollado por Apple Inc. que tantas expectativas causo internacionalmente y que está causando en España debido a su inminente salida en Junio de 2008. iPhone iPhone es el nombre que recibe el primer dispositivo móvil presentando por Apple el 9 de Enero de 2007 en la Macworld de ese año. iPhone Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Estuvo disponible a la venta en Junio de ese mismo año, atado a un contrato de permanencia de dos años con la compañía de telecomunicaciones AT&T. Presenta las siguientes características: • Peso de 135 gramos y tamaño de 115*61*11.6 mm. • Pantalla de 3’5 pulgadas y resolución de 320*480 multitactil. • Capacidad inicial de 4gb y 8gb. Actualmente los modelos disponibles son de 8gb y 16gb. • Teléfono cuatribanda con tecnología Wi-Fi (802.11b/g), EDGE y Bluetooth 2.0 • Cámara de 2mpx • Autonomía de 5 horas en conversación • Dispone de sensores de proximidad, de luminosidad y de movimiento. • Sistema operativo Mac OS X. Pero en lo que destaca es por la cantidad de funcionalidades y aplicaciones que gracias al sistema operativo posee: • Incorpora como reproductor de música un iPod, es decir, es además de un teléfono un iPod. • Se sincroniza y se transfiere todo el contenido mediante la aplicación iTunes, por tanto funciona tanto si se es un usuario de Mac como de PC. • Dispone de agenda, calendario, navegador web (Safari Mobile), aplicación para fotos y vídeos. Todo ello transferible al PC o Mac gracias al iTunes. • Dispone de Mail, permitiendo el uso de cuentas de correo de tipo IMAP y POP3 • Google Maps con geo-posicionamiento gracias a la triangulación de las antenas de las operadoras. • Tecnología multitactil que revoluciona la manera de interactuar entre el usuario y el dispositivo. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Distintas aplicaciones en el iPhone Internet, Video y Google Maps en el iPhone Con la distribución del SDK del iPhone a los desarrolladores se prevé un auténtico aluvión de aplicaciones para el iPhone a partir de Julio de 2008. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Renderizado de un sitio web Por último, se muestran unas capturas de pantalla del renderizado que hace Webkit en Safari Mobile, algo al que se tenderá paulatinamente en los navegadores web móviles y que ya los terminales con Windows Mobile lo consiguen aunque con algunas limitaciones. El sitio web se muestra tal como es, es decir, no se lleva a cabo ninguna redirección a una página equivalente y formateada para dispositivos móviles. Lá página web testeada es la del alumno, accesible desde la dirección http://156.35.98.69:8080 Página principal Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Página principal en modo apaisado Galería de fotos en el iPhone Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Página de datos personales Formulario en un iPhone Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Página de contacto en modo apaisado Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web P L ATAFORMA DE DESARROLLO Para el desarrollo de una aplicación para el iPhone y en su defecto para el iPod Touch, Apple Inc. anunció de manera oficial a finales de Febrero de 2008 la salida del SDK del iPhone, un conjunto de herramientas, tecnologías, documentación y código de ejemplo para el desarrollo, testeo, depuración y simulación de las aplicaciones en el iPhone. Hasta dicha fecha, la única manera de desarrollar aplicaciones para el iPhone era a través de páginas web o proyectos web. Para ello se disponía y se sigue disponiendo de información en el área de desarrolladores de Apple que guían al programador en dicho cometido de una manera eficiente. Pero el ansia de multitud de programadores, que habían conseguido hacer un Jailbreak del dispositivo (abril el terminal y conseguir instalar aplicaciones de terceros violando la política de privacidad de Apple y poner en peligro la seguridad del teléfono) les llevo a elaborar una SDK oficial permitiendo el desarrollo controlado de aplicaciones nativas para el iPhone. Herramientas de desarrollo Para el desarrollo de una aplicación que pueda ser instalada de manera oficial en el iPhone se dispone de tres herramientas: • Xcode Es un IDE (entorno integrado de desarrollo) que permite escribir, compilar, ejecutar y depurar el código, así como organizar los ficheros por proyectos e importarlos y exportarlos de manera sencilla y eficiente. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Xcode Esta herramienta trabaja con ficheros Java (.java), C/C++ (.h,.c,.cpp), Objective-C (.h,.m) y Objective-C++ (.h,.mm,.M), e incluso podemos hacer un programa parte en Objective-C y parte en Java. Pero concretamente, para desarrollar una aplicación para el iPhone sólo es disponible actualmente hacerlo en Objective-C. Cuando se está desarrollando una aplicación en Xcode, se puede elegir entre realizar el build en un simulador o en el propio terminal conectado al Mac. El simulador provee un entorno local de ejecución sin la necesidad de tener que conectar el iPhone, muy adecuado en las primeras fases del desarrollo. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Proyecto en Xcode Los últimos test de la aplicación, antes justo de ser puesta en producción o distribuirla oficialmente, es recomendable llevarlos a cabo en el propio terminal. • Interfaz Builder Es la herramienta para el desarrollo visual de la interfaz gráfica de las aplicaciones tanto para Mac como recientemente para el iPhone. Mediante drag and drop ( arrastrar y soltar ) se van añadiendo los componentes, controles y creando la interfaz de la aplicación. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Interfaz Builder Se genera código envueltos en ficheros .nib ( ficheros de descripción de la componente gráfica ) que se cargan al arrancar la aplicación y que usa Cocoa Touch para pintar la ventana con sus componentes, vistas y controles en la pantalla. • Instruments Instruments es una potente herramienta de depuración y de análisis de rendimiento de las aplicaciones. Permite ejecutar la aplicación tanto en el simulador como en el teléfono y realizar trazas de la cantidad de memoria que está consumiendo en cada momento ( un aspecto vital de las aplicaciones al ser ejecutadas en un entorno con más limitaciones de memoria y rendimiento que en una CPU) así como del uso de la batería que está haciendo. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Instruments Permite comprobar a su vez el uso y/o consumo de la red que se está llevando. Uso de Instruments para mejorar la aplicación Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Lenguaje de desarrollo La plataforma iPhone OS usa el lenguaje Objective-C para el desarrollo de la aplicación. Objective-C es un lenguaje orientado a objetos que extiende el lenguaje estándar ANSI C. La sintaxis básica así como el diseño están basados en Smaltalk, uno de los primeros lenguajes orientados a objetos. Provee sintaxis para la definición de clases, métodos, propiedades, protocolos e interfaces. A su vez, toda la toma de decisiones se realiza en tiempo de ejecución y se dejan pocas decisiones para el compilador. Los diferentes tipos de fichero existentes se pueden resumir en la siguiente tabla: EXTENSIÓN TIPO .h Fichero de cabecera. Contiene las declaraciones de clases, el tipo, funciones y constantes .m Fichero de recursos. Contiene el código en Objecive-C .mm Fichero de recursos. Contiene el código en C++. Sólo se utiliza para referenciar a código anteriormente creado y que se quiere enlazar en la aplicación. Tabla con las extensiones de ficheros en Objective-C Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Tecnologías en el iPhone La implementación del sistema iPhone OS se puede ver como un conjunto de capas, donde la capa más baja corresponde a los servicios fundamentales en los cuales la aplicación delega mientras las capas superiores contienen los servicios y tecnologías más sofisticadas. Capas en el iPhone OS • Cococa Touch Cocoa Touch es la capa más importante de todas en el iPhone OS, ella comprende dos frameworks fundamentales, como son el UIKit y el Foundation framework. Se puede decir que Cocoa Touch es una evolución del API, ya existente en la plataforma Mac, llamada Cocoa ( traducido al español como chocolate, como referencia al café que tomaban los programadores Java), añadiendo características para el soporte de la tecnología multitactil. En la siguiente imagen podemos ver la pequeña diferencia a grandes rasgos entre Cocoa, utilizado en el desarrollo de aplicaciones para Mac OS X, y Cocoa Touch: Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Cocoa vs Cocoa Touch Luego los dos Objective-C Frameworks que contiene son: 1. UIKit: Framework en Objective-C que provee la infraestructura para la implementación de los gráficos, la estructura de la aplicación, el control de los eventos, el manejo de la interfaz, la representación de las vistas y controles así como el soporte de texto y contenido web. Soporta a su vez código para el manejo del acelerómetro, la cámara, la librería de fotos o toda la información que posee el dispositivo. Aunque el conjunto de clases es mucho más extenso, las más significativas se pueden observar en la siguiente imagen: UIKit Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web 2. Foundation: Framework en Objective-C que define el acceso y manejo de objetos, provee acceso a los tipos de datos primitivos, colecciones y servicios del sistema operativo. • Media Esta capa contiene los frameworks y servicios dependientes de Core Services y que proveen los servicos de gráficos y multimedia a la capa superior, Cocoa Touch. Incluye Core Graphics, OpenGLES, Core Animation, Core Audio y tecnologías de Video. • Core Services Los frameworks de esta capa proveen la manipulación de strings, colecciones, el manejo de contactos y las preferencias así como las utilidades de URL o de la red. Esta capa incluye el framework Core Foundation, el cúal ofrece una abstracción a los tipos de datos, como strings y colecciones. • Core OS Esta es el nivel que contiene el Kernel, los ficheros del sistema y la infraestructura de red, seguridad, manejo de la memoria y los drivers del dispositivo. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Vale la pena terminar éste capítulo con un nuevo repaso y vista más profunda a una de las capas más importantes del iPhone OS, Cocoa Touch. Cocoa Touch Quizás el framework más conocido de todos sea el UIKit, el cual como ya hemos comentado, nos permite crear interfaces gráficas y todo lo que concierne al usuario como la aplicación, pero no nos aislemos en un solo framework. El listado completado de Frameworks disponibles en el SDK del iPhone OS, cuya descripción no entra en el ámbito de este documento es el siguiente: 1. Address Book 2. Address Book UI 3. Audio Toolbox 4. Audio Unit 5. CFNetwork 6. Core Audio 7. Core Foundation 8. Core Graphics 9. Core Location 10. Foundation 11. Media Player 12. OpenGL ES 13. Quartz Core 14. Security 15. System 16. System Configuration 17. UIKit Listado de Frameworks en iPhone OS Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web P RO CESO DE DESARROLLO D E U NA APLICACIÓN EN EL IPHON E El proceso desarrollo de una aplicación para el iPhone y en su defecto para el iPod Touch, pasa por un ciclo de vida, además de conocer la plataforma y las tecnologías a utilizar ( vistas brevemente en el capítulo anterior ), que pasaremos a resumir a continuación. Lo primero de todo es tener en cuenta que desarrollar para un teléfono no es lo mismo que hacerlo para un ordenador , es decir, no es lo mismo hacer una aplicación para el iPhone que para un Mac. Los motivos de tal afirmación son: Tamaño de la pantalla El tamaño de la pantalla es considerablemente menor que en un Mac, por tanto el desarrollador debe tener en cuenta dicho aspecto durante todo el desarrollo y más concretamente durante el diseño de la interfaz de usuario. El tamaño es exactamente en el iPhone de 480*320, por tanto la interfaz de usuario se debe de centrar en lo esencial que el usuario pueda necesitar en cada pantalla, o mejor dicho en cada vista. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web El uso de la memoria El uso de la memoria es crucial en cualquier software, pero cuando estamos hablando de móviles aún más. El iPhone no dispone de espacio de cache para la memoria luego hay que tener especial cuidado con el uso de memoria que la aplicación lleva a cabo en cada momento. Para ello, como ya se ha comentado anteriormente, se ofrece al desarrollador la aplicación Instruments a través de la cual podemos monitorizar el uso que está realizando nuestra aplicación en cada momento. El iPhone introduce un mecanismo a través del cuál se produce un evento cuando el dispositivo se está quedando sin memoria. En el caso de que no se haga nada, la aplicación se cerrará inmediatamente, por tanto es nuestro deber ( por el bien del usuario ) implementar que hacer en caso de que se produzca dicho evento o aviso ( guardar datos, estado de la aplicación etc.). Aplicaciones simultáneas El iPhone sólo permite que haya una aplicación corriendo o ejecutándose (aplicaciones desarrolladas por nosotros, este es el motivo por el cuál no es posible introducir una máquina virtual de Java y desarrollar aplicaciones en Java; por ahora) a la vez. Luego si se está utilizando nuestra aplicación y el teléfono suena o nos llega un mensaje la aplicación se cerrara (entra en modo pausa) y es nuestro deber guardar tanto los datos como el estado de la aplicación lo más rápido posible, para ofrecer al usuario un entorno rico y agradable, y no ofrecerle una experiencia de usuario negativa. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Ventanas simultáneas Esta es una de las gran diferencias entre una aplicación de escritorio y una aplicación para un móvil, y es que el iPhone sólo permite una ventana ( por motivos obvios ) simultánea en el dispositivo. Dicha ventana puede tener varias vistas pero el usuario accederá a ellas de manera secuencial y nunca simultáneamente. Simplicidad absoluta Este es uno de los aspectos en los que actualmente muchas aplicaciones para móvil carecen. Y es que el usuario una vez arrancada la aplicación nunca debe de preguntarse que hacer o como hacer tal cosa. La simplicidad de la aplicación debe ser absoluta evitando en primer lugar tener que recurrir a implementar una ayuda. Tipos de aplicaciones Una vez conocido los aspectos anteriores, hay que decidir que tipo de aplicación desarrollar. Existen tres opciones actualmente: 1. Aplicación web Aplicación basada solamente en contenido web, adaptado a la pantalla y uso del iPhone. 2. Aplicación nativa Aplicación que reside en el teléfono y que hace uso de todas las tecnologías del iPhone. Es nuestro propósito para la aplicación de ejemplo desarrollada. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web 3. Híbrido entre los dos anteriores Aplicación nativa en el iPhone pero que parte de sus funcionalidades e infraestructura la lleva a cabo a través de una aplicación web. Aunque no es el cometido de nuestra aplicación de ejemplo, si es un buen punto de partida y por dónde seguro irán muchos desarrolladores de aplicaciones para el iPhone. Estilo de las aplicaciones Decidido que tipo de aplicación desarrollar ( en nuestro caso nativa en el iPhone ), hay que saber que existen, fundamentalmente, tres tipos de estilo de aplicaciones: 1. Aplicaciones Productivas Las aplicaciones productivas son esa clase de aplicaciones donde prima ante todo la organización y manipulación de la información. El usuario en este tipo de aplicaciones agradece ante todo encontrar fácilmente la información, sin prestar demasiada atención a la interfaz de usuario. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web La información, en este tipo de aplicaciones, se aconseja mostrarla de lo más general a lo más específico, permitiendo que sea el usuario quien navega si lo desea de menús más generales a menús con un nivel de detalle mayor. 2. Aplicaciones de utilidad Las aplicaciones de utilidad se caracterizan por requerir la mínima acción del usuario para mostrar la información. Suelen ser visualmente atractivas y la información se organiza en una sucesión de vistas, en contraste con las productivas que la información se organiza de manera... El usuario no necesita navegar en vistas más específicas para encontrar la información, sino que el tipo de información es la misma en cada vista. El usuario navega por las diferentes vistas para encontrar la misma información pero de diferentes objetos. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web 3. Aplicaciones a pantalla completa Este tipo de aplicaciones ofrecen todo su contenido a pantalla completa y con una riqueza visual excelente. Videojuegos, música o reproductores de vídeo son las que encajan en este tipo de aplicaciones donde lo que busca el usuario es divertirse y pasarlo bien. Se basan en el contenido visual y en la experiencia de usuario. Utilizan una cantidad enorme de información pero que no se muestra al usuario, por lo que éste no necesite que se le muestren barras de navegación o métodos de acceder a la información como sucede en las dos clases anteriores de aplicaciones. Diseño de una aplicación para el iPhone Elegido el tipo de aplicación, y el estilo que más se acorde a nuestro objetivo final, como desarrolladores deberíamos seguir unas recomendaciones básicas para obtener una buena aplicación de móvil, en este caso para el iPhone: • Definir exactamente nuestro producto o aplicación. • Conocer la audiencia hacia la cual va dirigida nuestra aplicación, si son novatos o usuarios expertos. Si buscas que se diviertan o resuelvan un problema o necesidad. Está dirigida a personas jóvenes, ejecutivos o personas mayores. Se va a ejecutar todos los días como puede ser leer el correo o sólo en momentos puntuales a lo largo de la semana. • Recordar que la aplicación se ejecutará en un móvil, luego tiene que ser sencilla y debe de abrirse y cerrarse lo más rápido posible. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web • Utilizar una gama de colores para la interfaz gráfica que consiga transmitir al usuario un feeling de lo que es la aplicación. • Hacer la aplicación simple y fácil de usar.Para ello minimizar la entrada de datos por parte del usuario y centrarse en lo que el usuario requerirá en cada vista de la aplicación. • Separar adecuadamente los botones, o cualquier objeto sustancial de ser pulsado con los dedos, para evitar pulsaciones erróneas por parte del usuario. • Utilizar barras de estado adecuadas para la aplicación. Las barras de estado son las barras superiores que se muestran en las vistas de la aplicación. • Evitar pantallas de bienvenida o Acerca de nada más lanzarse la aplicación, esto nada más que hace retrasar el uso de la aplicación por parte del usuario y puede llegar a irritarle cuando su uso es continuo. • Por defecto, el uso debe de ser en modo vertical y no forzar que cuando la aplicación se lance el usuario tenga que rotar el dispositivo. • Almacenar el estado de la aplicación cuando se cierra y restaurarla adecuadamente para ofrecer una experiencia de uso rica. • Implementar o tener presente en todo momento que hacer cuando la aplicación recibe una notificación de falta de memoria, evento que puede producirse dentro del ciclo de vida de una aplicación tal como se comentará a continuación. Entorno de ejecución de una aplicación Por último, conocer el entorno de ejecución de las aplicaciones es fundamental y último requisito que como desarrolladores debemos estudiar para poder abordar el desarrollo de la aplicación de forma eficiente. El entorno de ejecución de una aplicación en el iPhone está continuamente recibiendo eventos del sistema y respondiendo a dichos eventos presentándolos al usuario de manera adecuada. Este es el patrón de diseño llamado “Event and drawing cycle”. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Diagrama de Apple Developers que ilustra el Event and drawing Cycle Una vez que la aplicación se ejecuta, el sistema operativo del iPhone llama a la función Main (punto de entrada en cualquier aplicación). La principal clase es la UIApplicactionMain, la cual inicializa el Event and Drawing Cycle. #import <UIKit/UIKit.h> int main(int argc, char *argv[]) { NSAutoreleasePool* pool = [NSAutoreleasePool new]; UIApplicationMain(argc, argv, @"UIApplication", @"AppController"); [pool release]; return 0; } Main en una aplicación del iPhone El sistema detecta los eventos ocurridos en el dispositivo y los coloca en “la cola de eventos de la aplicación”. El objeto de la aplicación coge el evento superior de la cola y lo delega en el objeto determinado para su ejecución. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Ciclo de vida de una aplicación Por último, conocer el entorno de ejecución de las aplicaciones es fundamental y último requisito que como desarrolladores debemos estudiar para poder abordar el desarrollo de la aplicación de forma eficiente. Diagrama de Apple Developers que ilustra el Ciclo de vida de una aplicación Como se muestra en el diagrama anterior, una vez que el usuario presiona el icono de la aplicación se inicia el Events and Drawing cycle, el cual captura los eventos y responde ante ellos. Pero existen eventos que pueden parar dicho ciclo de ejecución, como puede ser que el usuario presione el botón de Home o reciba una llama de teléfono o recibe una notificación de falta de memoria. Al sólo poder ejecutarse una aplicación simultáneamente, la actual se cerrará terminando su ejecución. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web El SandBox y el Bundle El SandBox es un conjunto de controles que limitan a la aplicación (por motivos de seguridad) el acceso a ficheros, recursos de red, de hardware etc. Toda aplicación instalada reside en un espacio de disco donde ninguna otra aplicación tiene acceso. Gracias al directorio root de la aplicación y su identificador único, el sistema construye el path o ruta del directorio único de la aplicación: /ApplicationRoot/ApplicationID Por tanto, durante la instalación, el sistema configura el entorno de ejecución de la aplicación, copia el Bundle en el directorio único y crea los subdirectorios correspondientes en el inicio. Este Sandbox (espacio único de cada aplicación) simplifica las operaciones de acceso, restauración y desinstalación. ApplicationHome/ MiAplicacion.app Documentos/ Library/Preferences Tmp/ Directorios del SandBox El Bundle es un directorio en el sistema de ficheros del iPhone que agrupa los recursos comunes de la aplicación (ejecutable, imágenes, recursos de internacionalización) Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web ApplicationHome/ MiAplicacion.app (ejecutable de la aplicación) Settings.bundle (preferencias de la aplicación) Icono.png (icono de la aplicación) Default.png (imagen de la pantalla de bienvenida si la hay) info.plist (lista de propiedades de la aplicación) yo.png (una imagen cualquiera) en.lproj (recursos de internacionalización) es.lproj (recursos de internacionalización) El bundle de una aplicación Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Integrar características del iPhone Aunque no entra dentro del ámbito de éste documento y de la aplicación desarrollada, debido a su alta complejidad, estudio a realizar y poco tiempo del que se dispone, los desarrolladores pueden hacer uso y de ésta manera explotar completamente las tecnologías del iPhone, de numeras características y funcionalidades extras como son, por ejemplo: • Uso del acelerómetro Utilizar el acelerómetro que viene integrado en el iPhone para dotar de mayor riqueza visual y experiencia de usuario a la aplicación, pudiendo cambiar las vistas y el interfaz gráfico según la posición del iPhone. Acelerómetro en el iPhone A continuación un ejemplo de como recibir un evento por medio del acelerómetro (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { UIAccelerationValue x, y, z; x = acceleration.x; y = acceleration.y; z = acceleration.z; // utilizar los valores para lo que queramos.. } Uso de acelerómetro Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web • Uso de la cámara Integrar la cámara en la aplicación desarrollada, permitiendo hacer fotos ( vídeo aún no) y trabajar con ellas directamente desde nuestro software. A continuación un ejemplo de como iniciar la cámara desde nuestra aplicación -(BOOL)startCameraPickerFromViewController:(UIViewController*)controller usingDelegate:(id<UIImagePickerControllerDelegate>)delegateObject { if ( (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) || (delegateObject == nil) || (controller == nil)) return NO; UIImagePickerController* picker = [[UIImagePickerController alloc] init]; picker.sourceType = UIImagePickerControllerSourceTypeCamera; picker.delegate = delegateObject; picker.allowsImageEditing = YES; // Ahora es cuando se muestra el interfaz de manera asíncrona [controller presentModalViewController:picker animated:YES]; return YES; } Uso de la cámara integrada en el iPhone • Uso de la localización del dispositivo Gracias al Framework Core Location, podemos conocer la posición actual del dispositivo utilizando para ello la triangulación de la señal emitida y recibida por la antena. Un ejemplo de ello es la aplicación de Google Maps que viene ya integrada con el iPhone, la cuál nos muestra nuestra localización en el mapa. A continuación un ejemplo del uso de la localización mediante el framework Core Location. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web @implementation MyLocationGetter - (void)startUpdates { // Creamos el manejador de la localización. if (nil == locationManager) locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.distanceFilter = 1000; // 1 kilometro locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; [locationManager startUpdatingLocation]; } // Método a implementar del protocolo CLLocationManagerDelegate. - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { // Ahora impedimos que se actualice para ahorrar la batería. [manager stopUpdatingLocation]; printf("latitude %+.6f, longitude %+.6f\n", newLocation.coordinate.latitude, newLocation.coordinate.longitude); } @end Uso de la localización en el iPhone Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web A P L I CACIÓN DESARROLLADA Para el curso de “Desarro"o de dispositivos móviles” de la Universidad de Oviedo se ha optado por el desarrollo de una aplicación sencilla (debido al poco tiempo disponible y utilizado sobre todo para investigar y documentar las tecnologías utilizadas en el iPhone, las herramientas disponibles, el proceso de desarrollo y el ciclo de vida de una aplicación para el iPhone) dentro del marco denominado Aplicaciones de Utilidad. El código fuente del proyecto se adjunta con ésta documentación. Rebote La aplicación desarrollada se llama Rebote. Se basa en una de las aplicaciones que los desarrolladores de Apple utilizan para ilustrar el iPhone SDK, como es el famoso Hello World. En este caso el botón o rectángulo puede moverse por la pantalla gracias a la captura de eventos en el interfaz llevada a cabo por el controlador ReboteView. A su vez el botón una vez movido cambia un poco de tamaño y tras unos segundos vuelve a su posición de partida. Si se lanza contra la barra de estado rebota. Es una sencillísima aplicación que intenta ilustrar mediante la captura de eventos, y el dibujado de ellos, el “Event and drawing cycle” estudiando con detenimiento en éste documento. Para la interfaz gráfica se ha utilizado Interfaz Builder mientras que para el desarrollo del código Xcode. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Aplicación Rebote en el simulador del iPhone Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web DI S T RI B U CI O N DE LAS A P L I CACIONES Una vez desarrollada y probada la aplicación, el siguiente paso es su distribución para ponerla en manos de los usuarios, y cuantos más mejor. Para ello, Apple ha puesto a disposición de los desarrolladores una plataforma de venta online llamada App Store. Ciclo de desarro"o de una aplicación, finalizando con su distribución. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web App Store Actualmente sólo está disponible para EEUU aunque previsiblemente, a partir de Julio de 2008, también lo esté para España. Para poder las aplicaciones a disposición de los usuarios, hay que darse de alta en uno de los tres planes que Apple ha puesto a disposición de los desarrolladores. Una vez elegido el plan (comercial, autónomo o empresa) y realizado el pago de la correspondiente cuota anual, el desarrollador puede categorizar su aplicación y ponerla/ subirla a la plataforma de distribución App Store eligiendo el mismo el precio de la misma así como permitir su descarga gratuita. El usuario, por contraste, accederá al App Store desde la aplicación iTunes de su Mac o PC. Una vez elegida la aplicación ha descargar y realizado el pago si ésta lo requiere se descargará automáticamente a su PC o Mac y ya podrá instalarla en el iPhone o iPod Touch de nuevo a través de la aplicación iTunes. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web CO N CLUSI O N ES Los desarrolladores de dispositivos móviles y desarrolladores de la plataforma Mac OS X han encontrado en la salida del iPhone y la distribución del SDK una oportunidad única de crear aplicaciones sobre un dispositivo que integra una cantidad enorme de nuevas tecnologías. El uso de la interfaz multitactil, los acelerómetros o la localización permiten crear aplicaciones o videojuegos con una riqueza visual, interfaz y sobre todo experiencia de usuario sobresaliente. Disponer a su vez de buenas herramientas de desarrollo y de una plataforma estable que lo sustenta todo, basada en Mac OS X y con Cocoa Touch como estandarte, hace que el proceso de desarrollo de una aplicación para el iPhone se centre exclusivamente en transmitir correctamente nuestro objetivo o finalidad de la aplicación desarrollada. El periodo de aprendizaje se centra en conocer el lenguaje Objective-c y estudiar el framework Cocoa Touch, a partir de ahí, el desarrollo y la distribución es sumamente sencillo. Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web R E V I SIÓN HISTÓRICA DEL DO C UMEN TO La siguiente tabla describe los cambios realizados en Dispositivos móviles, iPhone. FECHA 02/06/2008 CAMBIOS Publicado el documento original de Dispositivos móviles, iPhone Eduardo González Fernández, [email protected] 02-06-2008 | © Máster en Ingeniería Web Eduardo González Fernández, [email protected]