Uso eficiente de la capa de red en las apps móviles. Herramientas para trabajar con APIs REST, estrategias de conexión y construcción de API Client usando Retrofit y OKHttp.
de conexión según si estamos en WiFi, 3G, 4G: ◦ Calidad de las imágenes. Solicitar resoluciones, formatos al API ◦ Descarga de datos pesados sólo en WiFi. Ajustes de applicación ◦ Usa datos en caché siempre que puedas. Cache-control, ETag • Usa siempre GZIP, reduce hasta un 70%
Enviar errores a Crashlytics o Analytics para analizarlo. ¿fallos de backend? • Mensajes informativos, intenta recoger feedback del usuario ¿hay algo incorrecto?
UI • Respetar la transaccionalidad de las acciones. Rollback de las acciones y comprobar estado • Cola de reintentos en segundo plano. Diferenciar acciones que no requieren más interacción de usuario. Ejemplo: whatsapp
en modo avión (sin conexión) Caché de los datos más usados. Equilibrio entre lógica de negocio en la app y directa del backend Persistir todos los datos posibles de la App Sincronización del uso offline. Colas de sincronización
documentación • Parseo de respuestas y gestión de errores • El API aún no está desarrollada (mocks) • “Manual testing” • Versionado y mantenimiento de APIs • Seguridad de las peticiones
to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection” swagger.io
Crear peticiones de forma simple y reproducibles • Documentar llamadas y exportarlas • Trabajar con distintos entornos staging y pro • Utilizar helper de autenticación • Crear script de pruebas • En definitiva, un Sandbox de pruebas
una API • Adelantar trabajo y definir JSON al equipo de Backend • Pruebas en local sin necesidad de conexión de red. Mock server integrado. • Y los más importante… TESTING
respuestas RecorderRequest. Similar al verify podemos comprobar el orden y si se hacen las request correctas. Dispatcher. Crear un pequeño dispatcher para dar lógica a los test.
CN=publicobject.com, OU=PositiveSSL sha1/SXxoaOSEzPC6BgGmxAt/EAcsajw=: CN=COMODO RSA Domain Validation Secure Server CA sha1/blhOM3W9V/bVQhsWAcLYwPU6n24=: CN=COMODO RSA Certification Authority sha1/T5x9IXmcrQ7YuQxXnxoCmeeQ84c=: CN=AddTrust External CA Root Pinned certificates for publicobject.com: sha1/BOGUSPIN at com.squareup.okhttp.CertificatePinner.check(CertificatePinner.java) at com.squareup.okhttp.Connection.upgradeToTls(Connection.java) at com.squareup.okhttp.Connection.connect(Connection.java) at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java) http://square.github.io/okhttp/javadoc/com/squareup/okhttp/CertificatePinner.html