Cambios para el documento Desarrollo

Última modificación por Administrator el 2020/02/18 22:36

Desde la versión < 58.1 >
editado por Administrator
el 2018/10/29 10:35
Hasta la versión < 59.1 >
editado por Administrator
el 2020/01/23 16:01
< >
Comentario del cambio: No hay comentario para esta versión

Summary

Details

Icon Page properties
Content
... ... @@ -2,7 +2,7 @@
2 2  Se oculta la sección de trew@
3 3  {{tabs idsToLabels="aplicaciones=Aplicaciones, procedimientos=Procedimientos,REC=REC"/}}
4 4  {{/comment}}
5 -{{tabs idsToLabels="aplicaciones=Aplicaciones, REC=REC"/}}
5 +{{tabs idsToLabels="aplicaciones=Aplicaciones, movilidad=Movilidad,REC=REC"/}}
6 6  
7 7  (% id="aplicaciones" style="padding-top: 10px;" %)
8 8  (((
... ... @@ -70,6 +70,203 @@
70 70  * [[Herramientas de desarrollo>>AMAP.herramientas]]
71 71  )))
72 72  
73 +(% id="movilidad" style="padding-top: 10px;" %)
74 +(((
75 +
76 +== Framework base ==
77 +=== Servidor ===
78 +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>>https://es.wikipedia.org/wiki/OpenID]]** (Oauth 2.0) contra del [[Single Sign-On corporativo>>https://access.redhat.com/products/red-hat-single-sign-on]].
79 +
80 +
81 +=== Cliente ===
82 +Las aplicaciones móviles se desarrollarán usando como base IONICFramework (https://ionicframework.com/).
83 +
84 +* La versión de **[[Ionic Framework>>https://ionicframework.com/]]** a utilizar será la **4.x.**
85 +* La versión de **[[Angular>>https://angular.io]]** será la **8.x.**
86 +
87 +==== Plataforma ====
88 +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:
89 +
90 +* iOS 7+
91 +* Android 4.1+
92 +
93 +== Uso de librerías de terceros ==
94 +
95 +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.
96 +
97 +La versión básica incluye librerías fuera del core del IONIC:
98 +
99 +* Integración con RedHat SSO
100 +** [[keycloak-angular>>https://github.com/mauriciovigolo/keycloak-angular#readme]]
101 +** [[keycloak-js>>https://www.keycloak.org/]]
102 +
103 +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.
104 +
105 +{{highlight language="XML" style="Rainbow"}}
106 +npm install ionic-angular@latest --save
107 +{{/highlight}}
108 +
109 +Es importante eliminar del package.json cualquier librería que no se utilice.
110 +
111 +{{highlight language="XML" style="Rainbow"}}
112 +npm uninstall ionic-angular@latest --save
113 +{{/highlight}}
114 +
115 +{{warning}}
116 +Bastará con que una librería que necesite permisos especiales esté presente en el fichero package.json, para que las tiendas consideren que la aplicación necesite dicho permiso aún no necesitándolo.
117 +{{/warning}}
118 +
119 +== Normas básicas y recomendaciones ==
120 +
121 +Seguir las recomendaciones del fabricante ([[Angular>>https://angular.io/guide/styleguide]] e [[IonicFramework>>https://ionicframework.com]]).
122 +
123 +Para la creación de artefactos: providers, pages, módulos, etc, se recomienda el uso del cli.
124 +
125 +Para la parte servidor, si la API es un desarrollo nuevo, se deberá cumplir hasta el [[nivel 2 de madurez de los servicios REST>>buenasPracticasREST]]
126 +
127 +
128 +* [[Principio de responsabilidad única>>ionic-responsabilidad-unica]]
129 +* [[Nomemclatura>>ionic-nomenclatura]]
130 +* [[Convecciones de código>>ionic-convenciones]]
131 +* [[Estructura de la aplicación y módulos>>ionic-estructura]]
132 +* [[Componentes>>ionic-componentes]]
133 +* [[Directivas>>ionic-directivas]]
134 +* [[Servicios>>ionic-servicios]]
135 +
136 +
137 +=== Recomendaciones generales ===
138 +
139 +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.
140 +
141 +=== Pasos recomendados para la "movilización" de una aplicación AMAP ===
142 +
143 +1. Integrar la aplicación con el SSO corporativo.
144 +1. Identificar las operaciones que se van a necesitar exponer para su us desde la app móvil. Definir la API.
145 +1. Exponer las operaciones identificadas en el apartado anterior mediante servicios [[REST siguiendo la norma>>buenasPracticasREST]].
146 +1. [[Crear una nueva app Ionic basada en la plantilla corporativa>>ionic-nueva-app]].
147 +1. Crear la capa de servicios mediante llamadas a la API REST.
148 +1. Crear las diferentes pantallas.
149 +
150 +== Autenticación y autorización ==
151 +
152 +El flujo de autenticación/autorización se realizará usando el estándar [[OpenID - OAuth2 contra el SSO corporativo.>>KeyCloakMovilidad]].
153 +
154 +== Publicación en tiendas ==
155 +
156 +Por regla general las aplicaciones se desplegarán en las siguientes plataformas de distribución digital:
157 +
158 +* [[Google Play Store>>https://play.google.com/store?hl=es]]
159 +* [[Apple Store>>https://www.apple.com/es/ios/app-store/]]
160 +
161 +=== Tiempos de publicación ===
162 +
163 +{{warning}}
164 +La tiempos de publicación de las apps en las tiendas online no dependen del Gobierno de Cantabria.
165 +{{/warning}}
166 +
167 +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.
168 +
169 +Las actualizaciones suelen ser bastante más ágiles aunque dependen en gran parte del volumen de cambios realizados. Normalmente no exceden las 48 horas.
170 +
171 +Se recomienda tener el cuenta estos tiempos de cara a planificar una puesta en producción.
172 +
173 +
174 +=== Primera publicación - Entregables ===
175 +
176 +Con el fin de facilitar el proceso de alta en las tiendas online ([[Google Play>>https://play.google.com/store?hl=es]] y [[Apple Store>>https://www.apple.com/es/ios/app-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.
177 +
178 +[[image:ios_android.png]]
179 +
180 +==== Android ====
181 +
182 +* Fichero APK ([[alineado y firmado>>AlinearAPK]])
183 +* Título (50 caracteres máximo) -> <nombre_proyecto>.md
184 +* Descripción breve (80 caracteres máximo) -> <nombre_proyecto>.md
185 +* Descripción completa (4000 caracteres máximo) -> <nombre_proyecto>.md
186 +* 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).
187 +* Icono de alta resolución (512 x 512): archivo PNG de 32 bits (alfa)
188 +* Imagen destacada (1024 x 500): archivo JPG o PNG de 24 bits (no alfa)
189 +
190 +
191 +==== IOS ====
192 +
193 +* Proyecto XCode de la app comprimido en formato ZIP.
194 +* Icono 1024 sin alfa. PNG.
195 +* Vistas previas y capturas de pantalla (para iPhone de 5,5 pulgadas y para iPad de 12,9 pulgadas). Obligatorias las siguientes medidas:
196 +** 5.5 pulgadas a 1242x2208 px
197 +** 12.9 pulgadas a 2732x2048 px
198 +** Las capturas de pantalla deben estar en formato JPG o PNG y en el espacio de color RGB.
199 +* Más información
200 +** Texto
201 +** Descripción
202 +** Palabras clave (para búsqueda en App Store)
203 +** Icono para App Store (1024x1024 sin canal alfa)
204 +** 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.
205 +
206 +{{info}}
207 +Para capturar las pantallas en los diferentes formatos se recomienda el uso de los emuladores incluidos en los diferentes SDK.
208 +{{/info}}
209 +
210 +=== Actualización - Entregables ===
211 +
212 +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>>Main.svn]].
213 +
214 +[[image:version.png]]
215 +
216 +{{warning}}
217 +Si no se corre versión, la aplicación será rechazada y no podrá publicarse.
218 +{{/warning}}
219 +
220 +
221 +Los "entregrables" en este proceso se simplifican:
222 +
223 +==== Android ====
224 +* APK firmado con el **mismo certificado** que la primera vez y alineado.
225 +* Breve texto donde se describen los cambios realizados
226 +
227 +==== IOS ====
228 +* Proyecto XCode de la aplicación comprimido en formato ZIP.
229 +* Breve texto donde se describen los cambios realizados
230 +
231 +=== Pruebas funcionales y de aceptación ===
232 +
233 +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.
234 +
235 +==== Programa de test para app Android ====
236 +El usuario que va a realizar las pruebas deberá proporcionar **una cuenta de [[Gmail>>http://www.gmail.com]]** 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.
237 +
238 +==== Programa de test para app IOS ====
239 +Para poder correr la aplicación el usuario deberá tener instalado en su dispositivo la [[aplicación de Apple TestFlight>>https://developer.apple.com/testflight]]. El analista le proporcionará a equipo de testing un **código Redeem** que estará asociado a la aplicación a probar.
240 +
241 +{{info}}
242 +Aunque teoricamente la aplicación resultante se debe comportar del mismo modo en cada una de las plataformas, no siempre es así. No presuponer que por el mero hecho de que cierta funcionalidad haya pasado las pruebas para una plataforma estas vayan a pasarlo en otra.
243 +{{/info}}
244 +
245 +=== Otras consideraciones ===
246 +
247 +El desarrollo de apps para IOS requiere darse de alta como [[desarrollador de Apple>>https://developer.apple.com/]]. **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.
248 +
249 +=== Herramientas de desarrollo ===
250 +
251 +Herramientas imprescindibles para el desarrollo de aplicaciones son:
252 +
253 +* **General**
254 +** [[Node>>https://nodejs.org/es/]]
255 +** Ionic Cli
256 +* **IOS**
257 +** [[Mac OS X>>https://www.apple.com/es/macos/]] con [[XCode>>https://developer.apple.com/xcode/]] siempre en la última versión.
258 +* **Android**
259 +** [[Android SDK Tools>>https://developer.android.com/studio/#downloads]]
260 +
261 +
262 +Se **recomienda** el uso de [[**Visual Studio Code**>>https://code.visualstudio.com/]] en conjunción con el [[kit de snippets recomendados por la gente del proyecto Angular>>https://marketplace.visualstudio.com/items?itemName=johnpapa.Angular2]].
263 +
264 +Otros editores también recomendados son: [[Atom>>https://atom.io/]] o [[Vim>>http://www.vim.org/]].
265 +
266 +Para leer tokens JWT se recomienda el uso del [[servicio online JWT.io>>https://jwt.io/]].
267 +)))
268 +
269 +
73 73  (% id="procedimientos" style="padding-top: 10px;display:none" %)
74 74  (((
75 75  Todos los procedimientos deberán seguir las normas y convenciones especificadas en el [[Estándar de Codificación en JEE del Gobierno de Cantabria>>AMAP.Desarrollo]]. Por medio de un [[checklist>>AMAP.QA]] se verificará su debido cumplimiento.
© 2014 GOBIERNO DE CANTABRIA - AVISO LEGAL Y PROTECCIÓN DE DATOS