tvOS: Focus Engine bilan Apple TV uchun ishlab chiqish

Muallif: IT Sectr Nashr etilgan: 2026-02-07 O'qish vaqti: 11 daq

tvOS — Apple TV uchun Apple operatsion tizimi, birinchi marta 2015-yilda 4-avlod Apple TV bilan chiqarilgan. tvOS uchun ilova ishlab chiqish SwiftUI va TVMLKit yordamida Swift-da amalga oshiriladi. iOS-dan asosiy farq — sensor oʻrniga Siri Remote orqali fokusni boshqarish. Apple maʼlumotlariga koʻra, tvOS butun dunyo boʻylab 100 milliondan ortiq faol qurilmalarda oʻrnatilgan.

Asosiy fikrlar

  • tvOS — XNU yadrosida sensor oʻrniga Focus Engine bilan TV set-top qutilari uchun Apple OT
  • Focus Engine — Siri Remote orqali elementlar oʻrtasida fokus boshqaruv tizimi
  • SwiftUI va TVMLKit — ikki ishlab chiqish yondashuvi: mahalliy va JavaScript shablonlari
  • Top Shelf — Apple TV bosh ekranida dinamik kontent
  • Ilova hajmi qatʼiy 4 GB bilan cheklangan, tavsiya etilgan 500 MB dan oshmasligi

tvOS nima?

tvOS — Apple TV set-top qutilari uchun Apple operatsion tizimi, iOS bilan bir xil Darwin XNU yadrosiga asoslangan. Birinchi marta 2015-yil 30-oktabrda 4-avlod Apple TV bilan chiqarilgan. tvOS eski Apple TV Software (iOS asosidagi, App Store va SDKsiz) oʻrnini egalladi. Tizim 4K HDR (Dolby Vision) gacha rezolyutsiya va Dolby Atmos ovoz bilan televizorda ishlash uchun optimallashtirilgan.

Apple (WWDC 2025) maʼlumotlariga koʻra, tvOS Apple TV HD (2015), Apple TV 4K (2017, 2021, 2022) da oʻrnatilgan va AirPlay orqali baʼzi Smart TV modellariga kiritilgan. Apple TV A8 (HD), A10X Fusion (1-avlod 4K), A12 Bionic (2-avlod 4K) va A15 Bionic (3-avlod 4K) chiplaridan foydalanadi. Barcha modellar tvOS 17 ni qoʻllab-quvvatlaydi. tvOS da kamera, mikrofon (pultdan tashqari), sensorli ekran yoki GPS yoʻq.

tvOS ning asosiy xususiyati — Focus Engine, u sensor boshqaruvini fokus navigatsiyasi bilan almashtiradi. Foydalanuvchi Siri Remote yordamida UI elementlari oʻrtasida tanlovni harakatlantiradi. Dasturchilar Swift/SwiftUI (mahalliy) yoki JavaScript/TVML (Netflix, Hulu kabi media ilovalari) da ilovalar yaratadi.

tvOS versiyalari tarixi

tvOS 9 (2015) — SDK va App Store bilan birinchi versiya. tvOS 10 (2016) — kabel obunalari uchun Yagona Kirish (SSO). tvOS 11 (2017) — Amazon Prime Video qoʻllab-quvvatlashi va avtomatik rejim. tvOS 12 (2018) — Dolby Atmos. tvOS 13 (2019) — koʻp foydalanuvchi rejimi. tvOS 17 (2023) — FaceTime, VPN, HDMI orqali audio profillar.

tvOS versiyasiYilAsosiy yangilik
tvOS 92015App Store, SDK, Siri Remote
tvOS 102016Yagona Kirish (SSO), Live Tune-In
tvOS 112017Amazon Prime, avtomatik rejim
tvOS 122018Dolby Atmos, iPhone bilan parol
tvOS 132019Koʻp foydalanuvchi, TV da Boshqaruv Markazi
tvOS 172023FaceTime, VPN, Siri Remote ni topish

tvOS arxitekturasi va iOS dan farqlar

