SDK móvil de EMMA

El SDK que lleva analítica, notificaciones push y atribución de instalaciones a las aplicaciones de los clientes de EMMA.

Periodo
2024 – actualidad
Rol
Desarrollador móvil
Tipo
Desarrollo interno de ARKANA para su producto EMMA. El código es privado: aquí describo la arquitectura y mi aportación.
Stack
Kotlin, Java, Swift, Objective-C, Dart, Flutter, Cordova, React Native

El problema

Los clientes de EMMA integran el SDK dentro de sus propias aplicaciones, así que un fallo del SDK es un fallo en la app del cliente. Además, cada versión nueva de Android y de iOS cambia las reglas de notificaciones, privacidad e interfaz, y el SDK tiene que seguir funcionando en cinco plataformas: Android, iOS, Flutter, Cordova y React Native.

Qué hice yo

Soy el único desarrollador del SDK y me ocupo de él entero, tanto de los nativos como de los híbridos:

  • Documento los fallos que aparecen, los convierto en issues y los resuelvo en la siguiente versión.
  • Adapto el SDK a cada versión nueva de Android y de iOS.
  • Desarrollo las funcionalidades nuevas. Casi siempre me llegan definidas; alguna la propongo yo cuando veo la necesidad.
  • Preparo y publico cada versión.

El backend de EMMA y el soporte a los clientes los llevan otras personas del equipo.

Decisiones clave

Cifrar los datos personales dentro del SDK

El SDK guarda datos del usuario en el dispositivo. En Android los cifro en el propio SDK, en lugar de dejar esa protección en manos de cada aplicación, para que todos los clientes cumplan la normativa de privacidad con solo actualizar.

Dejar que convivan varias comunicaciones en pantalla

Una campaña puede coincidir con otra en el mismo momento. En lugar de mostrar solo una, el SDK permite que estén a la vez un StartView (pantalla completa), un AdBall (botón flotante) y un Strip (banda superior), de modo que ninguna se pierde.

Entregar la atribución a la aplicación

El SDK sabe de qué campaña viene cada instalación. Además de enviarlo a EMMA, lo devuelve a la app en un callback, para que el cliente pueda usarlo en su propio análisis de campañas.

Resultado

  • He publicado 40 versiones: 7 de Android, 7 de iOS, 10 de Flutter, 7 de Cordova y 9 de React Native.
  • El SDK es compatible con Android 17 y con iOS 27.
  • Los cierres y bloqueos que provocaban las notificaciones push y la descarga de imágenes en Android están resueltos, igual que las fugas de memoria en iOS.
  • Las aplicaciones pueden fijar el idioma de cada usuario, recibir la atribución de la instalación y mostrar notificaciones con botones de acción.