DISPOSITIVOS MÓVILES IPHONEdiagramas.diagramasde.com/otros/iPhoneIntro.pdf · El número de...
Transcript of DISPOSITIVOS MÓVILES IPHONEdiagramas.diagramasde.com/otros/iPhoneIntro.pdf · El número de...
DISPOSITIVOS MÓVILESIPHONE
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
INTRODUCCIÓ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 dis-positivos móviles, para posteriormente, realizar un análisis y diseño de la aplicación desarrolla-da para el curso de “Desarro"o de Dispositivos Móviles” del Máster de Ingeniería Web de la Uni-versidad 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 tec-nologí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 Fe-brero 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 as-pecto 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á ca-paz 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 ha-cen 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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, fra-meworks 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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
IPHONE, CARACTERÍSTICAS Y FUNCIONALIDADES
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 desarro-llado 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 Ene-ro de 2007 en la Macworld de ese año.
iPhone
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 siste-ma 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 fun-ciona 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 opera-doras.
• Tecnología multitactil que revoluciona la manera de interactuar entre el usuario y el disposi-tivo.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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ági-na 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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Página principal en modo apaisado
Galería de fotos en el iPhone
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Página de datos personales
Formulario en un iPhone
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Página de contacto en modo apaisado
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
PLATAFORMA 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 dis-positivo (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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Xcode
Esta herramienta trabaja con ficheros Java (.java), C/C++ (.h,.c,.cpp), Objective-C (.h,.m) y Ob-jective-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 actual-mente 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Proyecto en Xcode
Los últimos test de la aplicación, antes justo de ser puesta en producción o distribuirla oficial-mente, 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 apli-caciones. 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 rendimien-to que en una CPU) así como del uso de la batería que está haciendo.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Lenguaje de desarrollo
La plataforma iPhone OS usa el lenguaje Objective-C para el desarrollo de la aplicación. Objec-tive-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:
E X T E N S I Ó N T I P O
.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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 fra-meworks 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, utili-zado en el desarrollo de aplicaciones para Mac OS X, y Cocoa Touch:
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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, segu-ridad, manejo de la memoria y los drivers del dispositivo.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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:
Listado de Frameworks en iPhone OS
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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
PROCESO DE DESARROLLO DE UNA APLICACIÓN EN EL IPHONE
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 breve-mente 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 ha-cerlo 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
El uso de la memoria
El uso de la memoria es crucial en cualquier software, pero cuando estamos hablando de móvi-les aún más. El iPhone no dispone de espacio de cache para la memoria luego hay que tener es-pecial 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 Instru-ments 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á in-mediatamente, 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 desarro-lladas 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 apli-cación se cerrara (entra en modo pausa) y es nuestro deber guardar tanto los datos como el es-tado 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 dis-positivo. Dicha ventana puede tener varias vistas pero el usuario accederá a ellas de manera se-cuencial 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 ejem-plo, si es un buen punto de partida y por dónde seguro irán muchos desarrolladores de aplica-ciones para el iPhone.
Estilo de las aplicaciones
Decidido que tipo de aplicación desarrollar ( en nuestro caso nativa en el iPhone ), hay que sa-ber 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 organiza-ció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 usua-rio.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 mos-trar la información. Suelen ser visualmente atractivas y la información se organiza en una suce-sió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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
3. Aplicaciones a pantalla completa
Este tipo de aplicaciones ofrecen todo su contenido a pantalla completa y con una riqueza vi-sual 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 an-teriores 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 desa-rrolladores 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 ex-pertos. Si buscas que se diviertan o resuelvan un problema o necesidad. Está dirigida a perso-nas jóvenes, ejecutivos o personas mayores. Se va a ejecutar todos los días como puede ser le-er 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
• Utilizar una gama de colores para la interfaz gráfica que consiga transmitir al usuario un fe-eling 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 de-dos, 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 su-periores 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 ofre-cer 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 requi-sito que como desarrolladores debemos estudiar para poder abordar el desarrollo de la aplica-ció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”.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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.
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 obje-to determinado para su ejecución.
#import <UIKit/UIKit.h> int main(int argc, char *argv[]) { NSAutoreleasePool* pool = [NSAutoreleasePool new]; UIApplicationMain(argc, argv, @"UIApplication", @"AppController"); [pool release]; return 0; }
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Ciclo de vida de una aplicación
Por último, conocer el entorno de ejecución de las aplicaciones es fundamental y último requi-sito que como desarrolladores debemos estudiar para poder abordar el desarrollo de la aplica-ció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 aplica-ción se inicia el Events and Drawing cycle, el cual captura los eventos y responde ante ellos. Pe-ro 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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, restaura-ción y desinstalación.
Directorios del SandBox
El Bundle es un directorio en el sistema de ficheros del iPhone que agrupa los recursos comu-nes de la aplicación (ejecutable, imágenes, recursos de internacionalización)
MiAplicacion.appApplicationHome/ Documentos/ Library/Preferences Tmp/
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
El bundle de una aplicación
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)ApplicationHome/ 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)
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 nu-meras 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
Uso de 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.. }
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
• Uso de la cámara
Integrar la cámara en la aplicación desarrollada, permitiendo hacer fotos ( vídeo aún no) y tra-bajar con ellas directamente desde nuestro software.
A continuación un ejemplo de como iniciar la cámara desde nuestra aplicación
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 utili-zando 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.
-(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; }
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Uso de la localización en el iPhone
@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
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
APLICACIÓ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 to-do para investigar y documentar las tecnologías utilizadas en el iPhone, las herramientas dispo-nibles, 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 desarro-lladores 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 even-tos en el interfaz llevada a cabo por el controlador ReboteView. A su vez el botón una vez mo-vido cambia un poco de tamaño y tras unos segundos vuelve a su posición de partida. Si se lan-za 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ódi-go Xcode.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
Aplicación Rebote en el simulador del iPhone
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
DISTRIBUCION DE LAS APLICACIONES
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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
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 desa-rrolladores.
Una vez elegido el plan (comercial, autónomo o empresa) y realizado el pago de la correspon-diente cuota anual, el desarrollador puede categorizar su aplicación y ponerla/ subirla a la plata-forma 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
CONCLUSIONES
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 sus-tenta 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 correcta-mente 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.
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
REVISIÓN HISTÓRICA DEL DOCUMENTO
La siguiente tabla describe los cambios realizados en Dispositivos móviles, iPhone.
F E C H A C A M B I O S
02/06/2008 Publicado el documento original de Dispositivos móviles, iPhone
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]
02-06-2008 | © Máster en Ingeniería Web
Eduardo González Fernández, [email protected]