tvOS arxitekturasi iOS bilan bir xil stackka asoslangan: XNU yadrosi, Core Services tizim xizmatlari, Media qatlami va Cocoa Touch foydalanuvchi qatlami. Biroq, TV platformasining oʻziga xosliklari bilan bogʻliq muhim farqlar mavjud.

Uskuna cheklovlari

3-avlod Apple TV 4K 6 CPU yadrosi (2 samaradorlik, 4 tejamkorlik) va 5 yadroli GPU bilan A15 Bionic dan foydalanadi. RAM — 4 GB (64 GB dan ichki SSD xotira). Tizim klassik maʼnoda doimiy mahalliy xotiraga ega emas: joy kam boʻlganda tvOS barcha ilova maʼlumotlarini oʻchirishi mumkin (purgeable). Dasturchi holatni saqlash uchun iCloud Key-Value Storage yoki CloudKit dan foydalanishi kerak.

TVMLKit va TVJS

TVMLKit — tvOS ga xos freymvork boʻlib, JavaScript va TVML (Apple-ga xos XML oʻxshash til) da interfeyslar yaratish imkonini beradi. TVMLKit serverdan JSON/XML yuklaydi va mahalliy UI komponentlarini koʻrsatadi. Bu striming xizmatlari uchun asosiy texnologiya: Netflix, Hulu, Amazon Prime Video TVMLKit dan foydalanadi. TVJS — izolyatsiyalangan kontekstda ishlaydigan JavaScript muhiti.

Doimiy xotiraning yoʻqligi

tvOS disk maydonini avtomatik boshqaradi: joy kam boʻlganda, tizim keshni, yuklab olingan resurslarni va hatto ilovaning oʻzini oʻchirishi mumkin (belgini saqlab). Qayta ochganda, ilova oʻz holatini tiklab olishi kerak. iCloud NSUbiquitousKeyValueStore sozlamalar uchun yagona kafolatlangan doimiy xotira (ilova uchun 1 MB gacha).

swift
import Foundation

// // tvOS da holatni saqlash va tiklash
final class StateManager {

    private let store = NSUbiquitousKeyValueStore.default
    private let coder = JSONEncoder()
    private let decoder = JSONDecoder()

    // Tomosha qilish jarayoni saqlanmoqda
    func saveProgress<T: Codable>(_ value: T, for key: String) {
        if let data = try? coder.encode(value) {
            store.set(data, for: key)
            store.synchronize()
        }
    }

    // Kesh oʻchirilgandan keyin holat tiklanmoqda
    func restoreProgress<T: Codable>(_ type: T.Type, for key: String) -> T? {
        guard let data = store.data(for: key) else { return nil }
        return try? decoder.decode(type, from: data)
    }

    // Boshqa qurilmadagi oʻzgarish bildirishnomasini boshqarish
    init() {
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(ubiquitousKeyValueStoreDidChange),
            name: NSUbiquitousKeyValueStore.didChangeExternallyNotification,
            object: store
        )
    }

    @objc
    private func ubiquitousKeyValueStoreDidChange(_ notification: Notification) {
        print("Boshqa qurilmada maʼlumotlar oʻzgartirildi")
    }
}

StateManager tvOS da ilova holatini saqlash uchun NSUbiquitousKeyValueStore dan foydalanadi. Mahalliy xotira tizim tomonidan tozalanishi mumkinligi sababli, faqat iCloud maʼlumotlarning doimiyligini kafolatlaydi. store.synchronize() darhol serverga maʼlumot yuboradi, didChangeExternallyNotification esa foydalanuvchining boshqa qurilmalaridagi oʻzgarishlar haqida ilovaga xabar beradi.

Focus Engine: navigatsiya va fokus

Focus Engine — sensor hodisalarini fokus navigatsiyasi bilan almashtiradigan tvOS ning asosiy mexanizmi. Foydalanuvchi Siri Remote (sensor sirt yoki tugmalar) yordamida UI elementlari oʻrtasida tanlovni harakatlantiradi. Tizim masofa va harakat yoʻnalishiga qarab avtomatik ravishda keyingi fokus elementini hisoblab chiqadi.

