FlixyMac ist weg
VLCKit liefert Teile für iOS, macOS, tvOS und die Simulatoren — aber keinen für Catalyst. Deshalb hing `FlixyVLC` gar nicht erst am Mac-Ziel, und deshalb musste dort jedes MKV und jeder DTS-Ton vom Server umgerechnet werden. Bei einem Medienclient ist das nicht ein Detail am Rand, sondern der Zweck der Übung. „Für iPad angepasst" ist derselbe iOS-Bau und lädt denselben iOS-Teil von VLCKit. Damit läuft auf dem Mac, was auf dem iPad läuft. Was Catalyst dafür konnte — eine `.app` zum Weitergeben, Intel-Macs, die Fensterleiste über AppKit — wiegt hier nichts auf: ein Nutzer, ein Apple-Silicon-Mac. Die Fenstergröße hing an `#if targetEnvironment(macCatalyst)` und fragt jetzt `FlixyPlatform.isMac`. `sizeRestrictions` ist auf dem iPhone `nil`, das Fragezeichen ist die ganze Fallunterscheidung. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f3ea1ea891
commit
5dd2daf3ed
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<!-- Catalyst-Programme laufen in der Sandbox. Ohne die Erlaubnis für
|
||||
ausgehende Verbindungen erreicht die App keinen Server — und zwar
|
||||
ohne Fehlermeldung: der Ladekreis dreht sich einfach für immer. -->
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
<key>com.apple.security.network.client</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
+17
-13
@@ -71,17 +71,18 @@ struct FlixyApp: App {
|
||||
// aufgeht: schmaler als das hier klappt die Seitenleiste zu
|
||||
// und die Reihen zeigen anderthalb Kacheln.
|
||||
//
|
||||
// `os(macOS)` allein reichte nicht — unter Catalyst gilt
|
||||
// `os(iOS)`, und genau deshalb öffnete das Fenster wieder in
|
||||
// Notizzettelgröße.
|
||||
#if os(macOS) || targetEnvironment(macCatalyst)
|
||||
.frame(minWidth: 900, minHeight: 620)
|
||||
#endif
|
||||
#if targetEnvironment(macCatalyst)
|
||||
// Unter Catalyst gibt es `defaultSize` nicht; die Größe hängt
|
||||
// an der Szene.
|
||||
// Zur Laufzeit gefragt, nicht beim Übersetzen: auf dem Mac
|
||||
// läuft genau dieser iOS-Bau, und `os(macOS)` ist dabei
|
||||
// falsch. Ohne Untergrenze öffnet das Fenster in
|
||||
// Notizzettelgröße, und darin fällt der Aufmacher in sich
|
||||
// zusammen, weil seine Abstände dehnbar sind.
|
||||
.frame(
|
||||
minWidth: FlixyPlatform.isMac ? 900 : nil,
|
||||
minHeight: FlixyPlatform.isMac ? 620 : nil
|
||||
)
|
||||
// `defaultSize` gibt es hier nicht; die Größe hängt an der
|
||||
// Szene.
|
||||
.task { Self.widenWindow() }
|
||||
#endif
|
||||
.environment(session)
|
||||
.environment(playback)
|
||||
.environment(playbackSettings)
|
||||
@@ -132,13 +133,17 @@ struct FlixyApp: App {
|
||||
}
|
||||
|
||||
#if os(iOS)
|
||||
#if targetEnvironment(macCatalyst)
|
||||
extension FlixyApp {
|
||||
/// Gibt dem Fenster eine vernünftige Mindestgröße.
|
||||
///
|
||||
/// Unter Catalyst öffnet macOS sonst ein Fenster von der Größe eines
|
||||
/// Auf dem Mac öffnet das System sonst ein Fenster von der Größe eines
|
||||
/// Notizzettels — und darin fällt der Aufmacher in sich zusammen, weil
|
||||
/// seine Abstände dehnbar sind.
|
||||
///
|
||||
/// `sizeRestrictions` gibt es nur dort, wo Fenster sich überhaupt frei
|
||||
/// ziehen lassen; auf dem iPhone ist die Eigenschaft `nil`. Das
|
||||
/// Fragezeichen ist deshalb die ganze Fallunterscheidung — ein Aufruf
|
||||
/// auf einem Gerät ohne Fenster tut schlicht nichts.
|
||||
@MainActor
|
||||
static func widenWindow() {
|
||||
for scene in UIApplication.shared.connectedScenes {
|
||||
@@ -151,7 +156,6 @@ extension FlixyApp {
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/// Der klassische App-Delegat, für das eine, was SwiftUI nicht abdeckt.
|
||||
@MainActor
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Flixy</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>com.scarriffleservices.flixy.auth</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>com.scarriffleservices.flixy</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.entertainment</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsLocalNetworking</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>NSLocalNetworkUsageDescription</key>
|
||||
<string>Flixy benötigt Zugriff auf das lokale Netzwerk, um deinen Medienserver zu finden und Filme direkt von ihm zu laden.</string>
|
||||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>audio</string>
|
||||
</array>
|
||||
<key>UILaunchScreen</key>
|
||||
<dict>
|
||||
<key>UIColorName</key>
|
||||
<string>LaunchBackground</string>
|
||||
</dict>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIUserInterfaceStyle</key>
|
||||
<string>Dark</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Reference in New Issue
Block a user