import Foundation // `os(iOS)` statt `canImport(ActivityKit)`: der Import gelingt auch auf // macOS, die Typen darin sind dort aber als nicht verfügbar markiert. Eine // Prüfung auf den Import allein übersetzt deshalb nicht. // Catalyst ausdrücklich ausgenommen: dort gilt `os(iOS)`, aber ActivityKit // gibt es nicht — die Typen sind zwar da und jeder Aufruf ist als nicht // verfügbar markiert. #if os(iOS) && !targetEnvironment(macCatalyst) import ActivityKit /// Was im Sperrbildschirm und in der Dynamic Island steht. /// /// Liegt in FlixyDownloads, weil App und Widget-Erweiterung denselben Typ /// brauchen — zwei getrennte Kopien wären die klassische Quelle für eine Live /// Activity, die sich nicht mehr aktualisieren lässt: ActivityKit gleicht die /// Typen über ihren vollen Namen ab. public struct DownloadActivityAttributes: ActivityAttributes { public struct ContentState: Codable, Hashable, Sendable { /// Der Titel, der gerade lädt. public var title: String /// 0…1, oder `nil` solange die Gesamtgröße unbekannt ist. public var progress: Double? public var receivedBytes: Int64 public var totalBytes: Int64 /// Wie viele weitere in der Warteschlange stehen. public var remainingCount: Int public init( title: String, progress: Double?, receivedBytes: Int64, totalBytes: Int64, remainingCount: Int ) { self.title = title self.progress = progress self.receivedBytes = receivedBytes self.totalBytes = totalBytes self.remainingCount = remainingCount } } /// Bleibt über die Laufzeit gleich. Hier leer: welcher Titel lädt, wechselt /// im Laufe einer Staffel und gehört deshalb in den Zustand. public init() {} } #endif