PROGRAMA FORMATIVO DE LA ESPECIALIDAD FORMATIVA DESARROLLO DE APLICACIONES MÓVILES BASADO EN PHONEGAP IFCT035PO DATOS GENERALES DE LA ESPECIALIDAD FORMATIVA 1. Familia Profesional INFORMÁTICA Y COMUNICACIONES Área Profesional: SISTEMAS Y TELEMÁTICA 2. Denominación: DESARROLLO DE APLICACIONES MÓVILES BASADO EN PHONEGAP 3. Código: IFCT035PO 4. Objetivo General: Generar aplicaciones multidispositivos con PHONEGAP válidas en IOS, Android, Windows Phone y web. 5. Número de participantes: Máximo 25 participantes en modalidad presencial y 80 en modalidad teleformación. 6. Duración: Horas totales: 60 Modalidad: Indistinta Distribución de horas: Presencial:................. 60 Teleformación:........... 60 CONTENIDOS FORMATIVOS: 1. EL MUNDO DE LAS APPS. 1.1. El mundo de las APPS. 1.1.1. Introducción. 1.1.2. Concepto. 1.1.3. Historia - Plataformas de distribución. 1.1.4. Sistemas Operativos Móviles. 1.1.5. Sistema Operativo por capas. 1.2.1. Kernel. 1.2.1.1. Middleware. 1.2.1.2. Entorno de ejecución de aplicaciones. 1.2.1.3. Interfaz de usuarios. 1.2.1.4. Tipologías. 1.3.1. App Nativa. 1.3.1.1. Web App. 1.3.1.2. App Híbrida. 1.3.1.3. Ejemplos. 1.3.1. Ciclo de vida de una APP. 1.3.1.1. Prototipo o interfaz gráfica. 1.3.1.2. Prototipado. Un poco de teoría. 1.3.1.3. Papel y lapicero. 1.3.1.4. Herramientas de prototipado online. 1.4.1. Modelo de datos o lógica 1.4.1.1. Codificación de la lógica según la tipología de la APP. 1.4.1.2. ¿Qué debe hacer nuestra lógica o modelo de datos?. 1.4.1.3. Implementación. 1.4.1.4. Generación de binarios y distribución en los market places. 1.4.1.5. Mantenimiento y actualización de la APP en los market places. 2. PHONEGAP. PRESENTACIÓN. ORIGEN Y PRESENTE. 2.1. Phonegap. Presentación. Origen y presente. 2.1.1. Introducción. 2.1.2. Concepto. 2.2. Características. 2.2.1. Definición = Características + Concepto. 2.2.2. Cuestiones para aclarar. 2.3. Precio de PHONEGAP. 2.3.1. ¿Cuál es la diferencia entre PHONEGAP y CORDOVA? 2.3.2. ¿Cuántas aplicaciones PHONEGAP hay disponibles en los stores o tiendas de APPS? 2.3.3. ¿Qué es PHONEGAP BUILD y qué diferencia tiene respecto al framework PHONEGAP? 2.3.4. ¿Es cierto que Apple rechaza proyectos desarrollados con PHONEGAP? 2.3.5. ¿Puede utilizarse PHP/ASP/JSF/Java/.NET con PHONEGAP? 2.3.6. Plataformas soportadas por PHONEGAP. 2.3.7. El API de PHONEGAP. 2.4. Acercamiento al API. 2.4.1. Disponibilidad de la API según el Sistema Operativo. 2.4.2. Instalando IDE Android para trabajar con PHONEGAP. 2.4.3. Requisitos mínimos 2.5. Sistemas Operativos. 2.5.1. Instalación del JDK. Pasos. 2.5.2. Instalación del SDK de Android. 2.6. Opciones. 2.6.1. ADT Bundle. Pasos. 2.6.2. Primer proyecto en Eclipse. 2.6.3. Creando mi primer proyecto PHONEGAP en Android. 2.7. Instalación de PHONEGAP. 2.7.1. Versión a instalar. 2.7.2. Descripción de Node.js. 2.7.3. Instalación de Node.js. 2.7.4. Instalando framework PHONEGAP desde npm. 2.7.5. Creación del proyecto híbrido PHONEGAP multiplataforma. 2.7.2. Creando un proyecto PHONEGAP para Android personalizado. 2.7.3. Cómo crear proyectos PHONEGAP para otras plataformas que no sean Android. 2.7.7. Alternativas a PHONEGAP. 2.8. Appcelerator. 2.8.1. Appcelerator VS Phonegap. 2.8.2. Conclusión. 2.8.2. Corona. 2.9. Conclusión. 2.9.1. Adobe AIR. 2.9.2. Adobe Air VS Phonegap. 3. PHONEGAP. ESTUDIANDO SU API (I). 3.1. PHONEGAP. ESTUDIANDO SU API (I). 3.1.1. Archivo de configuración. 3.2. Elementos y atributos de configuración generales. 3.2.1. Preferencias globales 3.2.2. Preferencias de múltiples plataformas. 3.2.3. El elemento feature. 3.2.4. Preferencias exclusivas de Android. 3.2.5. Instalando GIT. 3.4. Instalación. Pasos. 3.4.1. Accelerometer. 3.5. Instalación de Accelerometer. 3.5.1. Configuración de Accelerometer. 3.5.2. Métodos. 3.6. Accelerometer.getCurrentAcceleration. 3.6.1. Accelerometer. watchAcceleration. 3.6.2. Accelerometer.wearWatch. 3.6.3. Objeto acceleration. 3.6.4. Funciones callback. 3.7. AccelerometerSuccess. 3.7.1. AccelerometerError. 3.7.2. Parámetro opcional. 3.8. AccelerometerOptions. 3.8.1. Camera. 3.9. Instalación de Camera. 3.9.1. Configuración de Camera. 3.9.2. Métodos. 3.10. Camera.getpicture. 3.10.1. Camera.Cleanup. 3.10.2. Funciones callback. 3.11. Camerasuccess. 3.11.1. Cameraerror. 3.11.2. Cameraoptions. 3.11.3. Capture. 3.12. Instalación de Capture. 3.12.1. Configuración de Capture. 3.12.2. Métodos. 3.13. Capture.captureaudio. 3.13.1. Capture.captureimage. 3.13.2. Capture.capturevideo. 3.13.3. Options. 3.14. Captureaudiooptions. 3.14.1. Captureimageoptions. 3.14.2. Capturevideooptions. 3.14.3. Varios. 3.16. Configurationdata. 3.16.1. Captureerrorcb. 3.16.2. Mediafile. 3.16.3. Mediafiledata. 3.16.4. Compass. 3.17. Instalación de Compass. 3.17.1. Configuración de Compass. 3.17.2. Métodos. 3.18. Compass.getcurrentheading. 3.18.1. Compass.watchheading. 3.18.2. Compass.clearwatch. 3.18.3. Argumentos. 3.19. Compasssucess. 3.19.1. Compasserror. 3.19.2. Compassoptions. 3.19.3. Compassheading. 4. PHONEGAP. ESTUDIANDO SU API (II). 4.1. Phonegap. Estudiando su API (II). 4.2. Connection. 4.2.1. Instalación de Connection. 4.2.2. Configuración de Connection. 4.2.3. Propiedad. 4.3. Connection.type. 4.3.4. Constantes. 4.4. Contacts. 4.4.1. Instalación de Contacts. 4.4.2. Configuración de Contacts. 4.4.3. Métodos. 4.4.3.1. Contacts.create. 4.4.3.2. Contacts.find. 4.4.4. Argumentos. 4.4.4.1. Contactfields. 4.4.4.2. Contactsucess. 4.4.4.3. Contacterror. 4.4.4.4. Contactfindoptions. 4.4.4.5. Objetos. 4.5. Device. 4.5.1. Instalación de Device. 4.5.2. Configuración de Device. 4.5.3. Propiedades. 4.5.3.1. Device.model. 4.5.3.2. Device.cordova. 4.5.3.3. Device.platform. 4.5.3.4. Device.uuid. 4.5.3.5. Device.version. 4.6. Events. 4.6.1. Instalación de Events. 4.6.2. Configuración de Events. 4.6.3. Tipos de Eventos. 4.7. Deviceready. 4.7.1. Pause. 4.7.2. Resume. 4.7.3. Online. 4.7.4. Offline. 4.7.5. Backbutton. 4.7.6. Batterycritical. 4.7.7. Batterylow. 4.7.8. Batterystatus. 4.7.9. Menubutton. 4.7.10. Searchbutton. 4.7.11. Startcallbutton. 4.7.12. Endcallbutton. 4.7.13. Volumedownbutton. 4.7.14. Volumeupbutton. 5. PHONEGAP. ESTUDIANDO SU API (III). 5.1. Phonegap. Estudiando su API (III). 5.2. File. 5.2.1. Instalación de File. 5.2.2. Configuración de File. 5.2.3. DirectoryEntry. 5.2.3.1. Métodos. 5.2.4. DirectoryReader. 5.2.4.1. Métodos. 5.2.5. FileEntry. 5.2.5.1. Métodos. 5.2.6. FileError. 5.2.7. FileReader. 5.2.7.1. Métodos. 5.2.8. FileSystem. 5.2.9. FileTransfer. 5.2.9.1. Métodos. 5.2.10. FileTransferError. 5.2.11. FileUploadOptions. 5.2.12. FileUploadResult. 5.2.13. FileWriter. 5.2.13.1. Métodos. 5.2.14. Flags. 5.2.15. Localfilesystem. 5.2.15.1. Métodos. 5.2.16. Metadata. 5.2.17. Geolocation. 5.2.17.1. Instalación de Geolocation. 5.2.17.2. Configuración de Geolocation. 5.2.17.3. Métodos. 5.2.18. Argumentos. 5.2.18.1. Geolocationsuccess. 5.2.18.2. Geolocationerror. 5.2.18.3. Geolocationoptions. 5.2.18.4. Objetos. 5.2.19. Globalization. 5.2.19.1. Instalación de Globalization. 5.2.19.2. Configuración de Globalization. 5.2.19.3. Objetos. 5.2.19.4. Globalizationerror. 5.2.19.5. Métodos. 5.2.20. Inappbrowser. 5.2.20.1. Instalación de inappbrowser. 5.2.20.2. Configuración de inappbrowser. 5.2.20.3. Métodos. 5.2.21. Phonegap. Estudiando su API (IV). 5.2.22. Media. 5.2.22.1. Instalación de Media. 5.2.22.2. Configuración de Media. 5.2.22.3. Métodos. 5.2.22.4. Parámetros. 5.2.22.5. Constantes. 5.2.23. Notification. 5.2.23.1. Instalación de Notification. 5.2.23.2. Configuración de Notification. 5.2.23.3. Métodos. 5.2.24. Splashscreen. 5.2.24.1. Instalación de Splashscreen. 5.2.24.2. Configuración de Splashscreen. 5.2.24.3. Inclusión de la imagen de presentación. 5.2.24.4. Métodos. 5.2.25. Storage. 5.2.25.1. Localstorage. 5.2.25.2. Websql. 5.2.25.3. Instalación y configuración. 5.2.25.4. Métodos. 5.2.25.5. Argumentos. 5.2.25.6. Objetos. 6. ENFRENTÁNDONOS A NUESTRA PRIMERA APP. ORGANIZANDO IDEAS. 6.1. Enfrentándonos a nuestra primera APP. Organizando ideas. 6.2. Mockup. 6.3. URL y nociones básicas. 6.4. Logueándonos. 6.5. Elección de S.O. Móvil y modelo sobre el que prototipar. 6.7 Configuración de componentes e interfaz final. 6.8. MyConversor. Ejemplo. 6.9. Generación de plantillas JQueryMobile. 6.9.1. Opciones para obtener plantillas jQueryMobile. 6.9.2. Opciones de appery.io. 6.10. APP offline. 6.10.1. El ejemplo. 6.10.2. La plantilla de OffLine. 6.10.3. Estudiando el ejemplo. 6.10.4. Por qué es offline. 6.10.5. Cómo hacer dinámica una APP offline. 6.10.6. APP OffLine. Web Storage API. 6.10.5. APP online. 6.11. Técnicas para que nuestra APP sea online. 6.11.1. XMLHttpRequest. 6.11.2. JSONP. 6.11.3. WebSockets. 7. PUESTA EN PRÁCTICA DE LO APRENDIDO. APP OFFLINE. ANIMALES. 7.1. Puesta en práctica de lo aprendido. APP Offline. ANIMALES. 7.1.1. Pantalla de presentación. 7.1.2. Guardando las votaciones. 7.1.3. Agregando música. 7.1.4. Insertando interactividad. 7.1.5. Avisando del estado de la batería. 7.1.6. Agregando una foto y dinamizando la APP. 8. PUESTA EN PRÁCTICA DE LO APRENDIDO. APP ONLINE. MYTRIVIAL. 8.1. Puesta en práctica de lo aprendido. APP ONLINE. MyTrivial 8.2. Presentando MyTrivial. 8.2.1. Interactuando con un servidor remoto. 8.2.2. Transfiriendo archivos a un servidor. 8.2.3. Registrando y mostrando online la puntuación. 8.2.4. Obteniendo contactos del dispositivo e invitarles a utilizar MyTrivial. 8.2.5. Guardando login y puntuación en toda la navegación. 8.2.6. Preparando la APP para la no conectividad. 9. MONETIZANDO NUESTRA APP. ADMOB EN MYTRIVIAL 9.1. Monetizando nuestra APP. Admob en Animales y MyTrivial. 9.2. Tipologías de monetización. 9.3. Apps gratuitas con In-App Advertising. 9.4. Apps Freemium con compras In-App. 9.5. Apps de pago. 9.6. Apps con modelo de suscripción. 9.7. Apps gratuitas con In-App Advertising. 9.8. ¿Podemos utilizar In-App Advertising en PHONEGAP? 9.9. Apps Freemium con compras In-App. 9.10. ¿Cómo implementar In-APP Purchase con Phonegap? 9.11. Apps de pago. 9.12. ¿Podemos utilizar PHONEGAP en una APP de pago? 9.13. Apps con modelo de suscripción. 9.14. ¿Puede utilizarse PHONEGAP como modelo de suscripción? 9.15. ADMOB. 9.15.1. Configurando el Sitio. 9.15.2. ADMOB en MyTrivial.