# Seismic Guard : app d'alerte sismique Android et iPhone

Source: https://slash-digital.io/fr/case-studies/seismic-guard/

Seismic Guard · Alertes sismiques Les téléphones Android peuvent recevoir les alertes séisme de Google, les iPhone non. Nous avons construit Seismic Guard, une app Flutter avec du code natif Kotlin et Swift qui relaie ces alertes aux téléphones proches et ajoute celles de l'EMSC, du SGC et de l'USGS.

Démarrer un projet
Voir la galerie

La carte en direct avec la fiche d'un séisme (EMSC, SGC, USGS) et sa page de détail. Build de démo, données rejouées.

En bref
Seismic Guard est notre app séisme pour Android et iPhone. Elle combine trois voies de détection : les catalogues de l'EMSC, du SGC, de l'USGS et de GEOFON, un relais qui transmet les alertes séisme de Google pour Android à tous les téléphones inscrits dans un rayon de 500 km, et un réseau d'accéléromètres de téléphones encore en mode fantôme. L'app est écrite en Flutter, avec des plugins natifs Kotlin et Swift, un backend Supabase et un back-office Next.js. Les écrans de cette page viennent d'un build de démo, avec des données rejouées et inventées.

Client: Seismic Guard · Alertes sismiques

Secteur: Information sismique

Où: Bogotá, Colombie

Année: 2026

Livrables:
- App Flutter Android et iOS
- Relais natif en Kotlin
- Plugin capteurs Kotlin et Swift
- Backend Supabase : 17 Edge Functions
- Back-office web Next.js

Services:
- Applications mobiles
- Solutions data
- Logiciel sur mesure

3, voies de détection indépendantes

11, langues

500 km, rayon d'alerte par défaut

17, Edge Functions, 15 migrations

01 Le contexte

## L'iPhone ne reçoit pas l'alerte Android

Google envoie des alertes séisme aux téléphones Android dans les zones qu'il couvre, et l'alerte s'affiche dans l'interface d'Android. Un iPhone posé sur la même table ne reçoit rien : dans une famille équipée de téléphones différents, certains sont prévenus, d'autres pas.

Les catalogues du Servicio Geológico Colombiano (SGC), de l'EMSC et de l'USGS publient un séisme une fois la secousse commencée. Ils informent, ils ne préviennent pas. Nous voulions une app qui reçoive les deux signaux sans les confondre, et qui dise franchement à chacun si son téléphone est réglé pour que l'alerte passe.

02 Conception et réalisation

## Trois voies de détection, tenues à part

Le relais est en Kotlin natif. Sur un téléphone Android qui a accordé l'accès aux notifications, un NotificationListenerService repère l'alerte de Google, la note avec un classifieur local et l'envoie, signée en HMAC, à une Edge Function Supabase. Le serveur la diffuse à tous les appareils inscrits dans le rayon d'alerte (500 km par défaut), Android ou iPhone, sans appairage. Les autres notifications sont classées sur le téléphone et n'en sortent jamais. Flutter n'est pas sur ce chemin : le relais fonctionne même interface fermée.

La deuxième voie interroge l'EMSC toutes les 10 secondes, le SGC toutes les 20 et l'USGS toutes les 60 (valeurs par défaut), puis normalise, dédoublonne et met en correspondance les événements. Un événement de catalogue porte l'étiquette de détection rapide et ne s'affiche jamais comme une alerte précoce. La troisième voie fait des téléphones des capteurs. Un détecteur à deux étages, en Kotlin et en Swift, envoie des déclenchements, et seul un consensus serveur d'au moins cinq téléphones crédibles confirme un événement. Elle part en mode fantôme : elle détecte sans alerter tant qu'elle n'a pas été comparée à de vrais séismes du SGC et de l'EMSC.

L'app s'appuie sur 15 migrations SQL, 17 Edge Functions en Deno et un back-office Next.js de sept pages pour les sources, les nœuds relais, le réseau de capteurs, les règles du classifieur et les journaux de livraison. L'interface existe en 11 langues, avec les consignes « se baisser, s'abriter, s'agripper » formulées comme on les dit dans chacune.

Visite d'un build de démo : accueil, séisme, carte, flux d'alertes, Centre de protection et une alarme TAKE ACTION simulée.

-
01

### Les alertes Android relayées vers l'iPhone

