Aller au contenu
WebViewGold Du vibe coding à l'App Store
Français
Obtenir WebViewGold

Cursor + données de santé

HealthKit et Health Connect pour votre app Cursor

Les trackers de fitness, les apps d'habitudes et les outils de coaching créés avec Cursor peuvent afficher le vrai nombre de pas, la fréquence cardiaque ou le poids de l'utilisateur au lieu de lui demander de les saisir. WebViewGold lit et écrit dans Apple Santé (HealthKit) sur iOS et dans Health Connect sur Android avec les deux mêmes schémas d'URL. Le code est la partie facile ; ce sont les règles des stores sur les données de santé qui méritent l'essentiel de votre attention.

Dès $109 en paiement unique par plateforme, ou notre équipe s'occupe de tout dès $698.

  • Garantie d'approbation – ou remboursement sous 14 jours
  • Aucun codage requis
  • Paiement unique, mises à jour gratuites
  • Support humain 24/7
  • Conçu en Allemagne depuis 2014 · ISO 27001

Comment les données de santé arrivent dans votre app web

Lire une valeur

Naviguez vers readhealthkit:// suivi d'un type : un identifiant Apple comme HKQuantityTypeIdentifierStepCount sur iOS, un nom d'enregistrement comme StepsRecord sur Android. Le résultat est injecté dans une variable JavaScript du même nom, sous forme de chaîne valeur et unité (par exemple "8421.0 steps").

Écrire une valeur

writehealthkit://Identifier//Value enregistre une valeur, par exemple writehealthkit://HKQuantityTypeIdentifierStepCount//100 sur iOS ou writehealthkit://StepsRecord//1000 sur Android. Sur Android, la variable contient ensuite WRITE_SUCCESS ou le texte de l'erreur.

Différences entre plateformes

iOS : HealthKit est un plugin WebViewGold, activé avec un token de plugin dans HealthKitEnabled (Config.swift) et la capability HealthKit. Android : Health Connect nécessite Android 8.0 ou plus récent, est intégré à Android 14 et versions ultérieures, renvoie les totaux du jour et injecte "Health Connect not supported" là où il n'est pas disponible.

Prompt pour Cursor

Collez ceci dans Cursor pour implémenter la partie app web. Vérifiez le résultat, publiez, puis testez dans l'app WebViewGold.

Prompt pour l'agent Cursor
Prompt pour l'agent Cursor : Ajoutez la prise en charge de HealthKit et Health Connect pour le wrapper WebViewGold. Créez lib/health.ts avec une correspondance entre steps, weight et heartRate et HKQuantityTypeIdentifierStepCount, HKQuantityTypeIdentifierBodyMass et HKQuantityTypeIdentifierHeartRate (le user agent contient WebViewGold-iOS), ainsi que StepsRecord, WeightRecord et HeartRateRecord (WebViewGold-Android). Implémentez readHealth(kind), qui vide window[key], navigue vers "readhealthkit://" + key et interroge la variable pendant 5 secondes au maximum, plus une file d'attente pour que les lectures ne s'exécutent jamais en parallèle. Ajoutez parseHealthValue("75.4 kg"), qui renvoie le nombre et l'unité. Traitez "Health Connect not supported" et les délais dépassés comme null et affichez une saisie manuelle. Écrivez des tests unitaires avec un window simulé et documentez le pont dans .cursor/rules.

Excellente façon de convertir son app web en app native ! Un délai très court, et un super moyen de mettre ses apps dans les stores sans devoir développer une app native complète !

Kevin Joling · FlightConnections & TrainConnections · Trustpilot

Connecter les données de santé étape par étape

