¿Cuál es la mejor arquitectura para tu app? Para esta pregunta hay muchísimas posibles respuestas (MVC, MVVM, MVP, VIPER...).
En esta charla explicaremos el proceso creativo e iterativo que hay que pasar hasta llegar a la mejor arquitectura para tu proyecto, sin 'nombrecitos' ni siglas, aprende a crear la tuya propia.
¿Y si las librerías de código abierto que hay disponibles no cubren tus necesidades o son demasiado complejas?
Te quitaremos el miedo a hacer tus propias herramientas y por supuesto, te incitaremos a compartirlas con el mundo.
8. !8
• VIP (ViewController. Interactor. Presenter)
• Inyección de dependencias con Swinject
• Gestión de tareas con Kommander
• Gestión de llamadas a red con Net
• ATDD con HonestCode
ARCHIT 1.0
INTELYGENZ
www.intelygenz.com
10. !10
• Framework para inyección de dependencias en Swift.
• Tipado a través de protocolo.
• Uso de SwinjectStoryboard para la instanciación segura de
Storyboards.
SWINJECT
INTELYGENZ
www.intelygenz.com
11. !11
• Librería para la gestión de tareas
• Maneja la ejecución de tareas en diferentes hilos.
• Librería interna desarrollada en intelygenz
KOMMANDER
INTELYGENZ
www.intelygenz.com
12. !12
• Crear uno o varios Kommands
• Ejecutar uno o varios Kommands
• Cancelar uno o varios Kommands
• Reintentar uno o varios Kommands
• Bloque de éxito de un Kommand
• Bloque de error de un Kommand
• Dispatcher de hilo principal
• Dispatcher de hilo actual
KOMMANDER
INTELYGENZ
www.intelygenz.com
13. !13
• Dispatcher con OperationQueue personalizada
• Ejecutar una o varias Operations
• Ejecución concurrente o secuencial
• Ejecutar DispatchWorkItem
• Estado de un Kommand
• Compatible con iOS, macOS, watchOS y tvOS
• Versiones compatibles con Swift 4, Swift 3, Swift 2 y Objective-C
KOMMANDER
INTELYGENZ
www.intelygenz.com
14. !14
• Librería de red HTTP versátil y multipropósito.
• Librería interna creada en intelygenz.
• Nació como una capa de abstracción de AFNetworking adaptada a
nuestras necesidades.
NET
INTELYGENZ
www.intelygenz.com
16. !16
• Antes no teníamos una política de tests clara.
• Apostamos por el ATDD.
• Usamos HonestCode para implicar al cliente en todo el proceso.
HONESTCODE
INTELYGENZ
www.intelygenz.com
I N T E LY G E N Z
HONEST CODE
www.HonestCode.io
22. !22
• Eliminamos Swinject
• Nuevo modelo de aplicación VCI (View. Controller. Interactor)
• Nueva versión de Kommander
• Implementamos Net desde cero
ARCHIT 2.0
INTELYGENZ
www.intelygenz.com
24. !24
• Codificación de parámetros en URL, JSON o Property List
• Subida de ficheros, datos binarios, stream y Multipart Form Data
• Descarga de ficheros usando Request o datos parciales de
una descarga anterior
• Autentificación con URLCredential
• Autorización Basic, Bearer y personalizada
• Controles de caché por defecto y personalizados
• Métricas sobre peticiones
NUEVO NET
INTELYGENZ
www.intelygenz.com
25. !25
• Tipos de contenido por defecto y personalizados
• Bloques de progreso de descarga o subida con Progress en
tiempo real
• Salida por consola de comando cURL para depurar
• Interceptores de petición y de respuesta
• Ejecución asíncrona y síncrona de las peticiones
• Inferencia automática del objeto de respuesta
• Gestor de conexión disponible
NUEVO NET
INTELYGENZ
www.intelygenz.com
26. !26
• Certificado TLS y fijado de clave pública
• Política de reintentos
• Compatible con protocolos Codable, Decodable y Encodable para
JSON y Property List
• Compatible con iOS, macOS, watchOS y tvOS
• Implementación alternativa usando Alamofire
• Compatible con Moya, Kommander
• Implementación con Stubs
NUEVO NET
INTELYGENZ
www.intelygenz.com
30. !30
Funcionalidades en desarrollo
• Programación reactiva basada en estados con RxSwift
• Eliminar el Xcodeproj del repositorio con XcodeGen
Intercambio de conocimientos
• Equipo de Android se ha incorporado para dar un nuevo punto de
vista y unificar nuestras arquitecturas.
¿Y AHORA
QUÉ?
INTELYGENZ
www.intelygenz.com