Jak naprawdę działa odtwarzanie YouTube w tle na iOS
Jedną z pierwszych rzeczy, które ludzie próbują w talavo, jest zablokowanie ekranu podczas odtwarzania wideo — i lekkie zaskoczenie, gdy dźwięk gra dalej. W standardowym Safari na iOS tak by się nie stało. Oto co tak naprawdę dzieje się pod spodem, bo uczciwa wersja jest ciekawsza niż „włączyliśmy pewne ustawienie“.
Ograniczenie
talavo renderuje strony w WKWebView — tym samym silniku WebKit, którego używa Safari, będącym jedynym silnikiem przeglądarki dozwolonym przez Apple na iOS. WebKit jest celowo agresywny w kwestii tła: gdy widok webowy opuszcza pierwszy plan, system ogranicza liczniki czasu i zawiesza potok mediów. To świetne dla baterii i fatalne dla kogoś, kto chce, by wideo w stylu podcastu grało dalej przy wyłączonym ekranie. YouTube sam rezerwuje nieprzerwane odtwarzanie w tle dla Premium.
Utrzymanie potoku przy życiu
Sztuczka to nie jest żadna ukryta flaga — to odmowa dopuszczenia do śmierci sesji mediów. talavo przechwytuje sesję mediów strony i gdy system próbuje wstrzymać odtwarzanie przy przejściu w tło, utrzymuje podstawowy element „w ruchu“ zamiast pozwolić WebKit go zburzyć. W praktyce oznacza to przechwytywanie wymuszanej przez system pauzy i natychmiastowe utrzymywanie elementu w tiku — w razie potrzeby z niemal zerową prędkością odtwarzania — aby potok audio pozostał ciepły i wznawiał się czysto, zamiast być usuwany przez garbage collector.
Dodatkowo talavo podłącza standardowe kontrolki odtwarzania iOS (ekran blokady, Centrum sterowania, AirPods) do aktywnego wideo, dzięki czemu pauza, odtwarzanie i przewijanie zachowują się jak natywna aplikacja mediów, a nie strona internetowa, która przy okazji ma dźwięk.
Pływający mini-odtwarzacz
Dźwięk w tle to połowa historii. Drugą połową jest pływający mini-odtwarzacz: okno obraz w obrazie, które odłącza wideo, dzięki czemu gra dalej, gdy czytasz coś innego w innej karcie — bez subskrypcji Premium. To ten sam pomysł co systemowy PiP, dostępny dla każdego wideo, które talavo potrafi odtworzyć.
Uczciwe zastrzeżenie
To obejście zbudowane na WebKit, nie prywatne API. Oznacza to dwie rzeczy: pozostaje w granicach tego, co udostępnia platforma webowa, i może być dotknięte, gdy YouTube przetasuje swój wewnętrzny odtwarzacz. Gdy to się zdarzy, naprawiamy to — to większość tego, co robi aktualizacja punktowa jak te w naszym changelogu. Zaletą budowania na prawdziwym silniku przeglądarki jest to, że reszta internetu działa normalnie, gdy to wszystko pracuje.