כיצד ניגון YouTube ברקע באמת עובד ב-iOS
אחד הדברים הראשונים שאנשים מנסים ב-talavo הוא לנעול את הטלפון בזמן שוידאו מתנגן — ולהיות מופתעים מעט כשהשמע ממשיך. ב-Safari הרגיל של iOS זה לא היה קורה. הנה מה שבאמת קורה מתחת, כי הגרסה הכנה מעניינת יותר מ'הפעלנו הגדרה'.
המגבלה
talavo מרנדר דפים ב-WKWebView — אותו מנוע WebKit שבו Safari משתמש, שהוא מנוע הדפדפן היחיד ש-Apple מאפשרת ב-iOS. WebKit אגרסיבי במכוון לגבי רקע: כשה-web view עוזב את החזית, המערכת מגבילה טיימרים ומשעה את צינור המדיה. זה נהדר לסוללה ונורא עבור מישהו שרוצה רק שוידאו בסגנון פודקאסט ימשיך לפעול עם המסך כבוי. YouTube עצמו שומר ניגון ברקע ללא הפרעות ל-Premium.
שמירת הצינור פעיל
הטריק אינו דגל סודי — זו סירוב לתת לסשן המדיה למות. talavo מיירט את סשן המדיה של הדף, וכאשר המערכת מנסה להשהות ניגון במעבר לרקע, שומר על האלמנט הבסיסי 'פועל' במקום לתת ל-WebKit לפרק אותו. בפועל זה אומר לתפוס את ההשהיה ש-OS מכריח ולשמור את האלמנט מתקתק מיד — בקצב ניגון קרוב לאפס אם צריך — כדי שצינור השמע יישאר חמים ויחודש בצורה נקייה במקום להיאסף לאשפה.
מעבר לכך, talavo מחבר את בקרות הניגון הסטנדרטיות של iOS (מסך נעילה, מרכז בקרה, AirPods) לוידאו הפעיל, כך שהשהיה, ניגון וגלילה מתנהגים כמו אפליקציית מדיה נייטיב ולא כדף אינטרנט שיש בו שמע.
נגן המיני הצף
שמע ברקע הוא חצי הסיפור. החצי השני הוא נגן המיני הצף: חלון תמונה-בתוך-תמונה שמנתק את הוידאו כדי שימשיך לרוץ בזמן שאתם קוראים משהו אחר בטאב אחר — ללא מנוי Premium. זה אותו רעיון כמו PiP של המערכת, זמין לכל וידאו ש-talavo יכול להפעיל.
ההסתייגות הכנה
זהו פתרון עקיף שמוטמן מעל WebKit, לא API פרטי. זה אומר שני דברים: הוא נשאר בגבולות מה שפלטפורמת הרשת חושפת, והוא עלול להיות מושפע כאשר YouTube מסדר מחדש את הפנים של הנגן שלו. כשזה קורה אנחנו מתקנים — זה רוב מה שגרסת נקודה כמו אלה בchangelog שלנו עושה. היתרון של בנייה על מנוע הדפדפן האמיתי הוא שהשאר של הרשת ממשיך לעבוד כרגיל בזמן שזה רץ.