Ein Apple-TV-Target, und es zeigt schon etwas
Das leere Gerüst: eigene Wurzel FlixyTVApp, eigenes Target FlixyTV in project.yml, eigener Asset-Katalog. Es beweist Target, Icon, Signierung und Paketauflösung auf einen Schlag — bevor eine Zeile Logik daran hängt. **Das Icon von Hand gebaut.** Icon Composer deckt iOS, macOS und watchOS ab, tvOS nicht: der Fernseher verlangt gestapelte Bilder, damit die Parallaxe beim Wischen etwas zu bewegen hat. Zwei Ebenen aus derselben Marke — Verlauf hinten, Dreieck vorn —, dazu App-Store-Icon und beide Top-Shelf-Bilder. Ohne das breite lehnt App Store Connect den Upload mit 90513 ab. **Zwei Annahmen aus dem Plan haben sich beim Bauen erledigt.** PlexWebAuthenticator übersetzt nicht: ASWebAuthenticationSession steht zwar im tvOS-SDK, aber presentationContextProvider, cancel() und der Rest sind dort nicht verfügbar. Der Typ bleibt trotzdem stehen — als Attrappe, die sofort „ging nicht" meldet. Ihn herauszuschneiden hiesse, die Zustandsmaschine der Anmeldung für eine Plattform zu spalten, die diesen Zweig nie betritt. Dieselbe Bauform wie bei OrientationLock. NowPlaying wartet auf den Player in Schritt sieben. **Und eine Messung statt einer Vermutung.** Der Plan führte zwei offene Annahmen über den Sicherheitsrand. Der Simulator beantwortet beide: SwiftUI legt ihn von selbst an, und er misst sechzig oben und unten, achtzig seitlich — nicht neunzig. Nutzfläche 1760×960. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6010229b80
commit
6326c8c24c
+82
@@ -5,6 +5,7 @@ options:
|
||||
deploymentTarget:
|
||||
iOS: "26.0"
|
||||
macOS: "26.0"
|
||||
tvOS: "26.0"
|
||||
createIntermediateGroups: true
|
||||
groupSortPosition: top
|
||||
developmentLanguage: en
|
||||
@@ -155,6 +156,87 @@ targets:
|
||||
Flixy benötigt Zugriff auf das lokale Netzwerk, um deinen
|
||||
Plex-Server zu finden und Medien direkt von ihm zu laden.
|
||||
|
||||
# Die Fassung für den Fernseher.
|
||||
#
|
||||
# **Eigene Ansichten, geteilte Modelle.** Die Quellenpfade sind die ganze
|
||||
# Aussage dieses Blocks: `FlixyTV/` gehört nur hierher, `Flixy/Session/`
|
||||
# gehört beiden. Keine Datei muss dafür umziehen — XcodeGen nimmt Pfade je
|
||||
# Ziel, und die iOS-Fassung sieht von der ganzen Sache nichts.
|
||||
FlixyTV:
|
||||
type: application
|
||||
platform: tvOS
|
||||
# Aus demselben Grund ausgeschrieben wie bei Flixy — siehe dort.
|
||||
scheme: {}
|
||||
sources:
|
||||
# Die eigenen Ansichten.
|
||||
- path: FlixyTV
|
||||
# Die Modelle.
|
||||
- path: Flixy/Session
|
||||
excludes:
|
||||
# Ein Fernseher dreht sich nicht.
|
||||
- "OrientationLock.swift"
|
||||
# Downloads gibt es hier nicht.
|
||||
- "DownloadService.swift"
|
||||
- "DownloadRefiller.swift"
|
||||
# Kommt mit dem Player in Schritt sieben. Solange es ihn nicht gibt,
|
||||
# hätte die Anmeldung beim System nichts anzumelden.
|
||||
- "NowPlaying.swift"
|
||||
# Reines Modell trotz des Ordnernamens: LoadState, ErrorText und
|
||||
# MediaRoute liegen zusammen in einer Datei.
|
||||
- path: Flixy/Views/LoadState.swift
|
||||
type: file
|
||||
- path: Flixy/Branding.swift
|
||||
type: file
|
||||
# Die Texte. Dieselben Schlüssel, dieselben Übersetzungen.
|
||||
- path: Flixy/Resources/Localizable.xcstrings
|
||||
type: file
|
||||
dependencies:
|
||||
- package: FlixyKit
|
||||
product: MediaKit
|
||||
# Mitgenommen, obwohl Plex in Fassung 1 nicht angeboten wird:
|
||||
# FlixySession kennt PlexResource und PlexBackend in seiner
|
||||
# Zustandsmaschine. Das Paket mitzunehmen ist billiger, als die Sitzung
|
||||
# zu spalten — PlexClientIdentity benutzt nur UIDevice, und das gibt es
|
||||
# auf tvOS.
|
||||
- package: FlixyKit
|
||||
product: PlexKit
|
||||
- package: FlixyKit
|
||||
product: JellyfinKit
|
||||
- package: FlixyKit
|
||||
product: FlixyDesign
|
||||
- package: FlixyKit
|
||||
product: FlixyPlayback
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.scarriffleservices.flixy.tv
|
||||
PRODUCT_NAME: Flixy
|
||||
# Nur Apple TV.
|
||||
TARGETED_DEVICE_FAMILY: "3"
|
||||
# Kein AppIcon.icon: Icon Composer deckt iOS, macOS und watchOS ab,
|
||||
# tvOS nicht. Der Name zeigt auf die Brand-Assets-Gruppe im Katalog,
|
||||
# und der Katalog liegt unter FlixyTV/Resources.
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME: "App Icon & Top Shelf Image"
|
||||
CODE_SIGN_STYLE: Automatic
|
||||
info:
|
||||
path: FlixyTV/Info.plist
|
||||
properties:
|
||||
CFBundleDisplayName: Flixy
|
||||
UIUserInterfaceStyle: Dark
|
||||
ITSAppUsesNonExemptEncryption: false
|
||||
# Was hier **nicht** steht, und warum:
|
||||
#
|
||||
# UILaunchScreen — tvOS hat kein Startbild dieser Art.
|
||||
# UISupportedInterfaceOrientations — ein Fernseher dreht sich nicht.
|
||||
# NSSupportsLiveActivities — ActivityKit fehlt im tvOS-SDK.
|
||||
# CFBundleURLTypes — das Schema ist für die Plex-Rückkehr.
|
||||
# UIBackgroundModes: audio — ein Apple TV schickt keine App in den
|
||||
# Hintergrund, aus dem sie weiterspielen müsste.
|
||||
NSAppTransportSecurity:
|
||||
NSAllowsLocalNetworking: true
|
||||
NSLocalNetworkUsageDescription: >-
|
||||
Flixy benötigt Zugriff auf das lokale Netzwerk, um deinen
|
||||
Jellyfin-Server zu erreichen.
|
||||
|
||||
# Nur zum Hinsehen: fährt die App mit der Attrappe in einen bestimmten
|
||||
# Zustand und hält sie dort an, damit von außen fotografiert werden kann.
|
||||
# Kein Teil der App, wird nie mitgeliefert.
|
||||
|
||||
Reference in New Issue
Block a user