Skip to content

Native Heartbeat Delegation ​

Problem Statement ​

Le heartbeat JavaScript existant met a jour le champ heartbeat du device dans Directus. Dans une WebView Android passee en arriere-plan, les timers JavaScript peuvent etre suspendus et le monitoring backend peut considerer le device hors ligne.

Solution Overview ​

La webapp probe les capabilities de l'hote via GET_HOST_CAPABILITIES. Si l'hote annonce explicitement un heartbeat natif qui tourne en arriere-plan, la webapp enregistre le contexte avec REGISTER_HEARTBEAT_CONTEXT et ne planifie pas la tache JavaScript heartbeatDevice.

Le fallback JavaScript reste le comportement legacy pour tous les autres cas.

Decision Rules ​

La delegation native est acceptee uniquement si toutes les conditions sont vraies:

  • capabilities.actions.REGISTER_HEARTBEAT_CONTEXT === true
  • capabilities.runtime.heartbeat.supported === true
  • capabilities.runtime.heartbeat.runsInBackground === true
  • la reponse de REGISTER_HEARTBEAT_CONTEXT contient nativeHeartbeat === true

Included Documents ​

  • implementation.md: flux d'execution et points de code.
  • compatibility.md: matrice de compatibilite et fallback legacy.
  • troubleshooting.md: diagnostics courants.

References ​

  • docs/technique/bridge/host-capabilities/README.md
  • docs/technique/bridge/host-response-contract.md
  • src/lib/utils/utilsCms.ts
  • src/lib/stores/tasks.ts