UIFocusEnvironment va fokus iyerarxiyasi

Fokus qabul qila oladigan har bir UI elementi UIFocusEnvironment protokolini amalga oshiradi. UIKit element geometriyasiga qarab navigatsiya tartibini avtomatik aniqlaydi. Dasturchi preferredFocusEnvironments orqali afzal fokusni bekor qilishi, bola focusEnvironment massivini belgilashi va UIFocusHeading (up, down, left, right) orqali harakatni boshqarishi mumkin. UIFocusGuide murakkab layoutlar uchun maxsus marshrutlarni belgilash imkonini beradi.

UIFocusEffect va parallaks

tvOS fokuslangan elementga avtomatik UIFocusEffect qoʻshadi: soya, yoritish va parallaks effekti (pultni egishda siljish). Dasturchi effektni focusedValue orqali oʻchirishi yoki UIFocusEffect.transform orqali sozlashi mumkin. SwiftUI da parallaks .hoverEffect(.highlight) modifikatori bilan qoʻshiladi.

swift
import SwiftUI

// // Maxsus fokusli tvOS komponenti
struct MovieCardView: View {
    let movie: Movie
    @State private var isFocused = false
    @Environment(\.isFocused) var envFocused

    var body: some View {
        VStack(spacing: 8) {
            AsyncImage(url: movie.posterURL) { phase in
                if let image = phase.image {
                    image
                        .resizable()
                        .aspectRatio(contentMode: .fill)
                        .frame(width: 320, height: 180)
                        .cornerRadius(8)
                        .overlay(
                            RoundedRectangle(cornerRadius: 8)
                                .stroke(isFocused ? Color.blue : Color.clear, lineWidth: 3)
                        )
                        .scaleEffect(isFocused ? 1.08 : 1.0)
                }
            }

            Text(movie.title)
                .font(.caption)
                .lineLimit(2)
                .foregroundStyle(isFocused ? .white : .gray)
        }
        .onHover { hovering in
            withAnimation(.spring(response: 0.35)) {
                isFocused = hovering
            }
        }
        .onPlayPauseCommand {
            // Pultda Play/Pause tugmasini boshqarish
            startPlayback()
        }
        .focusable()
        .focusEffect { phase in
            // Maxsus fokus effekti
            phase == .active ?
                AnyView(self.scaleEffect(1.08)) :
                AnyView(self.scaleEffect(1.0))
        }
    }

    private func startPlayback() {
        print("Ijro etilmoqda: \(movie.title)")
    }
}

// // Film panjarali bosh ekran
struct MovieGridScreen: View {
    let movies: [Movie]

    var body: some View {
        ScrollView {
            LazyVGrid(columns: [GridItem(.adaptive(minimum: 320, maximum: 400))], spacing: 24) {
                ForEach(movies) { movie in
                    MovieCardView(movie: movie)
                }
            }
            .padding(60)
        }
        .focusSection() // Navigatsiya uchun guruhlash
    }
}

MovieCardView SwiftUI da Focus Engine ni namoyish etadi: .focusable() modifikatori elementni fokuslanadigan qiladi, .onHover holat oʻzgarishlarini kuzatadi, .focusEffect maxsus fokus animatsiyasiga imkon beradi. .onPlayPauseCommand Siri Remote dagi Play/Pause tugmasini bosishni boshqaradi. focusSection tsiklik navigatsiya uchun panjarani guruhlaydi.

Siri Remote: imo-ishoralar va tugmalar

Ikkinchi avlod Siri Remote (2021) sensor sirt, 5 tugma va mikrofonga ega. tvOS imo-ishoralarni qoʻllab-quvvatlaydi: surish (navigatsiya), tegish (tanlash), ikki marta tegish (markazlashtirish), chimdilash-zoom (rasmlar), uzoq bosish (kontekst menyu). UIPress turlari .select, .playPause, .menu, .upArrow, .downArrow, .leftArrow, .rightArrow — oldindan belgilangan bosish turlari. Pult mikrofoni Siri va ovozli qidiruv uchun ishlatiladi.

