5.2WinDev Mobile : applications iOS & Android
L'essentiel en 30 secondes
- WinDev Mobile réutilise le WLangage et l'analyse, mais le mobile est un usage différent : Yacine ne transpose pas les dizaines d'écrans de gestion, il garde quelques tâches terrain.
- Petit écran et tactile imposent de repenser l'interface et la saisie : listes, valeurs par défaut et scan de codes-barres remplacent la frappe.
- La connexion incertaine est la difficulté majeure : base locale, file de modifications et synchronisation avec stratégie de conflits, sans jamais perdre une saisie.
Mini-cas filé — Yacine équipe les techniciens d'une application mobile
Yacine développe l'application de gestion d'une PME de négoce de matériel électrique à Oran. Les techniciens et magasiniers veulent, sur le terrain, scanner un article, consulter sa fiche, saisir un inventaire et faire signer un bon de livraison. Yacine crée une application WinDev Mobile en réutilisant l'analyse et les procédures métier existantes, mais il ne reprend que ces quelques tâches : il ne transpose pas les écrans denses du bureau. L'application stocke les relevés dans une base locale HFSQL et les marque comme non synchronisés. Dans l'entrepôt, sans réseau, le technicien continue de saisir. Au retour de la connexion, l'application envoie les relevés en attente. Yacine a défini une règle de conflit : le serveur gagne sur les quantités de stock, mais la signature et la photo du bon restent conservées. Il prévoit aussi les règles de publication sur les stores.
Cas autonome de cette section : il revient dans le cours, le schéma, le code et le défi 48h de la section 5.2.
1. Réutiliser, pas transposer
WinDev Mobile cible Android et iOS avec le même WLangage, la même analyse et les mêmes éditeurs. Yacine réutilise donc le modèle de données et une partie des procédures métier. Mais il ne transpose pas l'application de bureau : une application de gestion complète comporte des dizaines d'écrans, alors que le terrain n'en réclame qu'une poignée. Le mobile n'est pas une version réduite, c'est un usage différent : scanner un article, saisir un inventaire, faire signer un bon. Le périmètre est la première décision à prendre.
2. Interface tactile et saisie
Un écran dense conçu pour un ordinateur et un clavier est inutilisable sur un téléphone. Yacine hiérarchise l'information, découpe les écrans, agrandit les zones de touche et réduit la saisie au strict minimum. Taper du texte sur un petit clavier est lent et pénible : il privilégie les listes de choix, les valeurs par défaut, le scan de codes-barres, la photo, le GPS ou la signature à l'écran. Les capteurs du téléphone remplacent avantageusement de nombreuses saisies manuelles. L'objectif est que le technicien fasse le bon geste en quelques touches, même avec des gants.
3. Hors ligne, synchronisation et stores
Sur le terrain, le réseau est incertain : sous-sol, entrepôt, zone blanche. Une application qui exige une connexion permanente sera abandonnée. Yacine prévoit une base locale (HFSQL est disponible sur mobile), une file de modifications horodatées et une synchronisation au retour du réseau. Le point difficile reste le conflit : pendant qu'un technicien modifiait une fiche hors ligne, quelqu'un l'a aussi modifiée au siège. La stratégie doit être explicite et adaptée au métier, avec une règle absolue : ne jamais perdre une saisie du terrain. Enfin, la publication passe par les stores (Google Play, App Store), dont les règles et validations évoluent : il faut maintenir l'application dans la durée.
🔎 Exemple concret — 🔎 Exemple concret — Saisir un inventaire hors ligne
Yacine enregistre un relevé localement sans dépendre du réseau :
// Saisie hors ligne d'un relevé d'inventaire
HAjoute(ReleveStock)
ReleveStock.CodeArticle = SAI_CodeArticle
ReleveStock.QuantiteComptee = SAI_Quantite
ReleveStock.DateReleve = SysDateHeure()
ReleveStock.Synchronise = Faux
HModifie(ReleveStock)
Résultat : le technicien travaille dans l'entrepôt même sans connexion.
Réflexe : marquer la ligne comme non synchronisée pour la rejouer plus tard.
Vocabulaire de la section
- WinDev Mobile
- Membre de la gamme PC SOFT pour les applications Android et iOS, partageant WLangage, analyse et éditeurs avec WinDev.
Exemple simple : Yacine crée l'application de scan et d'inventaire pour ses techniciens.
Ce que ce n'est pas : apprendre séparément le natif Android et iOS.
Réflexe : mobile = même socle, autre usage.
- Périmètre mobile
- Ensemble restreint des tâches réellement utiles sur le terrain, choisi avant de concevoir l'application.
Exemple simple : Yacine garde scan, inventaire et bon de livraison.
Ce que ce n'est pas : recopier tous les écrans de gestion sur le téléphone.
Réflexe : le mobile n'est pas une version réduite du bureau.
- Mode hors ligne
- Capacité à consulter et saisir sur l'appareil sans connexion, grâce à une base de données locale.
Exemple simple : Le relevé de Yacine est enregistré dans l'entrepôt sans réseau.
Ce que ce n'est pas : imposer une connexion permanente pour saisir.
Réflexe : hors ligne = base locale et saisie conservée.
- Synchronisation
- Envoi des modifications locales vers le serveur et réception des mises à jour au retour du réseau.
Exemple simple : Les relevés en attente partent dès que le technicien ressort de l'entrepôt.
Ce que ce n'est pas : laisser les données locales sans jamais les remonter.
Réflexe : synchroniser = rejouer la file d'attente.
- Conflit de synchronisation
- Situation où une même donnée a été modifiée hors ligne et sur le serveur ; il faut une règle explicite.
Exemple simple : Yacine décide que le serveur gagne sur les quantités de stock.
Ce que ce n'est pas : laisser chaque appareil écraser les autres sans règle.
Réflexe : le conflit se décide selon le métier, pas au hasard.
En pratique — En pratique — Concevoir une application mobile
- Définissez le périmètre mobile : quelles tâches ont vraiment du sens sur le terrain (consulter, scanner, saisir un inventaire, faire signer).
- Repensez l'interface pour le petit écran et le tactile : zones de touche généreuses, saisie minimale, listes de choix et scans.
- Traitez le hors ligne : base locale, file de modifications horodatées et synchronisation avec une règle de conflit explicite.
- Exploitez les capteurs utiles (photo, code-barres, GPS, signature) et anticipez les règles de publication et de maintenance sur les stores.
Script pas-à-pas — synchroniser les relevés (10 min)
Yacine rejoue les relevés non synchronisés dès que le réseau revient.
La synchronisation ne supprime rien avant confirmation : une saisie du terrain reste conservée jusqu'à son envoi réussi.
Modèle copier-coller — mon application mobile
// Application WinDev Mobile — terrain Yacine
// Analyse partagée : Article, Stock, BonLivraison, ReleveStock
// Périmètre : scan article, inventaire, signature du bon
// Base locale : HFSQL mobile
// File d'attente : ReleveStock.Synchronise = Faux
// Conflit : le serveur gagne sur les quantités, les preuves restent
// Capteurs : code-barres, photo, signature
// Stores : règles à vérifier avant chaque publication
Inventaire d'entrepôt
Yacine fait saisir les quantités comptées hors ligne par les magasiniers.
Scan en clientèle
Yacine fait scanner un article chez le client pour consulter sa fiche et son stock.
Bon de livraison signé
Yacine capture la signature du client sur l'écran du téléphone.
Synchronisation différée
Yacine envoie les relevés au retour du réseau, avec une règle de conflit adaptée au stock.
✓ Bonnes pratiques
- Choisir un périmètre mobile restreint aux tâches du terrain.
- Privilégier scan, listes et valeurs par défaut plutôt que la frappe.
- Prévoir base locale, file d'attente et règle de conflit dès la conception.
✗ Pièges fréquents
- Transposer tous les écrans denses du bureau sur le téléphone.
- Exiger une connexion permanente pour saisir.
- Laisser les conflits de synchronisation sans règle explicite.
Points clés à retenir
- WinDev Mobile réutilise WLangage et analyse pour Android et iOS.
- Le mobile est un usage différent : périmètre et interface doivent être repensés.
- Le hors ligne et la synchronisation sont la difficulté majeure.
- Les stores imposent des règles qui évoluent et une maintenance dans la durée.
Défi 48h — appliquez demain
Comme Yacine, choisissez trois tâches terrain de votre application (consulter, scanner, saisir) et esquissez les écrans mobiles correspondants. Créez une petite table locale avec un indicateur Synchronise, saisissez deux relevés hors ligne, puis écrivez la boucle de synchronisation. Rédigez enfin la règle de conflit que vous appliquerez si la même donnée change au siège.
- Je peux expliquer ce que WinDev Mobile réutilise et ce qu'il faut repenser.
- Je sais définir un périmètre mobile utile au terrain.
- Je sais organiser une saisie hors ligne et sa synchronisation.
Questions fréquentes
Peut-on simplement porter son application WinDev sur mobile ?
Non. WinDev Mobile réutilise le WLangage et l'analyse, mais transposer telle quelle une application de bureau donne un résultat inutilisable. Il faut repenser le périmètre, l'interface et le fonctionnement hors ligne. Ce qui se réutilise : le langage, le modèle de données, une partie des procédures métier et les concepts de l'atelier. Ce qui doit être repensé : les tâches réellement utiles sur le terrain, les écrans tactiles, les modes de saisie (scan, listes, photo), la connexion incertaine et la synchronisation. Yacine garde quelques gestes métier, pas toute l'application.
Comment gérer le mode hors ligne et la synchronisation ?
En stockant les données localement sur l'appareil, en enregistrant les modifications avec leur horodatage, puis en synchronisant au retour du réseau. Le point difficile est le conflit : si la même fiche a été modifiée au siège et sur le téléphone, il faut une règle explicite. Les stratégies courantes sont le serveur gagne, le mobile gagne ou la dernière modification l'emporte, mais le bon choix dépend du métier. Yacine réduit les conflits en privilégiant les ajouts de relevés et en conservant toujours les preuves (signature, photo) même lorsque le serveur impose ses quantités.
Quelle est la difficulté majeure d'une application mobile professionnelle ?