Prévoyez une journée, démarches auprès des stores comprises.

  1. Choisissez les quelques types de données que vous utilisez vraiment

    Les pas pour un défi de marche, le poids pour un programme de coaching, l'eau pour un suivi d'hydratation. Les deux stores veulent une justification pour chaque type demandé : ne demandez donc pas tout « pour plus tard ».

  2. iOS : activez le plugin HealthKit

    Demandez le token de plugin via l'adresse de contact indiquée dans la documentation iOS, renseignez HealthKitEnabled dans Config.swift, ajoutez la capability HealthKit dans Xcode et rédigez les deux textes d'explication (purpose strings) dans Info.plist : Privacy - Health Share Usage Description et Privacy - Health Update Usage Description.

  3. Android : limitez les autorisations Health Connect au strict nécessaire

    Health Connect accorde l'accès par type d'enregistrement, et l'app ne peut lire ou écrire que les types qu'elle demande. Vérifiez les autorisations santé dans le manifeste du projet Android, gardez celles que vous utilisez et préparez la déclaration des apps de santé dans la Play Console.

  4. Détectez la plateforme grâce à votre user agent

    Définissez des user agents personnalisés avec des tokens distincts, par exemple l'un se terminant par WebViewGold-iOS (useragent_iphone, useragent_ipad) et l'autre par WebViewGold-Android (USER_AGENT). Votre code choisit alors l'identifiant HealthKit ou le nom d'enregistrement Health Connect.

  5. Lisez, affichez et prévoyez une solution de repli

    Ne déclenchez la lecture que dans l'app, attendez brièvement la variable injectée et affichez la valeur avec une source claire (« depuis Apple Santé »). Sur iOS, enchaînez plusieurs lectures les unes après les autres, pas dans le même tick de script. Dans un navigateur, proposez une saisie manuelle.

  6. N'écrivez que des données réelles

    Écrivez les valeurs que l'utilisateur a réellement produites ou saisies, comme une marche enregistrée. Écrire des estimations ou des données de test dans Apple Santé enfreint la guideline 5.1.3(ii).

Lire les pas du jour sur les deux plateformes

Une seule fonction, deux noms de type. Les valeurs que vous décidez de conserver vont dans la partie serveur de votre stack : Vos propres routes API ou services.

javascript
// User agents personnalisés : "... WebViewGold-iOS" (Config.swift), "... WebViewGold-Android" (Config.java)
var ua = navigator.userAgent;
var IN_APP = ua.indexOf("WebViewGold") !== -1;
var IS_IOS_APP = ua.indexOf("WebViewGold-iOS") !== -1;

function readSteps(callback) {
  if (!IN_APP) { callback(null); return; }              // navigateur : saisie manuelle
  var key = IS_IOS_APP ? "HKQuantityTypeIdentifierStepCount" : "StepsRecord";
  window[key] = undefined;
  window.location.href = "readhealthkit://" + key;
  var tries = 0;
  var timer = setInterval(function () {
    var v = window[key];
    if (v !== undefined || ++tries > 20) {             // attendre jusqu'à ~5 secondes
      clearInterval(timer);
      if (v === "Health Connect not supported") { v = undefined; }
      callback(v === undefined ? null : String(v));    // ex. "8421.0 steps"
    }
  }, 250);
}

Règles des stores pour les données de santé

Les données de santé sont la catégorie la plus sensible dans les deux stores. Des articles plus anciens citent la section 27 d'anciennes versions des guidelines de l'App Store ; ces règles HealthKit se trouvent désormais principalement dans les sections 2.5.1 et 5.1.3. Lisez les textes actuels avant de soumettre.

  • 2.5.1

    HealthKit uniquement pour la santé et la forme

    HealthKit doit être utilisé à des fins de santé et de forme physique et s'intégrer à l'app Santé, et cette intégration doit être indiquée dans la description de votre app.

  • 5.1.3(i)

    Ni publicité ni exploration de données

    Les données de santé ne peuvent pas être utilisées ni communiquées à des tiers à des fins de publicité, de marketing ou d'exploration de données basée sur l'usage. Indiquez précisément quelles données de santé vous collectez.

  • 5.1.3(ii)

    Pas de fausses données, pas d'iCloud

    N'écrivez pas de données fausses ou inexactes dans HealthKit, et ne stockez pas d'informations de santé personnelles dans iCloud.

  • 5.1.2(i)

    Consentement avant tout partage, IA comprise

    Partager des données personnelles avec des tiers, y compris des services d'IA tiers, nécessite au préalable une information claire et une autorisation explicite.

  • Google Play

    Déclaration des apps de santé

    Les apps qui utilisent Health Connect remplissent la déclaration des apps de santé (Health apps declaration) dans la Play Console et justifient chaque type de données. L'accès est examiné par nom de package, et toute modification des types de données nécessite une nouvelle déclaration.

  • Google Play

    Une seule politique de confidentialité partout

    La politique de confidentialité de la fiche du store doit être la même que celle à laquelle les utilisateurs accèdent par le lien de confidentialité dans Health Connect, et elle doit expliquer comment vous traitez les données de santé.

