SkiJourney 2 – GPS Alpin

Cette application découle d’un projet personnel réalisé pendant mes temps libres.

Des versions Android et iOS sont disponibles. L’application fonctionne aussi sous Windows, mais l’interface spécifique reste à développer.

Elle permet d’enregistrer les sorties de ski, comme d’autres applications peuvent aussi le faire, et d’en extraire les statistiques habituelles.

Là où elle se distingue des autres applications disponibles, c’est par l’identification automatique des pistes et des remontées.

En effet, l’application peut télécharger de l’information sur les centres de ski à partir d’une base de données en ligne. Cette base de données inclut tout ce qui se retrouve dans OpenSnowMap.org, une extraction hivernale de OpenStreetMap.org.

Dans la version initiale, on y retrouve de l’information sur:

  • 2044 domaines skiables
  • 22 849 remontées
  • 89 828 pistes

Un algorithme permet l’identification automatique des pistes et remontées empruntées.

Toutes les données peuvent être stockées dans le nuage, ce qui en facilite la sauvegarde et la restauration, même d’une plateforme à l’autre.

Parmi les autres fonctionnalités, on retrouve l’importation et l’exportation de fichiers .GPX (permettant l’échange de données avec l’immense majorité des autres applications de suivi sportif) et le paramétrage complet du moteur d’identification.

Des développements futurs devraient permettre l’accès et l’édition des données à partir d’une interface web. Le partage d’information vers d’autres applications (RunKeeper, Strava) ou vers les réseaux sociaux (Facebook, Twitter, etc.) devrait aussi être facilité.

Pour participer au test de l’application avant sa publication, utilisez le formulaire ci-dessous.

← Retour

Merci pour votre réponse. ✨

Quelques technicalités

L’application est écrite en C# avec la plateforme Xamarin qui permet de rassembler autant de fonctionnalités que possible sous un code unique, utilisable autant sur iOS, Android que Windows.

Certaines sections sont tout de même spécifiques à chaque plateforme, les technologies employées sur iOS et Android étant trop différentes ; c’est le cas de celles qui permettent l’utilisation du GPS en arrière-plan, notamment.

Des contrôles sur mesure permettent l’affichage de la carte et des pistes empruntées.

Les données sur les centres de ski sont importées et analysées à partir du format XML à l’aide d’une autre application, en .NET6 celle-là, avant d’être téléchargées vers une base de données SQL sur Azure.

L’application accède à ces données à l’aide d’une API REST. Cette même API est aussi employée pour le stockage des données utilisateurs sur le nuage.

Sur l’appareil, toutes les données sont stockées dans une base SQlite.

La gestion des utilisateurs utilise un locataire B2C Active Directory, toujours sur Azure, permettant l’utilisation des comptes Microsoft, Apple, Google ou Facebook.

La partie la plus exigeante a été le développement du moteur d’analyse des tracés, afin que les pistes et remontées puissent être identifiées correctement. Ce n’est pas parfait, mais ça fonctionne assez bien pour le moment. En fait, la précision dépend de la qualité des données de base, inscrites sur OpenStreetMap. Comme ces dernières sont générées par les utilisateurs, la qualité est souvent… variable.

Historique

La version actuelle est une réécriture complète, mais elle s’appuie sur des projets antérieurs.

En effet, une première version de l’application a été développée en 2015 pour Android, en Java. Elle a été disponible sur le Play Store de 2016 à 2018 environ.

Je n’ai plus accès à toutes les données historiques de cette époque, mais, au sommet de sa popularité, elle était téléchargée une quarantaine de fois par jour.

Malgré cela, la version payante n’a été acquise que par une poignée d’utilisateur, générant 19,21$, au total, pour la vie de l’application. Ce sont des dollars américains, tout de même !

Sensiblement au même moment, j’ai entrepris le développement d’une version pour Windows Phone. Eh oui ! Pour vrai ! Au fil des ans, j’ai eu des Nokia Lumia 1020, 928 et 930. L’écran du premier a été endommagé à la suite d’une vilaine chute, mais les autres fonctionnent toujours. Ils sont réellement indestructibles.

Le langage de programmation passait alors au C#, mais l’application était 100% en code natif, d’abord pour Windows Phone 8.1, puis pour Windows Phone 10. Un module permettait l’utilisation du Microsoft Band 2, pour le contrôle de l’application, l’affichage des données en temps réel au poignet et l’enregistrement du rythme cardiaque.

Contrairement à ce qu’on pourrait croire, cette version a été beaucoup plus populaire que celle pour Android, particulièrement en Europe. Le marché étant sans doute moins saturé, la version payante a généré quelques centaines de dollars en revenus. Rien d’impressionnant, mais la performance était bien meilleure que sous Android.

Une des fonctionnalités particulières de ces versions était de générer des fichiers .PNG présentant un rapport détaillé de la sortie et de les partager sur les réseaux sociaux. Cette fonction n’a pas encore été intégrée à la nouvelle version.

D’autres fonctionnalités étaient présentes et n’ont toujours pas été intégrées à la nouvelle version: importation et exportation des sorties vers RunKeeper, importation des amis Facebook, partage de la position en temps réel avec ces derniers, etc.

Une première version du moteur d’identification des pistes est développé, mais il n’est pas très efficace, l’architecture même du logiciel fait en sorte que la greffe est laborieuse. Ça fonctionne, mais tout juste et les plantages sont nombreux.

Je tente d’amorcer une version iOS, mais n’ayant pas de Mac sous la main, c’est peine perdue.

Le développement de cette version a cessé quelque part en 2017.

Les technologies évoluant rapidement, la version Android aurait nécessité des mises à jour importantes pour s’adapter aux nouvelles exigences de Google. Du coté de Windows Phone, la plateforme entière était en fin de vie, abandonnée par Microsoft.

Pour une personne seule, qui fait tout de A à Z, les relations avec les utilisateurs, la gestion des bogues, les réponses aux messages, avis ou autres, sont toutes très exigeantes. L’insuccès commercial n’a jamais vraiment été un facteur déterminant: il est plus facile de ne pas offrir de service après-vente pour une application gratuite, on se sent moins coupable :).

Bref, tout ça s’est éteint petit à petit, puis définitivement au printemps 2019.

Avant de renaître en janvier 2022 !

Laisser un commentaire