Top Shelf va ilova ekrani

Top Shelf — Apple TV bosh ekranidagi maydon boʻlib, ilova yuqori qatorda boʻlganda dinamik kontentni koʻrsatadi. tvOS 17 da Top Shelf maxsus fon va interaktiv elementlar bilan 8 ta vidjetgacha qoʻllab-quvvatlaydi. Dasturchi kontent taqdim etish uchun TVTopShelfProvider ni amalga oshiradi.

Top Shelf uslublari

Uchta Top Shelf uslubi mavjud: Sectioned — kategoriyalangan roʻyxat (janr boʻyicha seriallar), Inset — batafsil tavsifli markaziy element (tavsiya etilgan film), Photo — rasm panjarasi (foto albomlar). Tizim watchOS ga oʻxshab BGTaskScheduler orqali Top Shelf ni fonda yangilaydi. Taʼminotchi kontentni tez qaytarishi kerak — tvOS maʼlumotlarni 24 soat keshlaydi.

Ilova ekrani

tvOS bosh ekrani Top Shelf qatori va ilova panjarasidan iborat. Foydalanuvchilar belgilarni qayta tartiblashi va papkalar yaratishi mumkin. Resurslar kam boʻlganda tvOS xotiradan ilovalarni avtomatik tushiradi, shuning uchun dasturchi UISceneDidDisconnectNotification ni toʻgʻri boshqarishi va qayta ishga tushirishda holatni tiklab olishi kerak.

Top Shelf uslubiFormatQachon ishlatish
SectionedSarlavhalar va elementlar bilan boʻlimlarSeriallar, podkastlar, pleylistlar
InsetTavsifli bitta katta elementKun filmi, eksklyuziv
PhotoSarlavhasiz rasm panjarasiFoto albomlar, galereyalar
TabAlmashtiriladigan tablarTur boʻyicha sport, mavzu boʻyicha yangiliklar

Apple TV uchun SwiftUI

SwiftUI tvOS 13 dan boshlab tvOS da toʻliq qoʻllab-quvvatlanadi. Apple barcha yangi loyihalar uchun SwiftUI ni tavsiya qiladi. Xuddi shu SwiftUI kodi Focus Engine uchun minimal moslashuvlar bilan iOS, iPadOS, macOS va tvOS da ishlaydi. tvOS uchun SwiftUI .focusable(), .focusSection(), .onPlayPauseCommand va .onExitCommand modifikatorlarini taqdim etadi.

tvOS ga moslashish

iOS ilovasini tvOS ga koʻchirishda: TabView ni fokus navigatsiyali NavigationView bilan almashtiring, shrift oʻlchamlarini oshiring (sarlavhalar uchun kamida 30pt, matn uchun 22pt), chekkalardan kamida 40pt masofa qoʻshing (TV larda xavfsiz zona). tvOS matn maydonli UIAlertController, UIWebView va MFMailComposeViewController ni qoʻllab-quvvatlamaydi.

iOS komponentitvOS ekvivalentiEslatma
UISliderUIProgressView + tugmalarSlider qoʻllab-quvvatlanmaydi
UIPickerViewFokusli jadvalPicker roʻyxat bilan almashtirildi
UITextFieldUIAlertController (faqat oʻqish)Siri orqali matn kiritish
UIActionSheetUIAlertControllerQoʻllab-quvvatlanadi
UIWebViewQoʻllab-quvvatlanmaydiWKWebView dan foydalaning
MFMailComposeQoʻllab-quvvatlanmaydimailto: URL oching

Dizayn tavsiyalari

tvOS uchun Apple HIG: minimal sensor maydoni oʻlchami 60×60 nuqta, matn 3 metrdan oʻqilishi mumkin (matn uchun shrift oʻlchami 22pt dan kam boʻlmasligi kerak), matn kontrasti 4.5:1, qorongʻi fon (yorugʻ fon OLED TV larda porlashni keltirib chiqaradi), barcha elementlar murakkab imo-ishoralarsiz foydalanish mumkin. Rezolyutsiya: Apple TV 4K 60 FPS da 3840×2160 (4K) yoki 1920×1080 (HD) chiqaradi. Barcha rasmlar @2x (1080p uchun) va @4x (4K uchun) boʻlishi kerak.