Avant de soumettre

  • App Privacy (Apple) et Data safety (Google) mentionnent les données de santé et de forme, avec leur finalité, et précisent si elles quittent l'appareil. Voir les étiquettes de confidentialité pour les apps web encapsulées.
  • Les valeurs de santé que vous stockez sont protégées par utilisateur et supprimées avec le compte (voir le guide de la suppression de compte).
  • Les scripts d'analytics et de publicité ne reçoivent jamais de valeurs de santé ; en cas de doute, retirez-les des écrans santé.
  • Les notes de validation indiquent quel écran lit Apple Santé ou Health Connect, à quoi servent les données, et incluent un compte de démonstration. L'appareil de l'examinateur n'a peut-être aucune donnée de santé : décrivez aussi l'état vide.
  • Aucune promesse de diagnostic ou de traitement pour une app de bien-être. Les apps médicales font l'objet d'un examen plus strict (guideline 1.4.1) et peuvent nécessiter une autorisation réglementaire.

Questions fréquentes

Une app web peut-elle lire les données d'Apple Santé ?

Pas depuis Safari : HealthKit n'a pas d'API web. Dans une app native, oui. WebViewGold lit la valeur nativement après un appel readhealthkit:// et l'injecte dans l'app web sous forme de variable JavaScript.

Le même code sert-il pour HealthKit et Health Connect ?

Les schémas d'URL sont identiques (readhealthkit:// et writehealthkit://) ; seuls les noms de type diffèrent : des identifiants HealthKit comme HKQuantityTypeIdentifierStepCount sur iOS, des noms d'enregistrement comme StepsRecord sur Android. Faites la correspondance dans une seule fonction.

Apple refuse-t-il les apps qui utilisent HealthKit ?

Pas si la santé et la forme font réellement partie de l'app. Les refus viennent d'un HealthKit utilisé hors santé et forme, de données de santé utilisées pour la publicité, de fausses données écrites dans Santé et d'intégrations non expliquées. Mentionnez Apple Santé dans votre description et montrez clairement l'intégration dans l'interface.

Où mon app Cursor doit-elle stocker les valeurs de santé ?

Idéalement nulle part : lire, afficher, oublier. Si une fonctionnalité a besoin d'un historique, ne stockez que le nécessaire (par exemple un total par jour), protégez-le par utilisateur, décrivez-le dans la politique de confidentialité et supprimez-le avec le compte.

Health Connect fonctionne-t-il sur tous les téléphones Android ?

Il nécessite Android 8.0 ou plus récent. Il est intégré à Android 14 et versions ultérieures ; sur les versions plus anciennes, les utilisateurs installent l'app Health Connect. Là où il n'est pas disponible, WebViewGold injecte "Health Connect not supported" : gardez donc une saisie manuelle en solution de repli.

Trois façons de mettre votre app dans les stores

Même résultat, charge de travail différente de votre côté. Les trois formules incluent la garantie d'approbation et le support humain 24/7.

Faites-le vous-même

$109 par plateforme, paiement unique

La licence WebViewGold : un projet Xcode ou Android Studio prêt à l'emploi. Collez votre URL, définissez le nom et l'icône, activez les fonctionnalités, compilez et soumettez. Mises à jour gratuites à vie.

Voir les offres sur la page principale

Full Service

$698 par plateforme $798

Envoyez-nous votre URL et votre icône. Notre équipe configure, compile et livre votre app sous 72 heures, en marque blanche, projets sources inclus. Les deux plateformes pour $1,158.

Détails du Full Service Propulsé par WeSetupYourWebViewApp

Prix Soldes d'hiver valables jusqu'au 31 décembre 2026.

Prêt à publier votre app Cursor ?

Garantie d'approbation App Store & Google Play – ou remboursement sous 14 jours

Vous préférez déléguer ? Full Service : nous configurons, compilons et livrons sous 72 heures, dès $698 par plateforme. Des questions ? Chattez avec nous 24/7.

Les remboursements sont accordés aux conditions indiquées dans notre FAQ : un refus non lié au contenu par Apple et/ou Google, demandé dans les 14 jours suivant l'achat.