SlideShare una empresa de Scribd logo
Tech Meetup: How to solve 2 common problems in Android & iOS
CÉSAR YNGA (ANDROID) Y
RICARDO HERRERA (iOS)
COMO SOLUCIONAR
EN ANDROID
2 PROBLEMAS
COMUNES
Y iOS
AGENDA
1. Introducción
2. Configurar y distribuir para distintos ambientes
3. Manejar cache y sincronización de data
¿QUIENES SOMOS?
¡El Problema!
CONFIGURAR Y
DISTRIBUIR PARA
DISTINTOS AMBIENTES
Diferentes
Ambientes de
desarrollo
¿Por
qué?
● Permitir trabajo en paralelo de desarrollo y
pruebas.
● Ahorra tiempo en configuraciones posteriores.
● Facilitar los cambios grandes para nuevos
requerimientos.
● Diferenciación de errores (data, casos
especiales, etc).
● No malograr la data de pruebas durante el
desarrollo.
● Evitar problemas de pruebas en producción.
● Distribución para grupos específicos de
testers.
Ambientes de desarrollo
Development
QA
Production
Configuración en Android
Studio
Build types Product flavors
https://developer.android.com/studio/build/index.html
Build variant
● Debug
● Release
● Free
● Paid
● Develop
● QA
● Staging
● Production
● Free Debug
● Free Release
● Paid Debug
● Paid Release
+
Configuración en Android Studio
src/main/
src/<buildType>/
src/<productFlavor>/
src/<productFlavorBuildType>/
Configuración en Android Studio
app/build.gradle
Configuración iOS
Configuración iOS
Configuración iOS
Distribución
Distribución para testers
¿PREGUNTAS?
¡El Otro Problema!
MANEJAR CACHE Y
SINCRONIZACIÓN DE
DATA
Caché y
Sincronización
de Data
¿Por
qué?
● Mejora la experiencia de usuario.
● Permite tener la data actualizada.
● Puede optimizar el uso el uso de internet para
la aplicación.
● Permite información en modo offline.
● Permite realizar procesos en modo offline.
Caché y sincronización
Server
Caché y
Sincronización
de Data
Tipos
Sincronización
● Sincronización asíncrona.
● Sincronización sincronico.
Almacenamiento de data
● Almacenamiento parcial
● Almacenamiento total
https://www.dre.vanderbilt.edu/~schmidt/PDF/PatternPaperv11.pdf
¿Cómo afrontarlo en
Android?
http://fernandocejas.com/2015/07/18/architecting-android-the-evolution
Clean Architecture
https://github.com/ReactiveX/RxJava
https://github.com/ReactiveX/RxAndroid
RxJava
RxAndroid
Reactive Programming
RxCache
Retrofit
http://square.github.io/retrofit
https://github.com/VictorAlbertos/RxCache
Repository Pattern
https://github.com/VictorAlbertos/RxCache
RxCache
interface Providers {
Observable<List<Mock>> getMocks(Observable<List<Mock>> oMocks);
@LifeCache(duration = 5, timeUnit = TimeUnit.MINUTES)
Observable<List<Mock>> getMocksWith5MinutesLifeTime(Observable<List<Mock>> oMocks);
Observable<List<Mock>> getMocksEvictProvider(Observable<List<Mock>> oMocks, EvictProvider evictProvider);
Observable<List<Mock>> getMocksPaginate(Observable<List<Mock>> oMocks, DynamicKey page);
Observable<List<Mock>> getMocksPaginateEvictingPerPage(Observable<List<Mock>> oMocks, DynamicKey page,
EvictDynamicKey evictPage);
Observable<List<Mock>> getMocksPaginateWithFiltersEvictingPerFilter(Observable<List<Mock>> oMocks, DynamicKeyGroup
filterPage, EvictDynamicKey evictFilter);
}
https://github.com/VictorAlbertos/RxCache
RxCache
public class Repository {
private final Providers providers;
public Repository(File cacheDir) {
providers = new RxCache.Builder()
.persistence(cacheDir, new GsonSpeaker())
.using(Providers.class);
}
public Observable<List<Mock>> getMocks(final boolean update) {
return providers.getMocksEvictProvider(getExpensiveMocks(), new EvictProvider(update));
}
public Observable<List<Mock>> getMocksPaginate(final int page, final boolean update) {
return providers.getMocksPaginateEvictingPerPage(getExpensiveMocks(), new DynamicKey(page), new
EvictDynamicKey(update));
}
public Observable<List<Mock>> getMocksWithFiltersPaginate(final String filter, final int page, final boolean updateFilter)
{
return providers.getMocksPaginateWithFiltersEvictingPerFilter(getExpensiveMocks(), new DynamicKeyGroup(filter, page),
new EvictDynamicKey(updateFilter));
}
//In a real use case, here is when you build your observable with the expensive operation.
//Or if you are making http calls you can use Retrofit to get it out of the box.
private Observable<List<Mock>> getExpensiveMocks() {
return Observable.just(Arrays.asList(new Mock("")));
}
}
¿Y en iOS?
https://www.objc.io/issues/10-syncing-data/data-synchronization/
Asynchronous Client-Server
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadin
gSystem/Concepts/CachePolicies.html
Apple cache Policy
● NSURLRequestUseProtocolCachePolicy,
● NSURLRequestReloadIgnoringCacheData,
● NSURLRequestReturnCacheDataElseLoad,
● NSURLRequestReturnCacheDataDontLoad.
https://www.objc.io/issues/10-syncing-data/data-synchronization/
AFNetworking
Repository Pattern
¿PREGUNTAS? NO? NO?
YA GO
santexgroup.com

