Hoe YouTube-afspelen op de achtergrond echt werkt op iOS
Een van de eerste dingen die mensen in talavo proberen, is hun telefoon vergrendelen terwijl er een video speelt — en lichtelijk verrast zijn wanneer het geluid blijft spelen. In standaard iOS Safari zou dat niet werken. Dit is wat er werkelijk onder de motorkap gebeurt, want de eerlijke versie is interessanter dan 'we hebben een instelling ingeschakeld'.
De beperking
talavo rendert pagina's in een WKWebView — dezelfde WebKit-engine die Safari gebruikt, en de enige browserengine die Apple toestaat op iOS. WebKit gaat bewust agressief om met de achtergrond: wanneer de webview de voorgrond verlaat, beperkt het systeem timers en schort het de mediapijplijn op. Dat is goed voor de batterij en slecht voor iemand die gewoon een podcastachtige video wil laten spelen met het scherm uit. YouTube reserveert ononderbroken achtergrondweergave voor Premium.
De pijplijn in leven houden
De truc is geen geheime vlag — het is weigeren de mediasessie te laten sterven. talavo onderschept de mediasessie van de pagina en houdt, wanneer het systeem het afspelen probeert te pauzeren bij het naar de achtergrond gaan, het onderliggende element 'draaiend' in plaats van WebKit het te laten afbreken. In de praktijk betekent dat de door het besturingssysteem afgedwongen pauze opvangen en het element meteen laten doortikken — met een bijna-nul afspeelsnelheid als het moet — zodat de audiopijplijn warm blijft en netjes hervat in plaats van te worden opgeruimd.
Bovendien koppelt talavo de standaard iOS-bedieningselementen voor nu-afspelend (vergrendelscherm, Bedieningspaneel, AirPods) aan de actieve video, zodat pauzeren, afspelen en spoelen werken als een native media-app in plaats van een webpagina die toevallig geluid heeft.
De zwevende minispeler
Achtergrond-audio is de helft van het verhaal. De andere helft is de zwevende minispeler: een picture-in-picture-venster dat de video losmaakt zodat hij blijft spelen terwijl je iets anders leest in een ander tabblad — geen Premium-abonnement vereist. Het is hetzelfde idee als systeem-PiP, beschikbaar voor elke video die talavo kan afspelen.
Het eerlijke voorbehoud
Dit is een oplossing bovenop WebKit, geen privé-API. Dat betekent twee dingen: het blijft binnen wat het webplatform biedt, en het kan worden beïnvloed wanneer YouTube de interne werking van zijn speler wijzigt. Wanneer dat gebeurt, lossen we het op — dat is het grootste deel van wat een puntrelease zoals die in ons changelog doet. Het voordeel van bouwen op de echte browserengine is dat de rest van het web normaal blijft werken terwijl dit draait.