Tutoriel Swift : HealthKit ou comment récupérer des données cardiologiques en Swift grâce à l’iPhone

Düsseldorf graphic Design Institute(1)

Cela faisait un petit moment que je n’avais pas publié de nouveaux tutoriel. Celui que je vous propose aujourd’hui est à la fois un tuto et une POC, qui va nous permettre d’aborder un gros morceau : HealthKit

Voici à quoi ressemblera notre appli terminée :

heartStatisitcs

HealthKit : Késako ?

Si vous avez un iPhone, vous avez sans doute remarqué l’application « Santé » ainsi que toutes les informations qu’elle est susceptible de contenir.

Pour ceux qui ne verraient pas de quoi je parle, voici l’appli :

Sante

On peut y renseigner un max de données concernant sa santé, et surtout la relier à différentes sources de données, dont l’AppleWatch.

Dans ce tutoriel, je vais vous présenter une petite démo sous forme de POC qui récupère les données cardio sur une période donnée, et en déduit les valeurs mini et maxi ainsi que la moyenne en BPM.

Mais avant tout, pour traiter des données, encore faut-il en avoir !

« Mieux vaut un mauvais algorithme avec beaucoup de datas qu’un bon algorithme sans datas » : Laurent Alexandre.

Perso, je préfère un bon algo avec beaucoup de datas…

Importer des données dans le simulateur

Pour récupérer des données exploitables, soit vous les récupérer vous même avec votre iPhone, soit vous utiliser l’appli HealthKitImporter, de Comocomo :

hkImporter

Pour importer des données dans votre simulateur, il y a juste à lancer l’appli, et à cliquer sur le bouton « Start Exporting »

Voilà, nous avons des données !

« Un grand pouvoir implique de grandes responsabilités » : Spiderman / Voltaire

Récupérer les autorisations

De part les données qu’il est susceptible de manipuler, l’accès à HealthKit est fortement « réglementé » par Apple.

Tout d’abord, il vous faudra impérativement un compte développeur actif, et l’avoir renseigné dans votre xCode.

CompteDev

Ensuite, il nous faut ajouter « HealthKit » aux possibilités de l’appli :

Permissions1

Puis ajouter les permissions dans le fichier Info.plist.

2 permissions sont nécessaires :

  • Privacy – Health Share Usage Description
  • Privacy – Health Update Usage Description

Permissions2

Et enfin, demander à l’utilisateur d’autoriser l’appli à accéder à ses données HealthKit.

Dans l’appli de démo, je réalise cela grâce à un bouton « Request HK Permissions » :

RequestHKPermissions

Et à une classe « HealthKitSetupAssistant » (merci au super site de Rey Wenderlich !) :

HKSetupAssistant

Le code s’explique par lui-même. Lorsque l’utilisateur clique sur le bouton « Request HK Permissions », on ouvre un écran de paramètres :

HealhtParametres

Si tout est ok, on cache le bouton et on charge les données.

L’important est de bien déclarer les données santé que l’on désire utiliser en lecture ou en écriture dans la méthode « HealthKitSetupAssistant » :

HKDatas

Pour connaitre les types de données accessibles via HealthKit, je vous invite à consulter ce lien. C’est en Objective C, mais c’est facilement convertible en Swift.

Bon, maintenant que nous avons nos accès à HealthKit, il faut récupérer des données et les traiter !

HealthKit enregistre ses données dans une base de données, un peu comme CoreData. Il va donc falloir forger des requêtes. C’est le rôle de la classe « HeartDataManager » :

HealhtDataManager

Pour ceux qui connaissent CoreData, cela sera relativement limpide.

Pour les autres, l’idée est de forger notre demande, c’est le rôle du « Predicate » et du « Descriptor », puis de la transformer en requête de type « HKSampeQuery » (Query).

La requête est ensuite réalisée sur la base de donnée HealthKIt : « HKealthStore().execute(heartRateQuery) » et le résultat est retourné par l’intermédiaire du Completion Handler.

Voici comment utiliser cette méthode via la fonction LoadDatas() :

LoadDatas1

Notez que l’on utilise un autre thread car la lecture de la base de données HealthKit peut prendre un peu de temps.

Reste à réaliser un petit tri sur nos données : je les classe par date croissante, puis je remplis 2 tableaux contenant les dates et les valeurs. Ces tableaux servent enfin à calculer les données à afficher dans notre vue : « bpm moy », « bpm max », « bpm min » (celui contenant les dates servira dans un futur tuto… patience !

Je passe sous silence les différentes méthodes utilisées pour réaliser ce tri et ces calculs car ce n’est pas le sujet, mais je pense que le code du POC est suffisamment clair.

Voilà, vous pouvez télécharger le projet complet sur GitLab : https://gitlab.com/vinceBar/heartStatistics

N’hésitez pas à commenter ou me contacter si vous avez des questions / suggestions… et n’oubliez pas : codez, codez, il en restera toujours quelque chose !

Une réflexion sur “Tutoriel Swift : HealthKit ou comment récupérer des données cardiologiques en Swift grâce à l’iPhone

  1. Pingback: API Charts tutoriel | Pour quelques lignes de plus...

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s