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