Après le web, l’iPhone et l’iPad, nous avons ajouté une nouvelle corde à notre arc : l’application iGeneration est disponible aussi sur Apple TV. iGeneration TV est une manière supplémentaire et inédite d’accéder à nos contenus, et représente aussi pour nous un terrain de jeu intéressant.
Cette nouvelle application tvOS est tout d’abord le fruit d’une réflexion. Comment présenter nos actus sur le grand écran de la télévision ? Et tout d’abord, quel contenu devions-nous proposer ? En effet, nous aurions pu rester dans une pure logique télévisuelle, en présentant uniquement nos galeries photo et vidéo : du contenu éminemment visuel qui s’adapte naturellement à la télé.
Mais finalement, notre choix s’est porté sur l’intégralité de nos contenus : c’est plus intéressant pour vous, puisque vous accédez ainsi à toutes nos actus depuis le confort de votre canapé ! Cela vous permet d’avoir, dès l’écran d’accueil de l’Apple TV, une vision synthétique de l’actu du moment avant ou après un film ou une série TV, pendant le zapping, ou entre deux jeux. Et bien sûr, vous pouvez accéder aux commentaires.
On ne lit pas sur un téléviseur comme sur un iPhone ou un iPad, c'est pourquoi nous avons adapté l’interface de l’application en fonction de la taille de l'écran utilisé. Il en va logiquement de même pour le téléviseur : l’article se présente sous une forme volontairement sans chichis, avec une grande police et une interface très claire.
Sous le capot
Techniquement parlant, le développement d’iGeneration TV a été rendu possible en combinant plusieurs briques patiemment mises en place par Laurent, notre développeur émérite. La version 5.2 de l’application iOS comprend, en plus du passage à Swift 3, la réécriture de toute la partie qui gère le dialogue et le transfert des données depuis les serveurs. Avec les versions précédentes de l’app, il s’agissait d’un simple transfert de fichier généré via un script PHP.
Nous avons intégré une API de type REST, une architecture dont un des avantages en ce qui nous concerne est la latitude donnée à l’application pour s’interfacer directement avec la base de données des serveurs. La version 5.2 de l’application iOS embarque également un module indépendant, MGKit, qui intègre non seulement le code réseau, mais qui gère aussi la base de données des articles en local.
Ce module MGKit et cette nouvelle architecture ne sont pas immédiatement visibles par l’utilisateur, mais ils nous donnent beaucoup de souplesse : le widget iOS et l’extension Messages ont été développés grâce à ces outils, qui accélèrent aussi la mise au point d’autres fonctionnalités.
La logique était donc de voir s’il était possible d’exploiter cette boîte à outils pour développer une application pour Apple TV. Il est possible de concevoir des apps tvOS avec UIKit, le framework qui permet de construire des applications iOS ; Apple met toutefois en avant une technologie baptisée TVML (pour « TV Markup Langage » ). Il s’agit d’un moteur de rendu utilisant des templates au format XML, dont la logique est pilotée par du code JavaScript. Il s’agit plus d’un développement côté serveur, similaire à celui d’un site web.
Malgré les atouts de TVML, il était dommage de devoir réinventer la roue en ne réutilisant pas le code développé pour l’application iOS. Après une première session marathon lors d’un week-end pluvieux, le premier résultat s’avéra prometteur. L’idée de pouvoir profiter des news de MacGeneration durant son zapping télé était fun. Surtout, le développement ne posait pas de problèmes techniques insurmontables, bien qu’Apple ne facilite pas la tâche pour tvOS.
Il y a en effet une différence de taille sur cette plateforme : l’absence de WebKit, le moteur qui tourne sous le capot de Safari, et donc des WebView, ces « vues web » qui permettent d’afficher une page web dans iOS. Contourner cette limitation a été la principale difficulté technique qui s’est posée à nous durant le développement d’iGeneration TV.
Il a fallu déployer des trésors d’ingéniosité pour parvenir à nos fins ! Il n’était pas question de réécrire WebKit (!), mais plutôt de faire en sorte que la majorité des articles s’affiche correctement dans l’application pour Apple TV : celle-ci examine donc le HTML pour générer elle-même une mise en page des différents éléments, en faisant une utilisation intensive d’AutoLayout.
Nous aimerions au passage remercier les développeurs du framework Re:Lax, qui a permis d’implémenter le joli effet 3D lors de la sélection des articles, ainsi que Cédric, notre développeur web, pour l'intégration de l'API Rest.
Un premier pas
Tout cela a bien occupé Laurent pendant quelques semaines. Évidemment, il s’agit d’un premier pas. Des fonctions comme le mode nuit, l’icône alternative, les filtres, le moteur de recherche, etc. ne sont pas encore intégrées, soit parce qu’Apple ne l’autorise pas, soit parce qu’elles n’ont pas forcément de sens sur tvOS. Et pour le moment, l’application ne permet pas de poster des commentaires ; on y réfléchit, et pourquoi pas avec la reconnaissance vocale de la télécommande Siri !
On ne s'empêchera pas de proposer des fonctionnalités spécifiques à l'Apple TV : nous avons déjà quelques idées pour une prochaine version. N'hésitez pas d'ailleurs à nous dire ce que vous aimeriez que nous ajoutions à iGeneration TV !
Source : Merci à Laurent pour la technique