Mode hors ligne
Base de données locale, file d'attente, comportement de synchronisation
Fonctionnement du mode hors ligne
L'application Scanner est conçue pour fonctionner entièrement hors ligne après l'enregistrement initial. Toute la validation des billets (vérification de signature, contrôle d'expiration, détection de doublons) est effectuée localement à l'aide des données mises en cache. Seule l'étape de confirmation du check-in nécessite une connexion réseau, et même celle-ci est mise en file d'attente si le réseau est indisponible.
Base de données locale
L'application maintient une base de données SQLite locale avec les données suivantes :
| Données | Objectif |
|---|---|
| Enregistrements | Événements enregistrés avec clés API et affectations de porte |
| Clés d'émetteur | Clés publiques en cache pour la vérification des signatures de billets |
| Historique des scans | Enregistrement de chaque tentative de scan et de son résultat |
| Check-ins en attente | File d'attente des check-ins en attente de synchronisation avec le serveur |
| Statuts des billets | Statuts des billets en cache (révoqués, enregistrés) téléchargés depuis le serveur |
Ces données locales permettent au scanner de valider les billets et de détecter les billets déjà utilisés ou révoqués, même sans connexion internet.
File d'attente des check-ins en attente
Lorsque vous marquez un billet comme utilisé en étant hors ligne, le check-in est ajouté à une file d'attente.
Consulter les check-ins en attente
Allez dans le menu > Synchronisation en attente. L'élément du menu affiche un badge avec le nombre d'éléments en attente.
S'il n'y a pas d'éléments en attente, l'écran affiche « Tout est synchronisé. »
Chaque élément en attente affiche :
- Identifiant du billet
- Nom de l'événement
- Heure de la dernière tentative de synchronisation (si une relance a été tentée)
Relance manuelle
Appuyez sur Relancer maintenant pour tenter de synchroniser immédiatement tous les check-ins en attente. Ceci est utile lorsque vous savez que la connexion a été rétablie.
Synchronisation automatique
L'application tente automatiquement de synchroniser les check-ins en attente lorsque :
- La connectivité réseau est rétablie après une période hors ligne
- L'application revient au premier plan
Aucune action manuelle n'est nécessaire dans la plupart des cas.
Synchronisation des statuts de billets
L'application télécharge périodiquement les statuts de billets mis à jour depuis le serveur pour chaque événement enregistré. Cette synchronisation :
- S'exécute en arrière-plan toutes les quelques minutes
- Se déclenche aussi lorsque l'application revient au premier plan
- Télécharge l'état actuel de tous les billets (lesquels sont révoqués, lesquels sont déjà enregistrés)
Cela permet au scanner de rejeter les billets révoqués ou déjà utilisés même hors ligne, car le dernier statut connu est mis en cache localement.
Idempotence
Chaque check-in se voit attribuer un identifiant unique (clé d'idempotence) lors de sa création. Cela signifie :
- Il est possible de relancer en toute sécurité les check-ins en attente plusieurs fois
- Le serveur déduplique sur la base de cette clé
- Il n'y a aucun risque qu'un billet soit marqué comme utilisé deux fois à cause de relances réseau
Détection de connectivité
L'application surveille la connectivité réseau en temps réel. Lorsque la connexion est interrompue :
- Le scan et la validation continuent de fonctionner normalement
- Les check-ins sont mis en file d'attente localement au lieu d'être envoyés au serveur
- Le message « Admis (synchronisation en attente) » apparaît après chaque check-in hors ligne
Lorsque la connectivité est rétablie :
- La file d'attente est automatiquement vidée
- Les éléments synchronisés avec succès sont retirés de la file d'attente
- L'historique des scans passe de « en attente » à « valide » pour les billets synchronisés
- Les éléments en échec restent pour la prochaine tentative de relance
Remarque : Si vous consultez l'historique des scans pendant qu'une synchronisation en arrière-plan se termine, vous devrez peut-être quitter l'écran et y revenir pour voir les statuts mis à jour.
Bonnes pratiques
- Enregistrez votre appareil en étant en ligne. L'enregistrement initial nécessite une connexion internet pour télécharger les clés et les statuts de billets.
- Synchronisez avant le début de l'événement. Ouvrez l'application en étant connecté pour vous assurer d'avoir les derniers statuts de billets et clés publiques.
- Vérifiez le compteur de synchronisation en attente après l'événement pour vous assurer que tous les check-ins ont été synchronisés.
- Ne supprimez pas un événement tant que tous les check-ins en attente n'ont pas été synchronisés. L'application bloquera la suppression si des éléments en attente existent.