TVMLKit va media ilovalari

TVMLKit — veb texnologiyalaridan foydalanib tvOS da media ilovalar yaratish uchun freymvork: JavaScript (TVJS) va TVML (Apple ga xos XML). TVMLKit ilovalari kompilyatsiyani talab qilmaydi — interfeys serverdan yuklanadi, bu App Review dan oʻtmasdan kontentni yangilash imkonini beradi. Katta striming xizmatlari kontent karusellari uchun foydalanadi.

TVML: shablon tuzilishi

TVML tayyor shablonlarni taqdim etadi: CatalogTemplate (boʻlimlar bilan katalog), ProductTemplate (kontent tafsilot sahifasi), FormTemplate (kirish formlari), LoadingTemplate (yuklash indikatori). Shablonlar XML da tavsiflanadi va CSS oʻxshash atributlar orqali stillashtiriladi. TVJS kodi bosishlarni boshqaradi va mahalliy API larni chaqiradi.

xml
<!-- CatalogTemplate — TVML bo'yicha filmlar katalogi -->
<document>
  <catalogTemplate>
    <banner>
      <title>Kino yangiliklari</title>
      <description>Yangi premyeralar va eksklyuzivlar</description>
    </banner>
    <section>
      <header>
        <title>Ommabop</title>
      </header>
      <items>
        <lockup>
          <img src="https://cdn.example.com/movie1.jpg" width=300 height=450/>
          <title>Interstellar</title>
        </lockup>
        <lockup>
          <img src="https://cdn.example.com/movie2.jpg" width=300 height=450/>
          <title>Inception</title>
        </lockup>
      </items>
    </section>
  </catalogTemplate>
</document>

TVML CatalogTemplate sarlavhali banner va lockup elementlari bilan boʻlimlarni oʻz ichiga oladi. Har bir lockup rasm va sarlavhali film kartasidir. Focus Engine lockup elementlari oʻrtasidagi navigatsiyani avtomatik boshqaradi. Bosilganda, TVJS ishlovchisi select hodisasini qabul qiladi va ProductTemplate orqali tafsilot sahifasini koʻrsatishi mumkin.

TVJS: hodisalarni boshqarish

TVJS asosiy ilovadan ajratilgan JavaScript muhitidir. TVJS kodi TVML shabloni yuklanganda va hodisalar boshqarilganda chaqiriladi. TVJS video ijro etishni boshqarish uchun Appliance va Player orqali mahalliy API larga kirish huquqiga ega. Apple TVMLKit dan faqat tez-tez kontent yangilanadigan media ilovalari uchun foydalanishni tavsiya qiladi. Oʻyinlar va interaktiv ilovalar uchun SwiftUI afzal.

tvOS ilovalarini nashr qilish

tvOS ilovasini nashr qilish Apple Developer Program obunasini ($99/yil) talab qiladi. Ilova App Store Connect orqali alohida mahsulot yoki universal binar (iOS + tvOS) qismi sifatida yuklanadi. App Review barqarorlik, HIG muvofiqligi va 4 GB hajm cheklovini tekshiradi.

Qurish va tarqatish

Xcode .app kengaytmali (.ipa paket) tvOS maqsadini yaratadi. Arxitektura — arm64 (Apple TV Apple Silicon ARM chiplaridan foydalanadi). tvOS i386 yoki x86_64 boʻlgan freymvorklarni qoʻllab-quvvatlamaydi. Ilova Apple Development sertifikati (test) yoki Apple Distribution sertifikati (nashr) bilan imzolanadi. Biznes mijozlar uchun Volume Purchase Program orqali tarqatish mumkin.

App Review talablari