Más contenido relacionado

PDF
Jobsket Spring 2GX Madrid
PDF
Java mission control para monitoreo, administración y profilig de aplicacion...
PDF
Administración de la calidad del software a través del análisis estático de c...
KEY
Scrum para uno
PDF
Análisis estático de código en Java
PPTX
Ceph Meetup
PPTX
Node JS (Francisco Cerdas)
PDF
Java mission control para monitoreo, administración y profilig de aplicacione...
Jobsket Spring 2GX Madrid
Java mission control para monitoreo, administración y profilig de aplicacion...
Administración de la calidad del software a través del análisis estático de c...
Scrum para uno
Análisis estático de código en Java
Ceph Meetup
Node JS (Francisco Cerdas)
Java mission control para monitoreo, administración y profilig de aplicacione...

La actualidad más candente (7)

PDF
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
PDF
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
PDF
Grails en SG08
PDF
Curso node.js
PPTX
Introduccion a Node.js
PDF
PDF
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Grails en SG08
Curso node.js
Introduccion a Node.js
Publicidad

Similar a Tech Meetup: How to solve 2 common problems in Android & iOS (20)

PDF
Code Blast 2012 - Node.js
PDF
Sistemas Operativos Moviles, Android y IOs
PDF
FULLSTACK JS DEV in 2017
PPTX
Programacion de app
PPTX
Programacion de app
PDF
Móviles, iPhone y Android
PPTX
Seminario &quot;Desarrollo para entornos móviles. Comparativas y tendencias&q...
PDF
Introduccion android
PPTX
Desarrollo de Apps con la herramienta Phonegap
PPT
Encuentro IBM MobileFirst
DOCX
Capitulo 16 LA NUBE MÓVIL Y EL ECOSISTEMA DE APLICACIONES WEB
PDF
Cebek - oficina fija oficina movil 1 - 201610
PPTX
Historia_de_Sistema_Operativo_Android.pptx
PDF
Programando Windows Phone con Phonegap
PDF
Pyramid Research: Smartphone operating system Ecosystem analysis and trends s...
PPTX
Sesion dos azuay
PDF
HTML5, CSS3 y móviles
PPTX
Historia de las aplicaciones móviles
PDF
Tema 4.2.2 Desarrollo con Android. El Framework de Android.
PPTX
Presentación Alejandro Poznansky - Seminario Agosto- "Estrategias para inici...
Code Blast 2012 - Node.js
Sistemas Operativos Moviles, Android y IOs
FULLSTACK JS DEV in 2017
Programacion de app
Programacion de app
Móviles, iPhone y Android
Seminario &quot;Desarrollo para entornos móviles. Comparativas y tendencias&q...
Introduccion android
Desarrollo de Apps con la herramienta Phonegap
Encuentro IBM MobileFirst
Capitulo 16 LA NUBE MÓVIL Y EL ECOSISTEMA DE APLICACIONES WEB
Cebek - oficina fija oficina movil 1 - 201610
Historia_de_Sistema_Operativo_Android.pptx
Programando Windows Phone con Phonegap
Pyramid Research: Smartphone operating system Ecosystem analysis and trends s...
Sesion dos azuay
HTML5, CSS3 y móviles
Historia de las aplicaciones móviles
Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Presentación Alejandro Poznansky - Seminario Agosto- "Estrategias para inici...
Publicidad

Más de Santex Group (13)

PDF
Entender React Native
PDF
Server side development using Swift and Vapor
PDF
Tech Meetup: Jenkins, the moody buttler
PPTX
Tech Meetup: Be reactive with Android
PPTX
Tech Meetup: Gamificar con Agilidad
PDF
Tech Meetup: How to build a Rest API in Java
PDF
TECH MEETUP - From the groud up with GIT
PPTX
Tech MeetUp: Agile Methodologies in eCommerce
PPTX
Meetup: Mobile Automation
PDF
User Stories Do's and Dont's
PDF
E commerce done the right way: Magento!
PDF
Tech meetup: Web Applications Performance
PDF
Tech Meetup - Agile testing vs Testing in Agile
Entender React Native
Server side development using Swift and Vapor
Tech Meetup: Jenkins, the moody buttler
Tech Meetup: Be reactive with Android
Tech Meetup: Gamificar con Agilidad
Tech Meetup: How to build a Rest API in Java
TECH MEETUP - From the groud up with GIT
Tech MeetUp: Agile Methodologies in eCommerce
Meetup: Mobile Automation
User Stories Do's and Dont's
E commerce done the right way: Magento!
Tech meetup: Web Applications Performance
Tech Meetup - Agile testing vs Testing in Agile

Último (6)

PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
sistemas de informacion.................
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
AutoCAD Herramientas para el futuro, Juan Fandiño
sistemas de informacion.................
Conceptos basicos de Base de Datos y sus propiedades
Derechos_de_Autor_y_Creative_Commons.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Su punto de partida en la IA: Microsoft 365 Copilot Chat

Tech Meetup: How to solve 2 common problems in Android & iOS

Notas del editor

  • #27: a library for composing asynchronous and event-based programs by using observable sequences
  • #33: NSURLRequestUseProtocolCachePolicy, NSURLRequestReloadIgnoringCacheData, NSURLRequestReturnCacheDataElseLoad, or NSURLRequestReturnCacheDataDontLoad.