Alertas de terremoto que también llegan al iPhone
Los teléfonos Android pueden recibir las alertas de terremoto de Google; los iPhone no. Construimos Seismic Guard, una app en Flutter con código nativo en Kotlin y Swift que reenvía esas alertas a los teléfonos cercanos y suma las de EMSC, SGC y USGS.

Seismic Guard es nuestra app de sismos para Android y iPhone. Tiene tres vías de detección: los catálogos de EMSC, SGC, USGS y GEOFON, un relay que reenvía las alertas de terremoto de Google para Android a todos los teléfonos registrados en un radio de 500 km, y una red de acelerómetros de teléfonos que todavía corre en modo sombra. La app está hecha en Flutter, con plugins nativos en Kotlin y Swift, backend en Supabase y un admin en Next.js. Las pantallas de esta página vienen de un build de demostración con datos reproducidos e inventados.
- Cliente
- Seismic Guard · Alertas sísmicas
- Sector
- Información sísmica
- Dónde
- Bogotá, Colombia
- Año
- 2026
- Entregables
- App Flutter para Android y iOS
- Relay nativo en Kotlin
- Plugin de sensores en Kotlin y Swift
- Backend Supabase: 17 Edge Functions
- Admin web en Next.js
El iPhone se queda sin la alerta de Android
Google envía alertas de terremoto a los teléfonos Android en las zonas que cubre, y la alerta aparece en la interfaz del propio Android. Un iPhone en la misma mesa no recibe nada, así que en una familia con teléfonos distintos unos se enteran y otros no.
Los catálogos del Servicio Geológico Colombiano (SGC), EMSC y USGS publican el sismo cuando ya empezó: sirven para informar, no para avisar antes. Queríamos una app que recibiera las dos señales sin confundirlas y que le dijera a cada persona, con honestidad, si su teléfono está configurado para que la alerta llegue.
Tres vías de detección que no se mezclan
El relay está escrito en Kotlin nativo. En un teléfono Android con acceso a notificaciones, un NotificationListenerService detecta la alerta de Google, la puntúa con un clasificador local y la envía, firmada con HMAC, a una Edge Function de Supabase. El servidor la reparte a todos los dispositivos registrados dentro del radio de alerta (500 km por defecto), Android o iPhone, sin emparejarlos. Las demás notificaciones se clasifican en el teléfono y nunca salen de él. Flutter no está en ese camino, así que el relay sigue funcionando con la interfaz de la app cerrada.
La segunda vía consulta EMSC cada 10 segundos, el SGC cada 20 y USGS cada 60 (intervalos por defecto), y luego normaliza, deduplica y correlaciona los eventos. Un evento de catálogo se etiqueta como detección rápida y nunca se muestra como alerta temprana. La tercera vía convierte los teléfonos en sensores: un detector de dos etapas en Kotlin y Swift envía disparos, y solo el consenso del servidor, con al menos cinco teléfonos creíbles, confirma un evento. Sale en modo sombra: detecta sin alertar hasta compararse con sismos reales del SGC y EMSC.
Detrás hay 15 migraciones SQL, 17 Edge Functions en Deno y un admin de siete páginas en Next.js para fuentes, nodos de relay, red de sensores, reglas del clasificador y logs de entrega. La interfaz está en 11 idiomas, con las instrucciones de agacharse, cubrirse y sujetarse en la fórmula de cada idioma.
-
01
Alertas de Android, reenviadas al iPhone
Un teléfono Android que recibe la alerta de Google la pasa a todos los teléfonos registrados en 500 km. El iPhone la recibe por push de APNs, sin Firebase en esa ruta.
-
02
Alerta temprana y catálogo, separados
Un aviso reenviado lleva la etiqueta de alerta temprana; un evento de EMSC, SGC o USGS es una detección rápida. Cada sismo muestra qué fuente lo vio y a qué hora.
-
03
Centro de protección
La app revisa seis condiciones que deciden si una alerta llega (canal de notificaciones, pantalla completa, batería, No molestar, entre otras), las puntúa y ofrece un arreglo de un toque para cada una.
-
04
El acceso a notificaciones queda en el teléfono
Solo se envía lo que el clasificador puntúa con 95 o más, es decir una alerta de Google confirmada. Las notificaciones de otras apps se filtran en el teléfono y no se guardan ni se transmiten.
El proyecto en imágenes
9 imágenes · Abre una imagen para verla en grande.
Lo que está listo y lo que sigue abierto
Seismic Guard está en la versión 1.0.0, con 34 pruebas en Flutter, una suite de backend y CI que bloquea el release si fallan la localización, las pruebas nativas de Android o la auditoría de secretos. Hay dos puntos abiertos, documentados como tales. Google no garantiza que su alerta sea visible para apps de terceros, así que el relay solo se considera fiable después de inspeccionar una alerta real en un dispositivo; el EEW Inspector de la app existe para eso. Y la red de sensores sigue en modo sombra hasta calibrar sus umbrales.
La app lo dice en pantalla: es un canal adicional de información sísmica, no reemplaza los sistemas oficiales de emergencia, y las alertas pueden llegar antes, durante o después del movimiento.
- 3 vías de detección: si una falla, las otras siguen
- 11 idiomas, 34 pruebas móviles, 17 Edge Functions
- Datos: EMSC (CC BY 4.0), SGC y USGS; mapas © CARTO y colaboradores de OpenStreetMap
- Pantallas y video de esta página: build de demostración, datos reproducidos e inventados, alarma simulada
Las preguntas que escuchamos a menudo
¿Seismic Guard funciona en iPhone?
Sí. El iPhone no recibe las alertas de terremoto de Android, pero cuando un teléfono Android registrado recibe una, nuestro servidor la reenvía por push a los iPhone dentro del radio de alerta, 500 km por defecto. El iPhone también recibe las alertas de catálogo de EMSC, SGC y USGS.
¿La app predice terremotos?
No. Ninguna app puede predecirlos. Seismic Guard reenvía alertas tempranas cuando existen y avisa de sismos detectados por las redes científicas. No todos los sismos se detectan, y una alerta puede llegar antes, durante o después del movimiento.
¿De dónde salen los datos?
De EMSC (licencia CC BY 4.0), el Servicio Geológico Colombiano, USGS y GEOFON como respaldo, más las alertas de Android reenviadas. Los mapas usan teselas de CARTO con datos de OpenStreetMap.
Casos cercanos a este
Ver más
Veto · Mensajería privada
Mensajería E2E sin número de teléfono
Messenger de privacidad extremo: identidad local sin número de teléfono, cifrado de extremo a extremo, vault con PIN y entrega multi-relay: los operadores solo ven cifrado, nunca el plaintext.
Saber más →
Ver más
Flashdays · App de fotos
Un carrete revelado como en 2006
App Flutter para Android e iOS que da a un carrete entero el look de una compacta de los 2000 y lo exporta como carrusel, revelado en la GPU del teléfono.
Saber más →
Ver más
Dampling · Beber menos
Beber menos, con una mascota que crece
App Flutter para Android y iOS: un diario de alcohol y nicotina que guarda los datos en el teléfono y una mascota dumpling que crece cada día sin alcohol.
Saber más →Pongámoslo en producción
Cuéntanos tu reto. Respondemos en menos de 24 horas laborales con una primera lectura honesta: si podemos ayudarte, te diremos cómo; si no, te diremos quién puede.
Contesto personalmente. Sin formularios eternos ni respuestas automáticas.
