Un cliente móvil multiplataforma para la plataforma, escrito en React Native con módulos Android nativos donde la capa JavaScript no puede llegar: entrega de mensajes en segundo plano, ventanas superpuestas flotantes, inscripción de dispositivos y almacenamiento seguro de credenciales.
| Medida | Valor | Fuente | Medido |
|---|---|---|---|
| Android módulos nativos junto con la base de código React Native | Kotlin modules for overlays, background delivery and enrolment | android source tree in the mobile client repository | |
| Origen de Kotlin en el cliente móvil | 24 files | find . -name '*.kt' across project repositories | |
| Canales de distribución operados | 2 (store release and over-the-air update) | mobile release process |
Qué edificio nos enseñó
Los frameworks multiplataforma se venden con la promesa de que se escriben una vez, tal vez en el ochenta por ciento de las aplicaciones. La quinta parte restante es donde está el trabajo, y es invariablemente la parte que hace que la aplicación se sienta nativa en lugar de envuelta: notificaciones que llegan cuando se cierra la aplicación, superposiciones que sobreviven a la aplicación perdiendo el enfoque, flujos de inscripción que tocan el elemento seguro.
Nuestro trabajo de superposición es una buena ilustración de una clase sutil de error. Una cabeza flotante se levanta para cualquier mensaje que llegue de una conversación que no sea la que está en pantalla, lo suficientemente simple, hasta que te das cuenta de que la insignia de no leído se dibuja dos veces, una vez en JavaScript y una vez en código nativo, y que las cabezas viven en dos almacenes separados, por lo que borrar una deja la otra poblada.
La inscripción nos enseñó sobre el ordenamiento. Un token de inscripción de una sola vez se consumía antes de completar el registro del dispositivo, por lo que cualquier error posterior en el flujo se presentaba al usuario como "este código ya se ha utilizado", un mensaje que los envía al soporte en lugar de volver a intentarlo, y que describe un síntoma en lugar de la causa.
El proceso de lanzamiento es deliberadamente aburrido: las compilaciones ocurren en una máquina que tiene la cadena de herramientas, las actualizaciones por aire se manejan por separado de las versiones de la tienda, y ninguna de las dos se hace desde una computadora portátil al final del día.
Construido con
- React Native
- TypeScript
- Kotlin
- Android SDK
- push notifications
- WebSocket
Cuéntanos lo que estás tratando de hacer
Una breve conversación suele ser suficiente para saber si somos las personas adecuadas, si no lo somos, lo diremos y le indicaremos un lugar mejor.