Un téléphone Android qui reçoit l'alerte de Google la transmet à tous les téléphones inscrits dans un rayon de 500 km. L'iPhone la reçoit en push APNs, sans Firebase sur ce chemin.

-
02

### Alerte précoce et catalogue séparés

Une alerte relayée porte l'étiquette d'alerte précoce ; un événement EMSC, SGC ou USGS est une détection rapide. Chaque séisme indique quelle source l'a vu, et à quelle heure.

-
03

### Centre de protection

L'app contrôle six conditions qui décident si une alerte passe (canal de notification, affichage plein écran, batterie, Ne pas déranger, entre autres), les note et propose un correctif en un geste pour chacune.

-
04

### L'accès aux notifications reste sur le téléphone

Seul ce que le classifieur note 95 ou plus, une alerte Google confirmée, est envoyé. Les notifications des autres apps sont filtrées sur le téléphone, jamais stockées ni transmises.

03 Galerie

## Le projet en images

9 images · Ouvrez une image pour la voir en grand.

Accueil : état des lieux protégés, dernier séisme proche et score de protection (5 sur 6). Données de démo.

Détail d'un M5.6 à Santander : profondeur, badge EEW et chronologie EMSC, SGC, USGS (données de test rejouées).

Carte en direct avec la fiche du séisme, ses sources et la distance au domicile. Fond © CARTO, données © contributeurs OpenStreetMap.

Flux d'alertes par jour : alerte précoce relayée, détection rapide, mise à jour et test. Alertes simulées.

Centre de protection : six vérifications qui décident si une alerte passe, chacune avec un correctif en un geste.

Alarme plein écran, simulée sur le téléphone : TAKE ACTION, se baisser, s'abriter, s'agripper, puis « Je suis en sécurité ».

Thème sombre : la carte avec le domicile à Bogotá et la fiche du séisme. Fond © CARTO, données © OpenStreetMap.

Admin web, réseau de capteurs : densité par cellule d'environ 1 km et candidats par consensus. Aucune position individuelle. Données inventées.

Admin web, réglages : rayon de 500 km, intervalles d'interrogation (EMSC 10 s, SGC 20 s, USGS 60 s) et registre des sources.

04 Résultats

## Ce qui est en place, ce qui reste ouvert

Seismic Guard en est à la version 1.0.0, avec 34 tests Flutter, une suite backend et une CI qui bloque la release si la localisation, les tests natifs Android ou l'audit des secrets échouent. Deux points restent ouverts, et sont documentés comme tels. Google ne garantit pas que son alerte soit visible des apps tierces : le relais n'est jugé fiable qu'après l'inspection d'une vraie alerte sur un appareil, ce à quoi sert l'EEW Inspector de l'app. Le réseau de capteurs reste en mode fantôme jusqu'au calibrage de ses seuils.

L'app l'affiche : c'est un canal d'information sismique supplémentaire, qui ne remplace pas les systèmes d'alerte officiels, et une alerte peut arriver avant, pendant ou après la secousse.

- 3 voies de détection : si l'une tombe, les autres continuent
- 11 langues, 34 tests mobiles, 17 Edge Functions
- Données : EMSC (CC BY 4.0), SGC et USGS ; cartes © CARTO et contributeurs OpenStreetMap
- Écrans et vidéo de cette page : build de démo, données rejouées et inventées, alarme simulée

Questions fréquentes

## Les questions qu'on nous pose souvent

**Seismic Guard fonctionne-t-elle sur iPhone ?**
Oui. L'iPhone ne reçoit pas les alertes séisme d'Android, mais quand un téléphone Android inscrit en reçoit une, notre serveur la pousse vers les iPhone situés dans le rayon d'alerte, 500 km par défaut. L'iPhone reçoit aussi les alertes de catalogue de l'EMSC, du SGC et de l'USGS.

**L'app prédit-elle les séismes ?**
Non, aucune app ne le peut. Seismic Guard relaie les alertes précoces quand elles existent et signale les séismes détectés par les réseaux scientifiques. Tous les séismes ne sont pas détectés, et une alerte peut arriver avant, pendant ou après la secousse.

**D'où viennent les données ?**
De l'EMSC (licence CC BY 4.0), du Servicio Geológico Colombiano, de l'USGS et de GEOFON en secours, plus les alertes Android relayées. Les cartes utilisent les tuiles CARTO et les données OpenStreetMap.
