Skip to content

Détails des Échanges du Bridge ​

Ce document spécifie les messages postMessage échangés entre l'application SvelteKit (Iframe) et l'application hôte TV.

Format des Messages ​

Tous les messages suivent une structure JSON standardisée.

Requête (Request) ​

Envoyée par l'initiateur (généralement l'App vers l'Hôte, ou l'Hôte vers l'App pour le Ping).

json
{
	"type": "TV_API_REQUEST",
	"requestId": "string (identifiant unique)",
	"action": "string (action à exécuter)",
	"params": "object (paramètres optionnels)"
}

Réponse (Response) ​

Renvoyée par le destinataire après traitement.

json
{
	"type": "TV_API_RESPONSE",
	"requestId": "string (doit correspondre au requestId de la requête)",
	"ok": "boolean (true si succès, false si erreur)",
	"payload": "any (données de retour ou message d'erreur)"
}

🚀 Requêtes de l'App vers l'Hôte ​

Ces requêtes sont initiées par la classe UnifiedPlatformBridge (src/lib/classes/platforms/platformBridge.ts).

1. Identification du Device ​

ActionDescriptionParamètresRetour (payload)
GET_IDENTIFIERRécupère l'UID ou l'adresse MAC unique.Aucunstring ou { identifier: string }
GET_MACRécupère l'adresse MAC.Aucunstring ou { mac: string }
GET_MANUFACTURERRécupère le nom du fabricant (LG, Samsung...).Aucunstring ou { manufacturer: string }
GET_MODELRécupère le modèle exact du téléviseur.Aucunstring ou { model: string }
GET_SYSTEM_INFORécupère les infos OS du host.Aucun{ os?: string, osVersion?: string }
GET_STORAGE_INFORécupère la capacité disque du host.Aucun{ diskFree?: number, diskTotal?: number }

2. Contrôle d'Applications ​

ActionDescriptionParamètresRetour (payload)
LAUNCH_APPLance une application externe par son ID. dataUri peut contenir un deep link, par exemple vpn://import?... pour le provisioning VPN.{ appId: string, dataUri?: string }void
CAN_LAUNCH_APPVérifie dynamiquement si une application peut être lancée.{ appId: string, dataUri?: string }{ canLaunch: boolean, reasonCode?: string }
LAUNCH_TVRetourne à l'interface TV native.{ packageName?: string }void
OPEN_SYSTEM_SETTINGSOuvre les paramètres système génériques.Aucun{ opened: boolean } ou boolean
OPEN_MANUFACTURER_SETTINGSOuvre les paramètres constructeur (agnostique du host).{ target?: 'default' | 'professional' | 'vendor-specific', vendor?: string, section?: string }{ opened: boolean } ou boolean
GET_HOST_CAPABILITIESRetourne les capacités actionnelles et matérielles du host.Aucun{ bridgeVersion, host, capabilities }
GET_NETWORK_INFORetourne les informations réseau de l'hôte.Aucun{ wifi, ethernet, vpn, collectedAt }
OPEN_SETTINGS (legacy)Ancienne action conservée temporairement en fallback.{ brandSettings?: boolean }boolean

3. Maintenance & Système ​

ActionDescriptionParamètresRetour (payload)
PURGE_DATADemande la purge du cache et des données.Aucunvoid
REBOOTDemande le redémarrage du device.Aucunvoid
INSTALL_APPDemande l'installation d'une application.{ url: string }void

4. Gestion du Hotspot (Phase 2) ​

ActionDescriptionParamètresRetour (payload)
HOTSPOT_GETRécupère l'état actuel du point d'accès Wi-Fi.Aucun{ enabled: boolean, ssid?: string, password?: string }
HOTSPOT_SETMet à jour l'état ou les credentials du hotspot.{ subAction?: 'start'|'stop', ... }void

💓 Requêtes de l'Hôte vers l'App ​

Principalement utilisé pour le maintien de la connexion (Heartbeat).

1. Ping / Health Check ​

ActionDescriptionParamètresRéponse de l'App
PINGVérifie si l'iframe est toujours réactive.Aucun{ pong: true, timestamp: number, iframeStatus: 'operational' }

📢 Notifications (App vers Hôte) ​

Messages asynchrones envoyés pour informer l'hôte d'un changement d'état, sans attendre de réponse directe.

ActionDescriptionParamètres
NOTIFY_KEYInforme l'hôte qu'une touche télécommande a été capturée par l'iframe.{ keyCode: number, key: string }

🛡️ Sécurité et Timeouts ​

  • Origine : Actuellement, le bridge accepte les messages de toutes les origines ('*'), mais il est recommandé pour l'hôte de filtrer par domaine si possible.
  • Timeout : L'application SvelteKit attend une réponse pendant 5 secondes. Au-delà, elle considère la requête en échec et bascule sur ses stratégies de repli (fallbacks) natives (Capacitor).
  • Validation : Le requestId est essentiel pour réconcilier les réponses asynchrones avec les promesses en attente.

Retour à l'Aperçu du Bridge | Retour à l'accueil