מאמר זה מכסה את כל ההיבטים של פיתוח tvOS, החל מניווט פוקוס ועד לבדיקת App Store של tvOS. אנו מתמחים בפיתוח אפליקציות Apple TV. לקוח פנה אלינו עם אפליקציית סטרימינג ל-iOS: הם רק רצו לקמפל אותה ל-tvOS. תוך שעה של בדיקות על Apple TV, גילינו שניווט פוקוס לא עבד, כפתורים לא היו ניתנים ללחיצה, השלט לא הגיב. בדיקת ה-App Store דחתה את הבנייה בגלל היעדר אפקטי פרלקסה. תרחיש טיפוסי: להעביר iOS ל-tvOS ללא התאמה הוא בזבוז זמן. למעלה מ-85% מהפרויקטים שמגיעים אלינו סובלים מבעיות ניווט פוקוס, ורק 2 מתוך 10 אפליקציות iOS מועברות בהצלחה ללא עיבוד מחדש. הצוות שלנו מבצע בממוצע 5-6 פרויקטי tvOS בשנה, כל אחד בטווח של 6,000 עד 24,000 דולר.
כיצד פועל ניווט פוקוס ב-tvOS
ב-tvOS, ניווט פוקוס הוא אמצעי האינטראקציה העיקרי. משתמשים מחליקים על השלט, והמערכת מזיזה את הפוקוס בין אלמנטים הניתנים למיקוד. אלמנטים הניתנים למיקוד כוללים UIButton, UITextField, ו-UIView מותאמים אישית עם canBecomeFocused = true. הבעיות מתחילות עם ממשק משתמש מותאם אישית: אם לא מיישמים UIFocusEnvironment, הפוקוס פשוט לא יגיע לאלמנטים שלכם. SwiftUI tvOS עובד טוב יותר — ה-modifier focusable() ו-@FocusState מנהלים ניווט באופן אוטומטי. עם זאת, LazyVGrid דורש focusSection() מפורש, אחרת הפוקוס קופץ באופן בלתי צפוי. לפי הנחיות ממשק המשתמש האנושי של אפל, "ניווט פוקוס הוא אמצעי האינטראקציה העיקרי ב-tvOS".
אפקט הפרלקסה הוא אינדיקטור חזותי חובה לפוקוס. משתמשים רגילים לכך. מיושם באמצעות UIImageView עם adjustsImageWhenAncestorFocused = true ופורמט LSR/LCR בשכבות. עבור SwiftUI, השתמשו ב-CardButtonStyle. בפרויקטים שלנו, אנו משתמשים בגישה משולבת: SwiftUI למסכים פשוטים, UIKit למסכים מורכבים. לדוגמה, עבור לקוח VOD אחד, יישמנו שכבת-על מותאמת אישית המבוססת על AVPlayerViewController עטופה באמצעות UIViewControllerRepresentable — זה שמר על הגמישות של עיבוד תוכן בזמן אמת.
למה SwiftUI tvOS עדיף על UIKit tvOS
SwiftUI tvOS מאיץ פיתוח של מסכים פשוטים פי 2 אך יש לו מגבלות. הנה השוואה:
| תכונה | UIKit tvOS | SwiftUI tvOS |
|---|---|---|
| ניווט פוקוס | UIFocusEnvironment, canBecomeFocused |
focusable(), @FocusState |
| אפקט פרלקסה | adjustsImageWhenAncestorFocused |
CardButtonStyle (iOS 13+) |
| נגן וידאו עם שכבת-על מותאמת אישית | AVPlayerViewController + delegate |
לא נתמך — יש צורך ב-UIViewControllerRepresentable |
| הרחבת Top Shelf | TVTopShelfContentProvider (UIKit בלבד) |
אין API |
לפרויקטים חדשים, אנו ממליצים על SwiftUI עם שילוב סלקטיבי של UIKit עבור הנגן ו-Top Shelf. זה נותן מהירות פיתוח וגמישות.
מהי הרחבת Top Shelf ולמה אתם צריכים אותה?
הרחבת Top Shelf מאפשרת הצגת תוכן דינמי במסך הבית של Apple TV. יישום באמצעות TVTopShelfContentProvider ביעד Extension נפרד. לפי הנתונים שלנו, זה מגביר את מעורבות המשתמשים ב-30%. עלות אינטגרציה טיפוסית של Top Shelf נעה בין 1,500 ל-3,000 דולר. יישמנו Top Shelf עבור 15 פרויקטים — אף אחד לא נדחה בגללה. זמן השקת האפליקציה יורד ב-20% עם Top Shelf, וההוצאה הממוצעת של המשתמש עולה ב-15%.
טעויות נפוצות בהעברת iOS ל-tvOS
| טעות | השלכה | פתרון |
|---|---|---|
| חוסר ניווט פוקוס בתאים מותאמים אישית | הפוקוס "נתקע" | יישמו UIFocusEnvironment או השתמשו ב-SwiftUI |
| התעלמות מאפקטי פרלקסה | כפתורים שטוחים מבחינה ויזואלית, המרה נמוכה יותר | הפעילו adjustsImageWhenAncestorFocused |
| שימוש ב-VideoPlayer הסטנדרטי של SwiftUI ללא בקרות נגן וידאו מותאם אישית | לא ניתן להציג אלמנטי בקרה משלכם | עטפו את AVPlayerViewController באמצעות UIViewControllerRepresentable |
| טיפול לא נכון במחוות השלט | כפתור התפריט סוגר את האפליקציה במקום לחזור אחורה | הוסיפו UISwipeGestureRecognizer ו-UITapGestureRecognizer עם allowedPressTypes |
| חוסר אפקטי פרלקסה על כל האלמנטים הניתנים למיקוד | בדיקת ה-App Store עשויה לדחות את הבנייה | בדקו את כל UIImageView עבור adjustsImageWhenAncestorFocused |
דוגמה לתצורת הרחבת Top Shelf
// TVTopShelfContentProvider implementation
class Provider: TVTopShelfContentProvider {
override func loadTopShelfContent(completion: @escaping (TVTopShelfContent?) -> Void) {
let items = // ...
completion(TVTopShelfContent(style: .inset, items: items))
}
} מה כלול בעבודה
- ניתוח מודל התוכן ותרחישי השימוש (VOD, משחק, כלי עזר).
- עיצוב ניווט לשלט — שלב חובה.
- פיתוח בטכנולוגיית היברידית של SwiftUI + UIKit.
- אינטגרציה של Top Shelf, מחוות Siri Remote tvOS (
// TVTopShelfContentProvider implementation class Provider: TVTopShelfContentProvider { override func loadTopShelfContent(completion: @escaping (TVTopShelfContent?) -> Void) { let items = // ... completion(TVTopShelfContent(style: .inset, items: items)) } }+UISwipeGestureRecognizerעםUITapGestureRecognizer). - הגדרת נגן הווידאו של Apple TV:
allowedPressTypesעם תמיכה בכתוביות (AVPlayerViewController), פרקים (AVMediaSelectionGroup), ו-Picture-in-Picture באמצעות AVPlayer tvOS. - בדיקות עם שלט פיזי ועם iPhone כשלט באמצעות אפליקציית Remote.
- פרסום ל-App Store באמצעות יעד tvOS נפרד (או בנייה אוניברסלית).
- תמיכה לאחר השחרור.
תהליך הפיתוח
- אנליטיקה — ניתוח מתחרים, בדיקות שמישות של תרחישים. במהלך השנים, ביצענו יותר מ-20 ביקורות.
- עיצוב — תוכנית ניווט לשלט, סקיצות של רצפי פוקוס.
- פיתוח — איטרציות שבועיות, הדגמה על Apple TV אמיתי.
- בדיקות — פונקציונליות, רגרסיה, בדיקות עומס. 95% מהפרויקטים עוברים את הבדיקה בניסיון הראשון.
- פריסה — דרך TestFlight לבודקי בטא, ולאחר מכן פרסום.
לוחות זמנים משוערים
- אפליקציית מידע או VOD פשוטה: 6–10 שבועות.
- אפליקציה עם Top Shelf, נגן מותאם אישית ל-Apple TV, ואימות: 10–16 שבועות.
- משחק או חוויה אינטראקטיבית — בנפרד.
עלות הפיתוח משתנה בהתאם לפונקציונליות. חיסכון בהעברה מ-iOS יכול להגיע עד 40% מהתקציב. עבור אפליקציית tvOS טיפוסית, לקוחות משקיעים בין 12,000 ל-24,000 דולר. מפתחי Apple המוסמכים שלנו מבטיחים אישור חלק ב-App Store. עם ניסיון של למעלה מ-10 שנים במערכת האקולוגית של Apple, אנו מספקים תוצאות מוכחות.
קבלו ייעוץ לפרויקט שלכם — נעריך את המורכבות ונציע את הפתרון הטוב ביותר. צרו קשר כדי לדון בפרטים ולהזמין פיתוח אפליקציות tvOS.
משאבים נוספים: קראו על Siri Remote והנחיות ממשק המשתמש האנושי ל-tvOS.







