Hvordan YouTube-bakgrunnsavspilling faktisk fungerer på iOS
En av de første tingene folk prøver i talavo er å låse telefonen mens en video spiller — og bli mildt overrasket over at lyden fortsetter. I vanlig iOS Safari ville den ikke gjort det. Her er hva som faktisk skjer under, for den ærlige versjonen er mer interessant enn «vi skrudde på en innstilling».
Begrensningen
talavo gjengir sider i en WKWebView — den samme WebKit-motoren Safari bruker, som er den eneste nettlesermotoren Apple tillater på iOS. WebKit er bevisst aggressiv med bakgrunnsbehandling: når nettvisningen forlater forgrunnen, begrenser systemet tidtakere og suspenderer mediepipelinen. Det er flott for batteriet og forferdelig for noen som bare vil ha en podkast-lignende video i gang med skjermen av. YouTube forbeholder uavbrutt bakgrunnsavspilling for Premium.
Holde pipelinen i live
Trikset er ikke et hemmelig flagg — det er å nekte å la medieøkten dø. talavo avskjærer sidens medieøkt og, når systemet prøver å pause avspillingen ved overgang til bakgrunnen, holder det underliggende elementet «i gang» i stedet for å la WebKit rive det ned. I praksis betyr det å fange opp pausen OS tvinger frem og umiddelbart holde elementet i gang — med nær-null avspillingshastighet om nødvendig — slik at lydpipelinen forblir varm og gjenopptas rent i stedet for å bli søppelsamlet.
På toppen av det kobler talavo standard iOS nå-spiller-kontroller (låseskjerm, Kontrollsenter, AirPods) til den aktive videoen, slik at pause, avspilling og spyling oppfører seg som en innebygd medieapp i stedet for en nettside som tilfeldigvis har lyd.
Den flytende minispilleren
Bakgrunns-lyd er halvparten av historien. Den andre halvparten er den flytende minispilleren: et bilde-i-bilde-vindu som løsriver videoen slik at den fortsetter å spille mens du leser noe annet i en annen fane — uten Premium-abonnement. Det er samme idé som system-PiP, tilgjengelig for enhver video talavo kan spille av.
Det ærlige forbeholdet
Dette er en omvei lagt oppå WebKit, ikke et privat API. Det betyr to ting: det holder seg innenfor det nettplattformen eksponerer, og det kan påvirkes når YouTube omorganiserer spillerens indre. Når det skjer, fikser vi det — det er mesteparten av hva en punktutgivelse som de i vår changelog gjør. Fordelen med å bygge på den ekte nettlesermotoren er at resten av nettet fortsetter å fungere normalt mens dette kjører.