tvOS maxsus talablari: barcha interfeys elementlari sensorli ekran yoki klaviatura ishlatmasdan Focus Engine orqali foydalanish mumkin boʻlishi kerak. Avtorizatsiya talab qiladigan ilovalar iTunes Store orqali Yagona Kirish (SSO) ni qoʻllab-quvvatlashi kerak. Reklama kontenti foydalanuvchi roziligisiz ijroni toʻxtata olmaydi. Yuklangan binar hajmi 4 GB dan oshmasligi kerak.

TalabTavsif
Ilova hajmi4 GB dan oshmasligi kerak, tavsiya 500 MB
Grafik rezolyutsiyasi@2x (1920×1080) va @4x (3840×2160) 4K uchun
Fokus navigatsiyasiBarcha elementlar Siri Remote orqali foydalanish mumkin
Video formatH.264, HEVC, Dolby Vision (Profile 5)
AudioDolby Atmos (E-AC-3 JOC) va stereo AAC

Tez-tez beriladigan savollar

tvOS ishlab chiqish uchun qanday tillar ishlatiladi?

Asosiy til Swift boʻlib, SwiftUI va UIKit freymvorklari bilan. Media ilovalari uchun serverdan yuklanadigan JavaScript va TVML shablonlari bilan TVMLKit ishlatiladi. Objective-C eski loyihalar uchun qoʻllab-quvvatlanadi. Apple barcha yangi tvOS loyihalari uchun SwiftUI ni tavsiya qiladi.

tvOS iOS dan qanday farq qiladi?

tvOS sensor hodisalari oʻrniga Focus Engine dan foydalanadi, kamera va mikrofon yoʻq (Siri Remote dan tashqari), ilova hajmini 4 GB bilan cheklaydi, doimiy mahalliy xotirani (purgeable) qoʻllab-quvvatlamaydi va koʻrsatish uchun Metal ni talab qiladi. Barcha ilovalar faqat ARM64 da ishlaydi.

tvOS da Focus Engine qanday ishlaydi?

Focus Engine Siri Remote yordamida UI elementlari oʻrtasida fokus harakatini boshqaradi. Dasturchi preferredFocusEnvironments orqali afzal fokusni belgilaydi. UIFocusHeading (up, down, left, right) yoʻnalishni aniqlaydi. UIFocusEffect avtomatik ravishda faol elementga parallaks va soya qoʻshadi.

Apple TV uchun ilovalarni qanday nashr qilish mumkin?

Nashr qilish uchun Apple Developer Program obunasi ($99/yil) talab qilinadi. Ilova Xcode Organizer yoki Transporter orqali App Store Connect ga yuklanadi. Moderatsiya tekshiradi: Focus Engine muvofiqligi, barqarorlik, UIWebView yoʻqligi va 4 GB hajm cheklovi.

tvOS da UIKit ishlatish mumkinmi?

Ha, UIKit tvOS da toʻliq qoʻllab-quvvatlanadi: UIView, UIViewController, UICollectionView, UITableView. Biroq, UIKit Focus Engine ga moslashtirilgan: UIButton va UIControl sensor emas, balki pult bosishi orqali hodisalarni qabul qiladi. Avtomatik fokus moslashuvi tufayli yangi loyihalar uchun SwiftUI tavsiya etiladi.

Xulosa

  • tvOS — XNU yadrosida Focus Engine boshqaruvi bilan TV set-top qutilari uchun Apple OT
  • Focus Engine parallaks effektlari bilan Siri Remote orqali sensor boshqaruvini fokus harakati bilan almashtiradi
  • TVMLKit — server tomoni TVML shablonlari bilan JavaScript da media ilovalari uchun noyob freymvork
  • Top Shelf TVTopShelfProvider orqali bosh ekranda dinamik kontent taqdim etadi
  • SwiftUI tvOS 13 dan boshlab focusable, focusSection va onPlayPauseCommand modifikatorlari bilan toʻliq qoʻllab-quvvatlanadi
  • tvOS cheklovlari: 4 GB hajm, purgeable xotira, kamera, UIWebView yoki MFMailCompose yoʻq
  • Nashr qilish Apple Developer Program, @2x/@4x grafik, HEVC format va Dolby Atmos talab qiladi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing