20
chema rodríguez @durbon mobile backed app idealista 10 julio 2014

Mobile backed app idealista

Embed Size (px)

DESCRIPTION

Pequeña introducción para ironhack del proceso de notificaciones push creado adhoc para la app de idealista

Citation preview

Page 1: Mobile backed  app idealista

chema rodríguez@durbon

mobile backed app idealista

10 julio 2014

Page 2: Mobile backed  app idealista

● api first!● notificaciones push● herramientas● proceso de envío de notificaciones de

idealista● ¿cómo trabajamos juntos?

/índice

Page 3: Mobile backed  app idealista
Page 4: Mobile backed  app idealista

“las APIs son el pegamento de las apps e internet”

Page 5: Mobile backed  app idealista

Mobile Backend = API + Notificaciones Push

Page 6: Mobile backed  app idealista

API REST

● JSON (formato de facto)● Stack en Java: Spring framework, Solr,

Oracle, MongoDB, Redis, ActiveMQ

Page 7: Mobile backed  app idealista

API: Acciones y consultas

● Búsqueda geográfica y por zona ● Información completa de cada anuncio● Usuario: favoritear, descartar, comentar,

contactar, guardar alertas● Subir fotos

Page 8: Mobile backed  app idealista

¿API pública?

● Ahora, no. Próximamente abierta para todos● API V3 sólo para las apps de iOS y Android● Disponible la V1 (sólo búsqueda geográfica)

Page 9: Mobile backed  app idealista

alertas de nuevos inmuebles

1. email

2. notificaciones push

Page 10: Mobile backed  app idealista

Push Notifications

¿Cuántas notificaciones recibimos al día?

Page 11: Mobile backed  app idealista

Tipo de notificaciones

1. Notificaciones masivas (todos)

2. Suscripción a un topic concreto

3. Notificaciones individuales al usuario

Page 12: Mobile backed  app idealista

Planteamiento inicial y riesgos

● Registro en APNS del dispositivo● Sincronización entre usuarios: relacionar

usuario idealista con su dispositivo● Badge del número de notificaciones● Límites de envío

Page 13: Mobile backed  app idealista

Herramientas disponibles: soluciones de terceros

Page 14: Mobile backed  app idealista

Herramientas disponibles: soluciones de terceros

Ventajas● No necesitas tener un backend propio● Barato si no requieres muchos envíos● SDKs y clientes específicos para iOS o Android. Fácil integración● Paneles de desarrolladores: gestión tipos de push● Integración con plataformas en la nube (Amazon o Google)

Inconvenientes:● Sincronización usuarios BBDD propias fuera de la del servicio● Costes en altos volúmenes de envío

Page 15: Mobile backed  app idealista

Solución adhoc

Librería JAVAPNS https://code.google.com/p/javapns/

● Encapsula la comunicación con Apple Push Notification Service(APNS)● gestión del certificado de nuestra app (sandbox y production)● Gestión de errores● Envío multihilo de mensajes

Page 16: Mobile backed  app idealista

● API para el registro de usuarios y activación de alertas

● Construcción de una librería propia (dependencia Maven) de composición de notificaciones (Apple y Android).○ Combinamos JAVAPNS y GCM (también tenemos Android)○ Creamos el mismo mensaje independiente de la plataforma○ Unificamos la gestión de errores de cada plataforma

● Proceso de envío de notificaciones○ Consume alertas que notificar a queue de JMS○ Consultar usuario-token device para el envío○ Construcción de mensaje (BBDD y librería)○ Feedback de errores (canonical deviceID)

Page 17: Mobile backed  app idealista

PushMessage

String localizedAlert;

List<String> localizedArgs;

Map<String, String> customParameters;

int badge;

{

action = newAds;

adId = 25403184;

adsNumber = 1;

alertId = 513466;

aps = {

alert = {

"loc-args" = (

1,

"pisos, centro hasta 150.000"

);

"loc-key" = "%@ anuncios: %@";

};

badge = 0;

sound = default;

};

typology = homes;

}

"loc-key" debe de estar en los ficheros localizables de la app. el valor

"loc-args" son los posibles argumentos que puede tener el texto:

Payload

Page 18: Mobile backed  app idealista

Componentes● Tablas de base de datos para la gestión de dispositivos y registro de

notificaciones enviadas: dispositivos activos, log de notificaciones enviadas/falladas/reintentadas, Contador del badge (usado para el envío del badge a iOS).

● Cola JMS a los que estamos suscritos para enviar las alertas● proceso app de envío de notificaciones escalable● proceso de reenvío de notificaciones fallidas● proceso de feedback para el de-registro de dispositivos (cada

madrugada)

Page 19: Mobile backed  app idealista

¿cómo trabajamos juntos?

● documentación API● entornos de testing (pre producción)● sandbox para APIs aún en desarrollo● test de integración con CORE de idealista● y sobre todo ser ágiles + mucha

comunicación

Page 20: Mobile backed  app idealista

¿preguntas?

[email protected]¿quieres trabajar con nosotros? mándanos tu CV!