tvOS: Entwicklung für Apple TV mit Focus Engine

Autor: IT Sectr Veröffentlicht: 2026-02-07 Lesezeit: 11 Min.

tvOS — Apples Betriebssystem für Apple TV, erstmals 2015 zusammen mit der 4. Generation Apple TV veröffentlicht. Die App-Entwicklung für tvOS erfolgt in Swift mit SwiftUI und TVMLKit. Der Hauptunterschied zu iOS ist die Fokussteuerung über die Siri Remote anstelle von Touch. Laut Apple ist tvOS auf über 100 Millionen aktiven Geräten weltweit installiert.

Wichtige Punkte

  • tvOS — Apples OS für TV-Set-Top-Boxen auf XNU-Kernel mit Focus Engine statt Touch
  • Focus Engine — Fokusverwaltungssystem zwischen Elementen über Siri Remote
  • SwiftUI und TVMLKit — zwei Entwicklungsansätze: nativ und JavaScript-Vorlagen
  • Top Shelf — dynamische Inhalte auf dem Apple TV-Startbildschirm
  • App-Größe streng auf 4 GB begrenzt, empfohlen nicht mehr als 500 MB

Was ist tvOS?

tvOS — Apples Betriebssystem für Apple TV-Set-Top-Boxen, basierend auf dem gleichen Darwin XNU-Kernel wie iOS. Erstmals veröffentlicht am 30. Oktober 2015 mit der 4. Generation Apple TV. tvOS ersetzte die veraltete Apple TV Software (basierend auf iOS, ohne App Store und SDK). Das System ist für den Betrieb auf Fernsehern mit einer Auflösung von bis zu 4K HDR (Dolby Vision) und Dolby Atmos-Sound optimiert.

Laut Apple (WWDC 2025) ist tvOS auf Apple TV HD (2015), Apple TV 4K (2017, 2021, 2022) installiert und in einige Smart TV-Modelle über AirPlay integriert. Apple TV verwendet A8 (HD), A10X Fusion (1. Gen 4K), A12 Bionic (2. Gen 4K) und A15 Bionic (3. Gen 4K) Chips. Alle Modelle unterstützen tvOS 17. tvOS hat keine Kamera, kein Mikrofon (außer Fernbedienung), keinen Touchscreen und kein GPS.

Das Hauptmerkmal von tvOS ist der Focus Engine, der die Touch-Steuerung durch Fokusnavigation ersetzt. Der Benutzer bewegt die Auswahl zwischen UI-Elementen mit der Siri Remote. Entwickler erstellen Apps in Swift/SwiftUI (nativ) oder JavaScript/TVML (Medien-Apps wie Netflix, Hulu).

tvOS-Versionsgeschichte

tvOS 9 (2015) — erste Version mit SDK und App Store. tvOS 10 (2016) — Single Sign-On (SSO) für Kabelabonnements. tvOS 11 (2017) — Amazon Prime Video Unterstützung und Automatikmodus. tvOS 12 (2018) — Dolby Atmos. tvOS 13 (2019) — Mehrbenutzermodus. tvOS 17 (2023) — FaceTime, VPN, Audioprofile über HDMI.

tvOS-VersionJahrWichtigste Neuerung
tvOS 92015App Store, SDK, Siri Remote
tvOS 102016Single Sign-On (SSO), Live Tune-In
tvOS 112017Amazon Prime, Automatikmodus
tvOS 122018Dolby Atmos, Passwort mit iPhone
tvOS 132019Mehrbenutzer, Kontrollzentrum auf TV
tvOS 172023FaceTime, VPN, Siri Remote suchen

tvOS-Architektur und Unterschiede zu iOS

Die tvOS-Architektur basiert auf dem gleichen Stack wie iOS: XNU-Kernel, Core Services-Systemdienste, Media-Ebene und Cocoa Touch-Benutzerebene. Es gibt jedoch wesentliche Unterschiede aufgrund der Besonderheiten der TV-Plattform.

Hardware-Einschränkungen

Der Apple TV 4K der 3. Generation verwendet A15 Bionic mit 6 CPU-Kernen (2 Leistung, 4 Effizienz) und einer 5-Kern-GPU. RAM — 4 GB (interner SSD-Speicher ab 64 GB). Das System hat keinen dauerhaften lokalen Speicher im klassischen Sinne: Alle App-Daten können von tvOS bei Speichermangel gelöscht werden (purgeable). Entwickler müssen iCloud Key-Value Storage oder CloudKit zur Zustandsspeicherung verwenden.

TVMLKit und TVJS

TVMLKit — ein für tvOS einzigartiges Framework, das die Erstellung von Oberflächen in JavaScript und TVML (Apple-spezifische XML-ähnliche Sprache) ermöglicht. TVMLKit lädt JSON/XML vom Server und rendert native UI-Komponenten. Dies ist die primäre Technologie für Streaming-Dienste: Netflix, Hulu, Amazon Prime Video verwenden TVMLKit. TVJS — eine JavaScript-Umgebung, die in einem isolierten Kontext ausgeführt wird.

Fehlen eines dauerhaften Speichers

tvOS verwaltet den Speicherplatz automatisch: Bei Platzmangel kann das System Cache, heruntergeladene Ressourcen und sogar die App selbst löschen (unter Beibehaltung des Symbols). Beim erneuten Öffnen muss die App ihren Zustand wiederherstellen. iCloud NSUbiquitousKeyValueStore ist der einzige garantierte dauerhafte Speicher für Einstellungen (bis zu 1 MB pro App).

swift
import Foundation

// // Zustandsspeicherung und -wiederherstellung in tvOS
final class StateManager {

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

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

    // Zustand nach Cache-Löschung wiederherstellen
    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)
    }

    // Änderungsbenachrichtigung auf anderem Gerät verarbeiten
    init() {
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(ubiquitousKeyValueStoreDidChange),
            name: NSUbiquitousKeyValueStore.didChangeExternallyNotification,
            object: store
        )
    }

    @objc
    private func ubiquitousKeyValueStoreDidChange(_ notification: Notification) {
        print("Daten auf anderem Gerät geändert")
    }
}

Der StateManager verwendet NSUbiquitousKeyValueStore zum Speichern des App-Zustands auf tvOS. Da der lokale Speicher vom System gelöscht werden kann, garantiert nur iCloud die Datenpersistenz. store.synchronize() sendet Daten sofort an den Server, während didChangeExternallyNotification die App über Änderungen von anderen Geräten des Benutzers benachrichtigt.

Focus Engine: Navigation und Fokus

Focus Engine — der Schlüsselmechanismus von tvOS, der Touch-Ereignisse durch Fokusnavigation ersetzt. Der Benutzer bewegt die Auswahl zwischen UI-Elementen mit der Siri Remote (Touchfläche oder Tasten). Das System berechnet automatisch das nächste Fokuselement basierend auf Entfernung und Bewegungsrichtung.

UIFocusEnvironment und Fokushierarchie

Jedes UI-Element, das Fokus empfangen kann, implementiert das UIFocusEnvironment-Protokoll. UIKit bestimmt automatisch die Navigationsreihenfolge basierend auf der Elementgeometrie. Der Entwickler kann den bevorzugten Fokus über preferredFocusEnvironments überschreiben, ein Array von child-focusEnvironment angeben und die Bewegung über UIFocusHeading (up, down, left, right) steuern. UIFocusGuide ermöglicht das Festlegen benutzerdefinierter Routen für nicht-triviale Layouts.

UIFocusEffect und Parallaxe

tvOS fügt automatisch UIFocusEffect zum fokussierten Element hinzu: Schatten, Hervorhebung und Parallax-Effekt (Verschiebung beim Neigen der Fernbedienung). Der Entwickler kann den Effekt über focusedValue deaktivieren oder über UIFocusEffect.transform anpassen. In SwiftUI wird Parallaxe mit dem Modifikator .hoverEffect(.highlight) hinzugefügt.

swift
import SwiftUI

// // tvOS-Komponente mit benutzerdefiniertem Fokus
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 {
            // Play/Pause-Taste auf der Fernbedienung verarbeiten
            startPlayback()
        }
        .focusable()
        .focusEffect { phase in
            // Benutzerdefinierter Fokuseffekt
            phase == .active ?
                AnyView(self.scaleEffect(1.08)) :
                AnyView(self.scaleEffect(1.0))
        }
    }

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

// // Hauptbildschirm mit Filmraster
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() // Gruppierung für die Navigation
    }
}

MovieCardView demonstriert den Focus Engine in SwiftUI: Der Modifikator .focusable() macht das Element fokussierbar, .onHover verfolgt Zustandsänderungen, .focusEffect ermöglicht benutzerdefinierte Fokusanimation. .onPlayPauseCommand behandelt das Drücken der Play/Pause-Taste auf der Siri Remote. focusSection gruppiert ein Raster für zyklische Navigation.

Siri Remote: Gesten und Tasten

Die Siri Remote der zweiten Generation (2021) hat eine Touchfläche, 5 Tasten und ein Mikrofon. tvOS unterstützt Gesten: Wischen (Navigation), Tippen (Auswählen), Doppeltippen (Zentrieren), Pinch-Zoom (Bilder), langes Drücken (Kontextmenü). UIPress mit Typen .select, .playPause, .menu, .upArrow, .downArrow, .leftArrow, .rightArrow — vordefinierte Drucktypen. Das Mikrofon der Fernbedienung wird für Siri und Sprachsuche verwendet.

Top Shelf und App-Bildschirm

Top Shelf ist ein Bereich auf dem Apple TV-Startbildschirm, der dynamische App-Inhalte anzeigt, wenn die App in der oberen Reihe ist. In tvOS 17 unterstützt Top Shelf bis zu 8 Widgets mit benutzerdefinierten Hintergründen und interaktiven Elementen. Der Entwickler implementiert TVTopShelfProvider zur Bereitstellung von Inhalten.

Top Shelf-Stile

Drei Top Shelf-Stile sind verfügbar: Sectioned — kategorisierte Liste (Serien nach Genre), Inset — zentrales Element mit detaillierter Beschreibung (empfohlener Film), Photo — Bildraster (Fotoalben). Das System aktualisiert Top Shelf im Hintergrund über BGTaskScheduler, ähnlich wie watchOS. Der Anbieter muss Inhalte schnell zurückgeben — tvOS speichert Daten 24 Stunden zwischen.

App-Bildschirm

Der tvOS-Startbildschirm besteht aus einer Top Shelf-Reihe und einem App-Raster. Benutzer können Symbole neu anordnen und Ordner erstellen. tvOS entlädt bei Ressourcenknappheit automatisch Apps aus dem Speicher, daher muss der Entwickler UISceneDidDisconnectNotification korrekt behandeln und den Zustand beim Neustart wiederherstellen.

Top Shelf-StilFormatVerwendung
SectionedAbschnitte mit Überschriften und ElementenSerien, Podcasts, Playlists
InsetEin großes Element mit BeschreibungFilm des Tages, exklusiv
PhotoBildraster ohne BeschriftungenFotoalben, Galerien
TabTabs mit UmschaltungSport nach Art, Nachrichten nach Thema

SwiftUI für Apple TV

SwiftUI wird in tvOS ab tvOS 13 vollständig unterstützt. Apple empfiehlt SwiftUI für alle neuen Projekte. Derselbe SwiftUI-Code funktioniert auf iOS, iPadOS, macOS und tvOS mit minimalen Anpassungen für den Focus Engine. SwiftUI für tvOS bietet die Modifikatoren .focusable(), .focusSection(), .onPlayPauseCommand und .onExitCommand.

Anpassung an tvOS

Beim Portieren einer iOS-App auf tvOS müssen Sie: TabView durch NavigationView mit Fokusnavigation ersetzen, Schriftgrößen erhöhen (mindestens 30pt für Überschriften, 22pt für Text), Abstände hinzufügen (mindestens 40pt von den Rändern — Sicherheitsbereich auf Fernsehern). tvOS unterstützt kein UIAlertController mit Textfeld, UIWebView und MFMailComposeViewController.

iOS-KomponentetvOS-ÄquivalentHinweis
UISliderUIProgressView + TastenSlider nicht unterstützt
UIPickerViewTabelle mit FokusPicker durch Liste ersetzt
UITextFieldUIAlertController (nur lesen)Texteingabe über Siri
UIActionSheetUIAlertControllerUnterstützt
UIWebViewNicht unterstütztWKWebView verwenden
MFMailComposeNicht unterstütztmailto: URL öffnen

Design-Empfehlungen

Apple HIG für tvOS: minimale Touchbereichsgröße 60×60 Punkte, Text aus 3 Metern lesbar (Schriftgröße nicht unter 22pt für Body), Textkontrast 4.5:1, dunkler Hintergrund (heller Hintergrund spiegelt auf OLED-Fernsehern), alle Elemente ohne komplexe Gesten erreichbar. Auflösung: Apple TV 4K gibt 3840×2160 (4K) oder 1920×1080 (HD) bei 60 FPS aus. Alle Bilder sollten @2x (für 1080p) und @4x (für 4K) sein.

TVMLKit und Medienanwendungen

TVMLKit — ein Framework zur Erstellung von Medien-Apps auf tvOS mit Web-Technologien: JavaScript (TVJS) und TVML (Apple-spezifisches XML). TVMLKit-Apps benötigen keine Kompilierung — die Oberfläche wird vom Server geladen, was Inhaltsaktualisierungen ohne App Review ermöglicht. Es wird von großen Streaming-Diensten für Inhaltskarussells verwendet.

TVML: Vorlagenstruktur

TVML bietet vorgefertigte Vorlagen: CatalogTemplate (Katalog mit Abschnitten), ProductTemplate (Inhaltsdetailseite), FormTemplate (Anmeldeformulare), LoadingTemplate (Ladeanzeiger). Vorlagen werden in XML beschrieben und über CSS-ähnliche Attribute gestaltet. TVJS-Code behandelt Tastendrücke und ruft native APIs auf.

xml
<!-- CatalogTemplate — Filmkatalog in TVML -->
<document>
  <catalogTemplate>
    <banner>
      <title>Filmneuheiten</title>
      <description>Aktuelle Premieren und Exklusivtitel</description>
    </banner>
    <section>
      <header>
        <title>Beliebt</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>

Die TVML CatalogTemplate enthält ein Banner mit Titel und Abschnitte mit lockup-Elementen. Jedes lockup ist eine Filmkarte mit Bild und Titel. Der Focus Engine verwaltet automatisch die Navigation zwischen lockup-Elementen. Bei Druck erhält der TVJS-Handler das select-Ereignis und kann eine Detailseite über ProductTemplate anzeigen.

TVJS: Ereignisbehandlung

TVJS ist eine JavaScript-Umgebung, die von der Haupt-App isoliert ist. TVJS-Code wird beim Laden einer TVML-Vorlage und bei der Ereignisbehandlung aufgerufen. TVJS hat Zugriff auf native APIs über Appliance und Player zur Steuerung der Videowiedergabe. Apple empfiehlt TVMLKit nur für Medien-Apps mit häufigen Inhaltsaktualisierungen. Für Spiele und interaktive Apps wird SwiftUI bevorzugt.

tvOS-Apps veröffentlichen

Eine tvOS-App veröffentlichen erfordert ein Apple Developer Program-Abonnement ($99/Jahr). Die App wird über App Store Connect als separates Produkt oder als Teil einer universellen Binärdatei (iOS + tvOS) hochgeladen. App Review prüft Stabilität, HIG-Konformität und die 4-GB-Größenbeschränkung.

Build und Distribution

Xcode erstellt ein tvOS-Ziel mit der Erweiterung .app (.ipa-Paket). Architektur — arm64 (Apple TV verwendet Apple Silicon ARM-Chips). tvOS unterstützt keine Frameworks mit i386 oder x86_64. Die App wird mit einem Apple Development-Zertifikat (Test) oder Apple Distribution-Zertifikat (Veröffentlichung) signiert. Distribution über Volume Purchase Program für Geschäftskunden ist möglich.

App Review-Anforderungen

Besondere tvOS-Anforderungen: Alle Oberflächenelemente müssen über den Focus Engine ohne Touchscreen oder Tastatur erreichbar sein. Apps, die eine Autorisierung erfordern, müssen Single Sign-On (SSO) über den iTunes Store unterstützen. Werbeinhalte dürfen die Wiedergabe nicht ohne Zustimmung des Benutzers unterbrechen. Die hochgeladene Binärdatei darf 4 GB nicht überschreiten.

AnforderungBeschreibung
App-GrößeNicht mehr als 4 GB, empfohlen 500 MB
Grafikauflösung@2x (1920×1080) und @4x (3840×2160) für 4K
FokusnavigationAlle Elemente über Siri Remote erreichbar
VideoformatH.264, HEVC, Dolby Vision (Profile 5)
AudioDolby Atmos (E-AC-3 JOC) und Stereo AAC

Häufig gestellte Fragen

Welche Sprachen werden für die tvOS-Entwicklung verwendet?

Die Hauptsprache ist Swift mit den Frameworks SwiftUI und UIKit. Für Medien-Apps wird TVMLKit mit JavaScript und vom Server geladenen TVML-Vorlagen verwendet. Objective-C wird für Legacy-Projekte unterstützt. Apple empfiehlt SwiftUI für alle neuen tvOS-Projekte.

Wie unterscheidet sich tvOS von iOS?

tvOS verwendet Focus Engine anstelle von Touch-Ereignissen, hat keine Kamera und kein Mikrofon (außer Siri Remote), begrenzt die App-Größe auf 4 GB, unterstützt keinen dauerhaften lokalen Speicher (purgeable) und erfordert Metal für die Darstellung. Alle Apps laufen nur auf ARM64.

Wie funktioniert der Focus Engine in tvOS?

Focus Engine verwaltet die Fokusbewegung zwischen UI-Elementen mit der Siri Remote. Der Entwickler legt den bevorzugten Fokus über preferredFocusEnvironments fest. UIFocusHeading (up, down, left, right) bestimmt die Richtung. UIFocusEffect fügt automatisch Parallaxe und Schatten zum aktiven Element hinzu.

Wie veröffentlicht man Apps für Apple TV?

Die Veröffentlichung erfordert ein Apple Developer Program-Abonnement ($99/Jahr). Die App wird über Xcode Organizer oder Transporter an App Store Connect hochgeladen. Die Moderation prüft: Focus Engine-Kompatibilität, Stabilität, Fehlen von UIWebView und die 4-GB-Größenbeschränkung.

Kann UIKit in tvOS verwendet werden?

Ja, UIKit wird in tvOS vollständig unterstützt: UIView, UIViewController, UICollectionView, UITableView. Allerdings ist UIKit an den Focus Engine angepasst: UIButton und UIControl empfangen Ereignisse über Tastendruck der Fernbedienung, nicht über Touch. SwiftUI wird aufgrund der automatischen Fokusanpassung für neue Projekte empfohlen.

Zusammenfassung

  • tvOS — Apples OS für TV-Set-Top-Boxen auf XNU-Kernel mit Focus Engine-Steuerung
  • Focus Engine ersetzt Touch-Steuerung durch Fokusbewegung über Siri Remote mit Parallax-Effekten
  • TVMLKit — ein einzigartiges Framework für Medien-Apps in JavaScript mit serverseitigen TVML-Vorlagen
  • Top Shelf bietet dynamische Inhalte auf dem Startbildschirm über TVTopShelfProvider
  • SwiftUI wird seit tvOS 13 mit Modifikatoren focusable, focusSection und onPlayPauseCommand vollständig unterstützt
  • tvOS-Einschränkungen: 4 GB Größe, purgeable-Speicher, keine Kamera, kein UIWebView oder MFMailCompose
  • Veröffentlichung erfordert Apple Developer Program, @2x/@4x-Grafiken, HEVC-Format und Dolby Atmos

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch