Phase 6: Live-TV, plus Live Activity für Downloads
Live-TV - An keinem echten Server geprüft: die DVR- und EPG-Endpunkte sind der am schlechtesten dokumentierte Teil der Plex-API. Die Modelle sind deshalb durchgehend nachsichtig — fehlende Felder ergeben leere Listen, nicht Fehler, und die Senderkennung wird als Zahl, Zeichenkette oder uuid akzeptiert. - Ohne eingerichteten Empfänger erklärt die App das, statt einen Fehler zu zeigen. Das ist der häufigste Fall. - Senderliste mit laufender Sendung, Fortschrittsbalken und „danach". Der Programmführer wird getrennt geholt: fällt er aus, bleibt das Umschalten möglich. - Die Anbieterkennung wird aus /media/providers gelesen statt fest verdrahtet — sie wechselt je nach Server. Live Activity - Eigene Widget-Erweiterung; iOS zeichnet den Sperrbildschirm in einem getrennten Prozess, während die App meist gar nicht läuft. - Der Presenter drosselt auf 1,5 Sekunden. ActivityKit verwirft zu häufige Aktualisierungen kommentarlos, und der Fortschritt kommt mehrmals je Sekunde — ungebremst bliebe die Anzeige stehen. - @preconcurrency import: Activity und ActivityContent tragen keine Sendable-Zusage. Zwei Stolpersteine unterwegs: canImport(ActivityKit) ist auf macOS wahr, die Typen darin aber nicht verfügbar — es muss os(iOS) sein. Und eine von Hand geschriebene Info.plist ohne CFBundleIdentifier führt zu einer Erweiterung ganz ohne Kennung; der Fehler lautet dann „not prefixed with the parent app's bundle identifier" und zeigt auf die falsche Stelle. 126 Tests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+35
@@ -31,6 +31,7 @@ targets:
|
||||
sources:
|
||||
- path: Flixy
|
||||
dependencies:
|
||||
- target: DownloadWidget
|
||||
- package: FlixyKit
|
||||
product: PlexKit
|
||||
- package: FlixyKit
|
||||
@@ -75,6 +76,10 @@ targets:
|
||||
UIBackgroundModes:
|
||||
- audio
|
||||
|
||||
# Ohne diesen Schlüssel lehnt ActivityKit jede Anfrage ab — und
|
||||
# zwar wortlos, was die Suche nach dem Grund unangenehm macht.
|
||||
NSSupportsLiveActivities: true
|
||||
|
||||
NSAppTransportSecurity:
|
||||
# Plex-Server im Heimnetz laufen überwiegend auf blankem HTTP an
|
||||
# Port 32400. Diese Ausnahme erlaubt genau das, ohne die
|
||||
@@ -87,3 +92,33 @@ targets:
|
||||
NSLocalNetworkUsageDescription: >-
|
||||
Flixy benötigt Zugriff auf das lokale Netzwerk, um deinen
|
||||
Plex-Server zu finden und Medien direkt von ihm zu laden.
|
||||
|
||||
# Die Live Activity für Downloads. Eine eigene Erweiterung, weil iOS die
|
||||
# Darstellung im Sperrbildschirm in einem getrennten Prozess zeichnet — die
|
||||
# App selbst läuft zu dem Zeitpunkt meist gar nicht.
|
||||
DownloadWidget:
|
||||
type: app-extension
|
||||
platform: iOS
|
||||
sources:
|
||||
- path: DownloadWidget
|
||||
dependencies:
|
||||
- package: FlixyKit
|
||||
product: FlixyDownloads
|
||||
- package: FlixyKit
|
||||
product: FlixyDesign
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.scarriffleservices.flixy.downloadwidget
|
||||
PRODUCT_NAME: DownloadWidget
|
||||
CODE_SIGN_STYLE: Automatic
|
||||
SKIP_INSTALL: YES
|
||||
# Von XcodeGen erzeugt statt von Hand geschrieben. Eine eigene Datei ohne
|
||||
# CFBundleIdentifier führt zu einer Erweiterung ganz ohne Kennung — und
|
||||
# der Fehler lautet dann „not prefixed with the parent app's bundle
|
||||
# identifier", was auf eine falsche Fährte führt.
|
||||
info:
|
||||
path: DownloadWidget/Info.plist
|
||||
properties:
|
||||
CFBundleDisplayName: Flixy Downloads
|
||||
NSExtension:
|
||||
NSExtensionPointIdentifier: com.apple.widgetkit-extension
|
||||
|
||||
Reference in New Issue
Block a user