Étude de cas
Un lecteur 4K pour les téléviseurs Samsung et LG
Un lecteur multimédia conçu pour le téléviseur plutôt que porté dessus : une seule base de code pour Samsung Tizen et LG webOS, exécutée sur du matériel vieux de dix ans, avec une navigation pensée pour la télécommande et un backend capable de modifier le comportement de l'application après sa publication.
Technologies
Construit avec
- TypeScript
- Preact
- Vite
- Tizen (Samsung)
- webOS (LG)
- AVPlay
- Shaka Player
- IndexedDB
- Java 21
- Spring Boot
- PostgreSQL
- Docker
Des listes fluides sur un processeur de téléviseur
Les listes de chaînes comptent des milliers d'entrées. Les afficher toutes est exclu, et la virtualisation classique provoque encore un nouveau rendu à chaque déplacement du focus, ce qui suffit sur ce matériel à perdre des images.
La fenêtre visible est donc un ensemble fixe de lignes qui ne sont jamais démontées. Déplacer le focus écrit directement le nouveau texte et le nouvel état dans ces lignes, en contournant entièrement le cycle de rendu du framework. Sur un téléviseur réel, le profileur que nous avons intégré à l'application affichait zéro rendu de composant par seconde pendant le défilement : le travail avait quitté le cycle de rendu.
Mesurer sur l'appareil, parce que l'ordinateur portable ment
Tout paraissait instantané dans un navigateur de bureau et poussif sur un vrai téléviseur. Cet écart est la norme sur cette plateforme et explique pourquoi tant d'applications TV sortent lentes. Les téléviseurs du commerce n'offrent aucun outil de développement exploitable : nous avons donc intégré un indicateur de performance à l'application elle-même et l'avons lu depuis le canapé.
Il a immédiatement réorienté le travail. Les temps par image pendant la navigation se situaient entre 165 et 265 millisecondes avec l'aperçu vidéo désactivé, et entre 0,5 et 1,3 seconde avec celui-ci actif. Le goulet d'étranglement n'a jamais été l'interface, mais le décodeur en concurrence pour le même silicium, et aucune optimisation supplémentaire des composants n'y aurait changé quoi que ce soit.
Mesurer d'abord n'est pas une préférence de méthode sur ce type de matériel. C'est la différence entre une semaine de progrès réels et un mois passé à régler la mauvaise couche.
Le backend qu'exige un parc d'appareils
Derrière l'application se trouve un service Spring Boot en Java : registre des appareils, licences et activation, configuration par appareil, et un pipeline de réglages qui permet à un exploitant de modifier le comportement de téléviseurs déjà installés sans publier une nouvelle version.
L'appareil s'identifie une fois au démarrage et reçoit tout ce dont il a besoin en une seule réponse : indicateurs de fonctionnalités, limites, tarifs, l'ensemble. L'application met cela en cache dans IndexedDB et continue de fonctionner quand le réseau, lui, ne fonctionne plus. Les réglages sont cloisonnés par plateforme, si bien qu'un indicateur peut s'appliquer aux appareils Samsung et pas aux autres, et le panneau qui les édite est celui qu'utilise le support au quotidien. C'est du travail backend au service d'une décision produit : pouvoir changer d'avis une fois le logiciel hors de portée.
Passer la validation du magasin
Soumettre une application au magasin Samsung est un projet à part entière. Il exige des icônes et des captures aux dimensions exactes, une description qui survive à la relecture, une classification d'âge conforme à ce que fait réellement l'application, et des conditions légales énonçant clairement ce à quoi le logiciel sert et ce à quoi il ne sert pas.
Nous générons chaque ressource du magasin à partir d'un jeu unique de fichiers vectoriels via un script de build : un changement de marque régénère tout le lot à l'octet près au lieu d'être redessiné à la main. Cela compte plus qu'il n'y paraît. C'est à la deuxième soumission que la plupart des équipes perdent quinze jours.
Résultat
Ce qui a été livré
- 01
Fonctionne sur du matériel de 2015
Une seule base de code pour Samsung Tizen et LG webOS, visant un moteur équivalant à peu près à Chromium 47, sans se noyer dans les polyfills.
- 02
Une navigation sans surprise
Un modèle de focus explicite et indexé, une répétition de touches limitée, un déplacement par image, la recherche géométrique en dernier recours.
- 03
Des milliers de lignes, aucun nouveau rendu
Une fenêtre fixe de lignes recyclées mises à jour impérativement, mesurée sur un téléviseur réel à zéro rendu de composant par seconde pendant le défilement.
- 04
Modifiable après publication
Indicateurs de fonctionnalités, limites et tarifs transmis au démarrage et mis en cache hors ligne : le comportement change sans nouvelle soumission.
- 05
Vingt langues d'interface
Y compris une mise en page complète de droite à gauche, l'exhaustivité des traductions étant garantie par le build plutôt que vérifiée à la main.
FAQ
Questions fréquentes
Une seule base de code peut-elle vraiment couvrir Samsung et LG ?
Oui, avec rigueur. Tizen et webOS exécutent tous deux des applications web et la surface commune est large : la logique applicative, la mise en page et la navigation sont identiques sur les deux. Ce qui diffère, c'est la lecture : les appareils Samsung utilisent l'interface native AVPlay, LG un élément média standard piloté par Shaka Player. Isolez cela derrière une interface unique et le reste de l'application n'a jamais besoin de savoir sur quel téléviseur il s'exécute.
Pourquoi une application web plutôt qu'une boîte à outils native ?
Parce qu'aucune boîte à outils native ne couvre les deux. Tizen et webOS sont des plateformes pensées pour le web, et leurs voies natives divergent fortement et sont peu documentées. Une application web dotée d'une stratégie de rendu disciplinée est à la fois le chemin le plus court pour publier sur les deux et la chose la plus simple à maintenir en vie sur du matériel qui sera encore en service dans cinq ans.
Comment tester sur des téléviseurs que l'on ne possède pas ?
On achète l'appareil le plus ancien que l'on trouve, car c'est lui qui lâchera en premier. Un modèle récent masque tous vos problèmes de performance. Pour le reste : les émulateurs des constructeurs pour le fonctionnel, un navigateur de bureau bridé pour la mise en page, et un indicateur de performance intégré à l'application pour tout ce qui touche à la vitesse, puisque les appareils du commerce n'exposent aucun outil de développement.
Combien de temps dure la validation chez Samsung ?
Comptez en semaines plutôt qu'en jours, et prévoyez au moins un refus. La plupart des refus portent sur les ressources du magasin, la classification d'âge ou la formulation de la description, pas sur le logiciel. Générer le lot de ressources à partir de fichiers vectoriels et rédiger les textes du magasin avant de soumettre élimine l'essentiel de ce risque.
Pour aller plus loin
Technologies et services associés
Un projet en tête ?
Construisons ensemble quelque chose d'exceptionnel.
Dites-nous où vous en êtes et où vous voulez aller. Nous vous répondons sous un jour ouvré avec des prochaines étapes honnêtes, quitte à vous orienter ailleurs.