Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mobile backed app idealista

chema
July 10, 2014

Mobile backed app idealista

Charla en Madrid, Ironhack 10 julio 2014

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

chema

July 10, 2014
Tweet

More Decks by chema

Other Decks in Technology

Transcript

  1. • api first! • notificaciones push • herramientas • proceso

    de envío de notificaciones de idealista • ¿cómo trabajamos juntos? /índice
  2. API REST • JSON (formato de facto) • Stack en

    Java: Spring framework, Solr, Oracle, MongoDB, Redis, ActiveMQ
  3. 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
  4. ¿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)
  5. Tipo de notificaciones 1. Notificaciones masivas (todos) 2. Suscripción a

    un topic concreto 3. Notificaciones individuales al usuario
  6. 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
  7. 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
  8. 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
  9. • 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)
  10. 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
  11. 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)
  12. ¿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