Desarrollo
Todos los proyectos que se desarrollen con tecnología JEE deberán cumplir el estándar de codificación descrito a continuación.
El objetivo de este documento es definir el conjunto de reglas que componen el estándar de codificación y que se van a verificar en los análisis de código.
Para el despliegue de una aplicación AMAP, resulta necesario entregar los siguientes ficheros:
- Código fuente en formato Maven.
- Scripts de base de datos.
- .ear / .war de la aplicación.
Codificación/Programación
El objetivo de este documento es definir el conjunto de reglas que componen el estándar de codificación y que se van a verificar en los análisis de código.
Base de datos
Maven
- Creación de un proyecto a partir del arquetipo AMAP (Frontend 3.0)
- Creación de un proyecto a partir del arquetipo AMAP (Backend 3.0)
- Normas de codificación
Otras consideraciones
Framework base
Servidor
Por regla general, la aplicación servidor deberá exponer una capa de servicios REST siguiendo las normas AMAP (Spring 5.x). La autenticación/autorización se basará en el protocolo OpenID (Oauth 2.0) contra del Single Sign-On corporativo.
Cliente
Las aplicaciones móviles se desarrollarán usando como base IONICFramework (https://ionicframework.com/).
- La versión de Ionic Framework a utilizar será la 8.x.
- La versión de Angular será la 18.x.
Plataforma
Salvo que se indique lo contrario, todas las apps deberán desarrollarse para correr en dispositivos IOS y en Android. Las apps generadas deberán correr como mínimo en las siguientes versiones:
- IOS 17 SDK+ y Xcode 15
- Android 14+
Uso de librerías de terceros
Con el fin de llevar un mejor control de los componentes/librerías de terceros (licencias, bugs, etc) a utilizar deberán ser aprobadas por el Grupo de Arquitectura.
La versión básica incluye librerías fuera del core del IONIC:
- Integración con RedHat SSO
Las librerías adicionales deberán incluirse en el proyecto usando npm con el parámetro save para actualizar automáticamente el fichero package.json. P.e.
npm install ionic-angular@latest --save
Es importante eliminar del package.json cualquier librería que no se utilice.
npm uninstall ionic-angular@latest --save
Normas básicas y recomendaciones
Seguir las recomendaciones del fabricante (Angular e IonicFramework).
Para la creación de artefactos: providers, pages, módulos, etc, se recomienda el uso del cli.
Para la parte servidor, si la API es un desarrollo nuevo, se deberá cumplir hasta el nivel 2 de madurez de los servicios REST
- Principio de responsabilidad única
- Nomemclatura
- Convecciones de código
- Estructura de la aplicación y módulos
- Componentes
- Directivas
- Servicios
Recomendaciones generales
Tener en cuenta las limitaciones de los terminales. Es posible que no tenga mucho sentido trasladar ciertas funcionalidad que pueda tener la aplicación web a una app móvil, por ejemplo, un formulario complejo.
Pasos recomendados para la "movilización" de una aplicación AMAP
- Integrar la aplicación con el SSO corporativo.
- Identificar las operaciones que se van a necesitar exponer para su us desde la app móvil. Definir la API.
- Exponer las operaciones identificadas en el apartado anterior mediante servicios REST siguiendo la norma.
- Crear una nueva app Ionic basada en la plantilla corporativa.
- Crear la capa de servicios mediante llamadas a la API REST.
- Crear las diferentes pantallas.
Autenticación y autorización
El flujo de autenticación/autorización se realizará usando el estándar OpenID - OAuth2 contra el SSO corporativo..
Publicación en tiendas
Por regla general las aplicaciones se desplegarán en las siguientes plataformas de distribución digital:
Tiempos de publicación
El primer despliegue puede llegar a tardar en desplegarse hasta un mes. Una vez hecha una petición de publicación, la app pasa una revisión de calidad y lo más probable es que haya que hacer ajustes en la misma.
Las actualizaciones suelen ser bastante más ágiles aunque dependen en gran parte del volumen de cambios realizados. Normalmente no exceden las 48 horas.
Se recomienda tener el cuenta estos tiempos de cara a planificar una puesta en producción.
Primera publicación - Entregables
Con el fin de facilitar el proceso de alta en las tiendas online (Google Play y Apple Store) se deberá entregar todos los ficheros y datos necesarios de forma ordenada. Para ello se creará un directorio llamado "despliegue" que colgará del directorio raíz del proyecto y contendrá los siguientes artefactos organizados por carpetas.
Android
- Fichero AAB (firmado)
- Título (50 caracteres máximo) -> <nombre_proyecto>.md
- Descripción breve (80 caracteres máximo) -> <nombre_proyecto>.md
- Descripción completa (4000 caracteres máximo) -> <nombre_proyecto>.md
- Capturas de pantalla: archivo JPEG o PNG de 24 bits (no alfa). Longitud mínima para los laterales: 320 píxeles. Longitud máxima para los laterales: 3840 píxeles. Se necesitan al menos 2 capturas de pantalla (8 capturas de pantalla como máximo por tipo).
- Icono de alta resolución (512 x 512): archivo PNG de 32 bits (alfa)
- Imagen destacada (1024 x 500): archivo JPG o PNG de 24 bits (no alfa)
IOS
- Proyecto XCode de la app comprimido en formato ZIP.
- Icono 1024 sin alfa. PNG.
- Vistas previas y capturas de pantalla (para iPhone de 5,5 y 6,4 pulgadas y para iPad de 12,9 pulgadas en 2ª y 3ª generación). Obligatorias las siguientes medidas:
- 5.5 pulgadas a 1242x2208 px
- 6.5 pulgadas
- 12.9 pulgadas (3ª generación) a 2732x2048 px
- 12.9 pulgadas (2ª generación) a 2732x2048 px
- Las capturas de pantalla deben estar en formato JPG o PNG y en el espacio de color RGB.
- Más información
- Texto
- Descripción
- Palabras clave (para búsqueda en App Store)
- Icono para App Store (1024x1024 sin canal alfa)
- Si la aplicación tiene parte privada hay que proporcionar un usuario y una password de producción. Se recomienda crear un usuario ficticio sin permisos de manera temporal hasta recibir la aprobación por parte de Apple.
Actualización - Entregables
Antes de preparar los desplegables es muy importante correr el número de versión del fichero package.json del proyecto Ionic en base a la política de versionado.
Los "entregrables" en este proceso se simplifican:
Android
- APK firmado con el mismo certificado que la primera vez y alineado.
- Breve texto donde se describen los cambios realizados
IOS
- Proyecto XCode de la aplicación comprimido en formato ZIP.
- Breve texto donde se describen los cambios realizados
Pruebas funcionales y de aceptación
Las pruebas funcionales pueden realizarse sin problema desplegando directamente la app sobre el dispositivo de pruebas. No obstante, recomendamos que las pruebas de aceptación por parte del cliente se hagan a través de los programas de pruebas que nos proporcional tanto Google Play como App Store. Para acceder a estos programas el usuario necesitará darse de alta como tester.
Programa de test para app Android
El usuario que va a realizar las pruebas deberá proporcionar una cuenta de Gmail al analista. Una vez dada de alta esta cuenta como tester, el usuario recibirá un email con un enlace para la descarga de la aplicación a probar.
Programa de test para app IOS
Para poder correr la aplicación el usuario deberá tener instalado en su dispositivo la aplicación de Apple TestFlight. El analista le proporcionará a equipo de testing un código Redeem que estará asociado a la aplicación a probar.
Otras consideraciones
El desarrollo de apps para IOS requiere darse de alta como desarrollador de Apple. La publicación de la app se hará a través de la cuenta del Gobierno de Cantabria. Hay varias modalidades de inscripción. Una cuenta gratuita debería ser suficiente para poder desarrollar, no obstante hay que tener que cuenta las restricciones. La más destacada es que las aplicaciones desplegadas de forma directa en un dispositivo dejan de funcionar a la semana de su instalación. Esto no es un problema teniendo en cuenta que estamos en desarrollo, pero es bueno tenerlo en cuenta para evitar sorpresas.
Herramientas de desarrollo
Herramientas imprescindibles para el desarrollo de aplicaciones son:
- General
- Node
- Ionic Cli
- IOS
- Android
Se recomienda el uso de Visual Studio Code en conjunción con el kit de snippets recomendados por la gente del proyecto Angular.
Otros editores también recomendados son: Atom o Vim.
Para leer tokens JWT se recomienda el uso del servicio online JWT.io.