iOS पर YouTube का बैकग्राउंड प्लेबैक वास्तव में कैसे काम करता है
talavo में लोग जो पहली चीज़ें आज़माते हैं उनमें से एक है वीडियो चलते समय फ़ोन लॉक करना — और हल्की हैरानी महसूस करना जब ऑडियो चलता रहता है। स्टॉक iOS Safari में यह नहीं होता। यहाँ वास्तव में क्या हो रहा है, क्योंकि ईमानदार संस्करण “हमने एक सेटिंग चालू की” से अधिक दिलचस्प है।
बाधा
talavo पेजों को WKWebView में रेंडर करता है — वही WebKit इंजन जो Safari उपयोग करता है, जो iOS पर Apple द्वारा अनुमत एकमात्र ब्राउज़र इंजन है। WebKit जानबूझकर बैकग्राउंडिंग के बारे में आक्रामक है: जब वेब व्यू फोरग्राउंड छोड़ता है, तो सिस्टम टाइमर को थ्रॉटल करता है और मीडिया पाइपलाइन को निलंबित करता है। यह बैटरी के लिए अच्छा है और उस व्यक्ति के लिए भयानक है जो बस स्क्रीन बंद होने पर एक पॉडकास्ट-शैली का वीडियो चलाना चाहता है। YouTube स्वयं निर्बाध बैकग्राउंड प्लेबैक को Premium के लिए आरक्षित रखता है।
पाइपलाइन को जीवित रखना
यह तरकीब कोई गुप्त फ्लैग नहीं है — यह मीडिया सेशन को मरने देने से इनकार करना है। talavo पेज के मीडिया सेशन को इंटरसेप्ट करता है और, जब सिस्टम बैकग्राउंडिंग पर प्लेबैक को रोकने की कोशिश करता है, तो अंतर्निहित एलिमेंट को WebKit द्वारा नष्ट किए जाने की बजाय “चलता” रखता है। व्यवहार में इसका मतलब है OS द्वारा बाध्य पॉज़ को पकड़ना और तुरंत एलिमेंट को टिकते रहना — यदि आवश्यक हो तो लगभग-शून्य प्लेबैक दर पर — ताकि ऑडियो पाइपलाइन गर्म रहे और कचरे में जाने की बजाय साफ़ तरीके से फिर से शुरू हो।
इसके अलावा, talavo मानक iOS नाउ-प्लेइंग नियंत्रणों (लॉक स्क्रीन, कंट्रोल सेंटर, AirPods) को सक्रिय वीडियो से जोड़ता है, ताकि पॉज़, प्ले और स्क्रब एक नेटिव मीडिया ऐप की तरह व्यवहार करें न कि एक वेब पेज की तरह जिसमें संयोग से आवाज़ है।
फ़्लोटिंग मिनी-प्लेयर
बैकग्राउंड ऑडियो आधी कहानी है। दूसरी आधी फ़्लोटिंग मिनी-प्लेयर है: एक पिक्चर-इन-पिक्चर विंडो जो वीडियो को अलग कर देती है ताकि वह तब भी चलता रहे जब आप किसी अन्य टैब में कुछ और पढ़ रहे हों — बिना Premium सदस्यता के। यह सिस्टम PiP जैसा ही विचार है, talavo जो भी वीडियो चला सकता है उसके लिए उपलब्ध।
ईमानदार चेतावनी
यह WebKit के ऊपर बनाई गई एक वर्कअराउंड है, कोई प्राइवेट API नहीं। इसका मतलब दो बातें हैं: यह वेब प्लेटफ़ॉर्म द्वारा उजागर की गई चीज़ों के भीतर रहती है, और यह प्रभावित हो सकती है जब YouTube अपने प्लेयर इंटर्नल को बदलता है। जब ऐसा होता है हम इसे ठीक करते हैं — यही वह ज़्यादातर है जो हमारे changelog जैसे पॉइंट रिलीज़ कर रहा है। असली ब्राउज़र इंजन पर निर्माण का फायदा यह है कि बाकी वेब सामान्य रूप से काम करता रहता है जबकि यह चल रहा है।