Kako reprodukcija YouTubea u pozadini zapravo funkcionira na iOS-u
Jedna od prvih stvari koje ljudi isprobaju u talavo je zaključavanje telefona dok se video reproducira — i blago iznenađenje kada audio nastavlja. Na standardnom iOS Safari to ne bi radilo. Evo šta se zapravo dešava ispod, jer je iskrena verzija zanimljivija od „uključili smo jednu postavku“.
Ograničenje
talavo prikazuje stranice u WKWebView — istom WebKit motoru koji koristi Safari, koji je jedini motor preglednika koji Apple dopušta na iOS-u. WebKit je namjerno agresivan oko pozadine: kada web view napusti prednji plan, sistem usporava tajmere i suspendira medijsku liniju. To je odlično za bateriju i grozno za nekoga ko jednostavno želi da video nalik podcastu nastavlja svirati s isključenim ekranom. YouTube sam po sebi zadržava neprekinutu reprodukciju u pozadini za Premium.
Održavanje linije aktivnom
Trik nije tajna zastavica — to je odbijanje da medijska sesija umre. talavo presreće medijsku sesiju stranice i, kada sistem pokuša pauzirati reprodukciju pri prelasku u pozadinu, drži temeljni element „u toku“ umjesto da dopusti WebKitu da ga razgradi. U praksi to znači hvatanje pauze koju OS nameće i odmah držanje elementa u toku — po potrebi pri gotovo nultoj brzini reprodukcije — tako da audio linija ostaje topla i nastavlja čisto umjesto da bude sakupljena kao otpad.
Povrh toga, talavo povezuje standardne iOS kontrole za reproduciranje (zaključani ekran, Control Center, AirPods) s aktivnim videom, tako da se pauza, reprodukcija i premotavanje ponašaju poput nativne medijske aplikacije, a ne web stranice koja slučajno ima zvuk.
Plutajući mini-player
Pozadinski audio je samo pola priče. Druga polovina je plutajući mini-player: prozor slika-u-slici koji odvaja video tako da nastavlja svirati dok čitate nešto drugo u drugom tabu — nije potrebna Premium pretplata. Ista je ideja kao sistemski PiP, dostupna za bilo koji video koji talavo može reproducirati.
Iskreno upozorenje
Ovo je zaobilazno rješenje naslojeno na WebKit, ne privatni API. To znači dvije stvari: ostaje unutar onoga što web platforma izlaže, i može biti zahvaćeno kada YouTube preuređuje unutarnje dijelove svog playera. Kada se to dogodi, mi to popravljamo — to je većina onoga što radi tačkasto izdanje poput onih u našem changelogu. Prednost gradnje na stvarnom motoru preglednika je da ostatak weba nastavlja normalno funkcionirati dok ovo radi.