Planifier les performances

Nous vous recommandons de suivre les bonnes pratiques suivantes pour vous assurer que votre application fonctionne bien avec Santé Connect.

Écrire des données

Les applications ne doivent écrire dans Santé Connect que des données dont elles sont la source.

Si les données ont été importées depuis une autre application, la responsabilité d'écriture dans Santé Connect incombe à cette application.

Il est également conseillé d'implémenter une logique qui gère les exceptions d'écriture (par exemple, les données qui se trouvent en dehors des limites ou les erreurs système internes). Vous pouvez appliquer vos stratégies d'intervalle entre les tentatives et de nouvelles tentatives au niveau d'un mécanisme de planification des tâches. Si l'écriture sur Santé Connect échoue, assurez-vous que votre application peut passer outre ce point d'exportation. N'oubliez pas de consigner et de signaler les erreurs pour faciliter le diagnostic.

Lorsque vous suivez les données, quelques suggestions peuvent vous aider en fonction de la manière dont votre application écrit les données.

Suivi passif

Cela inclut les applications qui effectuent un suivi passif de la condition physique ou de la santé, comme l'enregistrement continu d'un nombre de pas ou d'une fréquence cardiaque.

Votre application doit écrire régulièrement des données dans Santé Connect comme suit :

  • Lors de chaque synchronisation, n'écrivez que les nouvelles données et ne mettez à jour que les données modifiées depuis la dernière synchronisation.
  • Limitez les requêtes à 1 000 enregistrements par requête d'écriture.
  • Utilisez WorkManager pour planifier les tâches périodiques en arrière-plan, d'une durée minimale de 15 minutes.
  • Permettez l'exécution des tâches uniquement lorsque l'appareil est inactif et qu'il n'est pas à court de batterie.

    val constraints = Constraints.Builder()
        .requiresBatteryNotLow()
        .requiresDeviceIdle(true)
        .build()
    
    val writeDataWork = PeriodicWorkRequestBuilder<WriteDataToHealthConnectWorker>(
            15,
            TimeUnit.MINUTES,
            5,
            TimeUnit.MINUTES
        )
        .setConstraints(constraints)
        .build()
    

Suivi actif

Cela inclut les applications qui effectuent le suivi des événements comme les entraînements et le sommeil, ou les entrées manuelles des utilisateurs, comme la nutrition. Ces enregistrements sont créés lorsque l'application est exécutée au premier plan ou sont des événements occasionnels qui se produisent tout au plus quelques fois par jour.

Assurez-vous que votre application n'entraîne pas l'exécution continue de Santé Connect pendant toute la durée de l'événement.

Les données doivent être écrites dans Santé Connect de l'une des deux manières suivantes :

  • Synchronisez les données avec Santé Connect une fois l'événement terminé (par exemple, lorsque l'utilisateur met fin à un entraînement dont le suivi était effectué).
  • Planifiez une tâche ponctuelle à l'aide de WorkManager pour synchroniser les données ultérieurement.

Taux d'échantillonnage

Lorsque vous écrivez des données dans Santé Connect, utilisez des taux d'échantillonnage appropriés pour réduire la charge de stockage. Par exemple, il est utile de réfléchir à la fréquence d'enregistrement du nombre de pas ou au type de données de taux d'échantillonnage nécessaire pour un entraînement actif, comme une course de vitesse.

Tous les types de données ne nécessitent pas le même taux d'échantillonnage. Une mise à jour des données liées au nombre de pas à chaque seconde présente peu d'avantages, par rapport à une cadence moins fréquente (toutes les 60 secondes, par exemple). Toutefois, des taux d'échantillonnage plus faibles peuvent donner aux utilisateurs un aperçu plus détaillé et précis de leurs données de santé et de remise en forme. Les fréquences d'échantillonnage doivent trouver un juste milieu entre le niveau de détail et les performances.

Synchroniser les données

Les facteurs suivants ont un impact sur le processus de synchronisation.

Expiration des jetons

Étant donné qu'un jeton de modifications inutilisé expire dans les 30 jours, vous devez adopter une stratégie de synchronisation qui évite de perdre des informations dans ce cas. Votre stratégie peut inclure les approches suivantes :

  • Dans le datastore de votre application, recherchez le dernier enregistrement consommé également associé à un id Santé Connect.
  • Demandez à Santé Connect les enregistrements qui commencent par un code temporel spécifique, puis insérez-les ou mettez-les à jour dans le datastore de votre application.
  • Demandez un jeton de modifications afin de le réserver pour la prochaine fois que vous en aurez besoin.

Stratégies recommandées de gestion des modifications

Si votre application reçoit des jetons de modifications non valides ou ayant expiré, nous vous recommandons les stratégies de gestion suivantes en fonction de son application dans votre logique :

  • Lire et dédupliquer toutes les données : il s'agit de la stratégie la plus adaptée.
    • Stockez le code temporel indiquant la dernière fois que les données de Santé Connect ont été lues.
    • À l'expiration du jeton, relisez toutes les données du dernier code temporel ou des 30 derniers jours. Dédupliquez-les ensuite par rapport aux données lues précédemment à l'aide d'identifiants.
    • Idéalement, implémentez des ID client, car ils sont requis pour les mises à jour de données.
  • Lire uniquement les données depuis le code temporel où elles ont été lues pour la dernière fois : cette stratégie entraîne des écarts de données à l'expiration de votre jeton de modifications, mais cette période plus courte peut prendre de quelques heures à quelques jours.
    • Stockez le code temporel indiquant la dernière fois que les données de Santé Connect ont été lues.
    • À l'expiration du jeton, lisez toutes les données à partir de ce code temporel.
  • Supprimer, puis lire les données des 30 derniers jours : cette stratégie correspond plus précisément à ce qui se passe lors de la première intégration.
    • Supprimez de Santé Connect toutes les données lues par l'application au cours des 30 derniers jours.
    • Une fois les données supprimées, lisez-les de nouveau.
  • Lire les données des 30 derniers jours sans déduplication : il s'agit de la stratégie la moins conseillée, car elle entraîne l'affichage de données en double pour les utilisateurs.
    • Supprimez de Santé Connect toutes les données lues par l'application au cours des 30 derniers jours.
    • Autorisez les entrées en double.

Jetons de modifications par type de données

Si votre application consomme plusieurs types de données indépendamment, utilisez des jetons de modification distincts pour chaque type de données. N'utilisez une liste de plusieurs types de données avec l'API Changes Sync que si ces types de données sont soit toujours consommés ensemble, soit jamais consommés ensemble.

Lectures au premier plan

Les applications ne peuvent lire les données de Santé Connect que lorsqu'elles sont au premier plan. Lorsque vous synchronisez des données à partir de Santé Connect, l'accès à Santé Connect peut être interrompu à tout moment. Par exemple, lorsqu'elle lit une grande quantité de données à partir de Santé Connect, votre application doit gérer les interruptions qui ont lieu en cours de synchronisation et reprendre la prochaine fois que l'application sera ouverte.

Planification des importations

Comme votre application ne peut pas recevoir de notifications en cas de nouvelles données, elle doit les rechercher dans les deux cas de figure suivants.

  • Chaque fois que votre application devient active au premier plan. Dans ce cas, utilisez des événements de cycle de vie.
  • À intervalles réguliers, pendant que votre application reste au premier plan. Informez les utilisateurs lorsque de nouvelles données sont disponibles, ce qui leur permettra d'actualiser leur écran en conséquence.

Limites de débit

Dans de rares cas, Santé Connect limite le débit des requêtes provenant de votre application. Cela permet de réduire l'impact sur la batterie et les performances de l'appareil.

  • Nous vous recommandons vivement de suivre les bonnes pratiques pour éviter que les requêtes de votre application ne soient rejetées en raison des limites de débit.
  • Les applications doivent être résilientes face à la limitation du débit. Par exemple, les données en arrière-plan peuvent être écrites lors de la tâche périodique suivante en cas d'échec des requêtes dues à une limitation de débit.

Intégrer votre application

De nombreuses applications disposent d'un processus d'acceptation personnalisé proposant une formation aux fonctionnalités ou demandant le consentement de l'utilisateur, par exemple. Nous recommandons vivement aux développeurs d'exporter une activité d'acceptation lancée par Santé Connect lorsque l'utilisateur interagit avec l'application pour la première fois. Pour ce faire, ajoutez le code suivant à votre fichier manifeste :

<!-- Required to support pre-Android 14 devices with APK Health Connect -->
<activity
  android:name=".OnboardingActivity"
  android:exported="true"
  android:permission="com.google.android.apps.healthdata.permission.START_ONBOARDING"
  <intent-filter>
    <action android:name="androidx.health.ACTION_SHOW_ONBOARDING"/>
  </intent-filter>
</activity>
<!-- Required to support Android 14+ devices with platform Health Connect -->
<activity-alias
  android:name="UAndAboveOnboardingActivity"
  android:exported="true"
  android:targetActivity=".OnboardingActivity"
  android:permission="android.permission.health.START_ONBOARDING">
  <intent-filter>
    <action android:name="android.health.connect.action.ACTION_SHOW_ONBOARDING" />
  </intent-filter>
</activity-alias>

Veuillez noter que cette fonctionnalité n'est pas encore disponible pour Android 14, mais elle le sera bientôt.

Lorsqu'un utilisateur tente de connecter votre application à Santé Connect, l'activité exportée est lancée. Cette activité doit effectuer les opérations suivantes :

  • Présenter toute information pertinente à l'utilisateur, par exemple en expliquant quelles données sont écrites ou lues
  • Demander à l'utilisateur d'accorder son consentement si nécessaire
  • Envoyer une demande d'autorisation à Santé Connect
  • Exécuter toute autre logique spécifique à l'application, telle que la planification d'un worker périodique
  • Autoriser l'utilisateur à ignorer l'activité à la fin

Pour les applications qui n'exportent pas d'activité d'acceptation, Santé Connect redirige l'utilisateur vers l'écran Manage permissions (Gérer les autorisations) une fois qu'il tente de connecter l'application. Cela peut être acceptable pour les applications pour lesquelles les autorisations sont la seule condition préalable au fonctionnement de l'intégration.

Notez que l'activité d'acceptation peut être lancée plusieurs fois, par exemple si l'utilisateur révoque ultérieurement des autorisations pour votre application, puis la reconnecte.