Live Activity — was ist das, Widgets auf dem Sperrbildschirm

Autor: IT Sectr Veröffentlicht: 2026-02-15 Lesezeit: 9 Min.

Live Activity ist ein dynamisches Widget auf dem iPhone-Sperrbildschirm und in Dynamic Island, das Echtzeitinformationen anzeigt: Lieferstatus, Sportergebnisse, Timer und Musikwiedergabe. Es wird über ActivityKit (Swift, iOS 16.1+) zusammen mit WidgetKit implementiert. Live Activity wird lokal oder über Push-Benachrichtigungen aktualisiert, unterstützt mehrere Zustände und wird vom System nach Ende des Ereignisses beendet. Weitere Informationen unter ActivityKit Documentation.

Wichtige Punkte

  • Live Activity — Echtzeit-Widget auf dem Sperrbildschirm und Dynamic Island
  • ActivityKit — Framework zum Starten und Verwalten von Live Activities in iOS 16.1+
  • Push-Updates — der Server sendet einen neuen Zustand über ActivityKit-Push-Benachrichtigungen
  • Zustände — jede Activity unterstützt aktive und beendete Zustände mit unterschiedlichen UIs
  • Dynamic Island — kompakte Anzeige der Live Activity auf iPhone 14 Pro und neuer

Was ist Live Activity — Widget auf dem Sperrbildschirm?

Live Activity ist eine Erweiterung von WidgetKit, die dynamische Inhalte auf dem iPhone-Sperrbildschirm und in Dynamic Island anzeigt. Im Gegensatz zu einem statischen Widget, das über einen System-Timer aktualisiert wird, wird Live Activity von der App gestartet und lebt für eine begrenzte Zeit — bis zu 8 Stunden für eine aktive Activity und bis zu 4 Stunden nach Abschluss. Der Benutzer sieht aktuelle Daten, ohne das Gerät zu entsperren: Lieferstatus, Entfernung zum Ziel im Taxi, Sportergebnisse oder Trainingsfortschritt.

ActivityKit ist ein Framework für die Arbeit mit Live Activities, das in iOS 16.1 eingeführt wurde. Es bietet eine API zum Anfordern, Aktualisieren und Beenden von Activities. Eine Activity ist ein Objekt mit Inhalt und Zustand. Der Inhalt (ActivityContent) definiert statische Daten, während der Zustand (ActivityState) dynamische Daten definiert, die sich im Laufe der Zeit ändern. Das System entscheidet selbst, wann ein neuer Zustand gerendert wird — das spart Batterie und gewährleistet flüssige Animationen.

Jede Live Activity wird eindeutig durch eine ActivityID identifiziert und an einen Prozess gebunden — die App, die sie erstellt hat. Das System kann die Activity bei niedrigem Arbeitsspeicher oder niedrigem Akkustand beenden. Der Entwickler erhält eine Benachrichtigung über die erzwungene Beendigung über den ActivityKit-Delegaten und kann den letzten Zustand für die Wiederherstellung speichern.

Architektur von ActivityKit und WidgetKit

Die Live Activity-Architektur basiert auf zwei Frameworks: WidgetKit ist für das Rendern von SwiftUI-Ansichten zuständig, ActivityKit für den Activity-Lebenszyklus. Der Entwickler erstellt ein WidgetBundle mit Unterstützung für LiveActivityConfiguration. Jede Konfiguration definiert den Datentyp (Attributes und State) und eine SwiftUI-Ansicht, die das System auf dem Sperrbildschirm und Dynamic Island rendert. Daten werden über ActivityAttributes übergeben — eine Struktur mit let-Feldern für Inhalt und var-Feldern für den Zustand.

KomponenteZweckAPI
AttributesStatische Daten der gesamten Activitylet name: String, let icon: String
ContentStateDynamischer Zustand, bei Aktualisierung änderbarvar progress: Double, var status: Status
ActivityObjekt zum Anfordern und Verwalten der ActivityActivity.request(attributes:content:)
PushTokenToken für Server-Push-Updatesactivity.pushToken publisher
ActivityUISwiftUI-Ansicht für Sperrbildschirm und Dynamic IslandLockScreenView, ExpandedView, CompactView

Activity-Lebenszyklus umfasst drei Phasen: aktiv (System zeigt an und aktualisiert), final (Activity beendet, aber UI noch 4 Stunden sichtbar), entfernt (System entfernt UI). Die App kann die Activity jederzeit beenden. Das System beendet Activities auch zwangsweise — zum Beispiel beim Neustart des Geräts oder Ablauf der 8-Stunden-Grenze.

swift
import ActivityKit

struct DeliveryAttributes: ActivityAttributes {
    public struct ContentState: Codable & Hashable {
        var status: DeliveryStatus
        var estimatedMinutes: Int
    }
    var orderNumber: String
    var restaurantName: String
}

WidgetBundle registriert Live Activity über das @main-Makro: das Widget gibt eine Liste von Konfigurationen einschließlich LiveActivityConfiguration zurück. Basierend auf dieser Konfiguration weiß das System, welche Datentypen zu erwarten sind und wie die UI in verschiedenen Zuständen zu rendern ist — kompakt, minimal und erweitert für Dynamic Island.

Live Activity mit WidgetKit und SwiftUI erstellen

Eine Activity erstellen beginnt mit einer Anfrage an ActivityKit. Die App ruft Activity.request(attributes:content:pushType:) mit Anfangsdaten auf. Das System prüft, ob Dynamic Island auf dem Gerät verfügbar ist, und gibt ein Activity-Objekt zurück. Die Anfrage kann fehlschlagen, wenn das Limit aktiver Activities überschritten wird — in der Regel nicht mehr als 5 gleichzeitig. Nach einer erfolgreichen Anfrage zeigt das System das Widget auf dem Sperrbildschirm und, falls verfügbar, in Dynamic Island an.

swift
let attributes = DeliveryAttributes(
    orderNumber: "A-1234",
    restaurantName: "Pizza House"
)

let initialState = DeliveryAttributes.ContentState(
    status: DeliveryStatus.preparing,
    estimatedMinutes: 30
)

do {
    let activity = try await Activity<DeliveryAttributes>.request(
        attributes: attributes,
        content: ActivityContent(state: initialState, staleDate: nil),
        pushType: .token
    )
    print("Activity started: \(activity.id)")
} catch {
    print("Failed: \(error)")
}

Die SwiftUI-Ansicht für Live Activity verwendet die Strukturen LockScreenView, ExpandedView und CompactView aus WidgetKit. Die Ansicht empfängt den Kontext (ActivityViewContext) mit aktuellen Attributen und Zustand. Die Aktualisierung der Ansicht erfolgt automatisch, wenn ein neuer Zustand vom System eintrifft. Live Activity unterstützt nur eine begrenzte Anzahl von SwiftUI-Komponenten — Text, Image, HStack, VStack und einige Modifikatoren.

Jede Live Activity-Ansicht muss leicht und schnell sein — das System weigert sich, schwere Ansichten zu rendern. Die Rendering-Zeitgrenze beträgt 30 ms pro Frame. Animationen sind auf Systemübergänge zwischen Zuständen beschränkt — benutzerdefinierte Animationen sind in Live Activity nicht verfügbar. Das Rendern erfolgt in einem Hintergrundprozess von WidgetKit mit Priorität für die Sperrbildschirm-Reaktionsfähigkeit.

Live Activity lokal und per Push aktualisieren

Lokales Update — die App aktualisiert den Activity-Zustand durch Aufruf von activity.update(using:). Die Methode akzeptiert einen neuen ContentState und eine optionale AlertConfiguration zum Anzeigen einer Benachrichtigung bei der Aktualisierung. Lokale Updates sind schnell — das System zeichnet die Ansicht im nächsten Renderzyklus neu, normalerweise innerhalb von 1–2 Sekunden. Für häufige Updates (Timer, Stoppuhr) verwenden Sie den lokalen Modus — er ist zuverlässiger und schneller als Push.

swift
let updatedState = DeliveryAttributes.ContentState(
    status: DeliveryStatus.outForDelivery,
    estimatedMinutes: 10
)

await activity.update(
    ActivityContent<DeliveryAttributes.ContentState>(
        state: updatedState,
        staleDate: Date().addingTimeInterval(60)
    ),
    alertConfiguration: AlertConfiguration(
        title: "Order out for delivery",
        body: "Arriving in 10 min"
    )
)

Push-Updates — der Server sendet eine ActivityKit-Push-Benachrichtigung mit dem neuen Zustand im JSON-Format. Dazu empfängt die App einen pushToken vom activity.pushToken-Publisher und übergibt ihn an den Server. Der Server sendet eine POST-Anfrage an APNs mit einem Payload, der den neuen ContentState enthält. Das System empfängt den Push, dekodiert den Zustand und aktualisiert die Live Activity ohne Beteiligung der App — dies ermöglicht die Aktualisierung der Activity, auch wenn die App geschlossen ist.

Push-Updates sind für seltene Updates (Lieferstatus alle 5–10 Minuten) effizienter als lokale — die App muss keine Netzwerkverbindung aufrechterhalten. Für häufige Updates alle 1–2 Sekunden verwenden Sie die lokale Methode. Der Server-Payload enthält nur die änderbaren Felder des ContentState — statische Attributes-Daten werden nur beim Erstellen der Activity gesendet.

Live Activity in Dynamic Island anzeigen

Dynamic Island ist ein Hardware-Software-Bereich auf iPhone 14 Pro, 15 Pro und neuer, der sich an den Inhalt der Live Activity anpasst. Das System zeigt die Activity automatisch in drei Modi an: kompakt (Symbol + kurzer Text links vom Ausschnitt), minimal (nur Symbol) und erweitert (300pt Rechteck mit Informationen). Der Entwickler steuert diese Modi nicht direkt — das System wählt den Modus basierend auf Priorität und verfügbarem Platz aus.

swift
struct DeliveryLiveActivity: Widget {
    var body: some WidgetConfiguration {
        ActivityConfiguration(for: DeliveryAttributes.self) { context in
            LockScreenView(context: context)
        } dynamicIsland: { context in
            DynamicIsland {
                DynamicIslandExpandedContent {
                    ExpandedView(context: context)
                }
            } compactLeading: {
                CompactLeadingView(context: context)
            } compactTrailing: {
                CompactTrailingView(context: context)
            } minimal: {
                MinimalView(context: context)
            }
        }
    }
}

Dynamic Island unterstützt Interaktivität — der Benutzer tippt auf den Bereich und gelangt in die App oder öffnet die erweiterte Ansicht. Ein Tipp auf den kompakten Modus wechselt in den erweiterten Modus, und ein Wisch nach links versetzt die Activity in den minimalen Modus. Schaltflächen im erweiterten Modus (Pause/Abbrechen) werden über Link aus SwiftUI verarbeitet — das System startet die App mit einer Deep-Link-URL, die Verarbeitung erfolgt im UIApplicationDelegate.

Dynamic Island-Einschränkungen: die Breite des erweiterten Modus beträgt bis zu 300pt, der kompakte Text bis zu 30 Zeichen. Farben und Schriftarten entsprechen dem Systemdesign — die Anpassung ist begrenzt. Übergangsanimationen zwischen den Modi sind systemdefiniert und können nicht angepasst werden. Wenn mehrere Apps aktive Activities haben, zeigt Dynamic Island sie mit Priorität basierend auf Startzeit und Inhaltstyp an.

Häufig gestellte Fragen

Wie unterscheidet sich Live Activity von einem normalen Widget?

Ein normales WidgetKit-Widget zeigt statische Informationen an und wird über einen System-Timer mit einem Mindestintervall von 15–30 Minuten aktualisiert. Live Activity zeigt dynamische Daten in Echtzeit auf dem Sperrbildschirm und Dynamic Island an. Live Activity wird von der App gestartet, lebt bis zu 8 Stunden und wird vom System nach Ende des Ereignisses beendet, im Gegensatz zu einem Widget, das permanent existiert.

Wie oft wird Live Activity aktualisiert?

Live Activity unterstützt zwei Aktualisierungsmodi: lokal — die App aktualisiert den Zustand über die ActivityKit-API jederzeit, und Push-Update — der Server sendet eine ActivityKit-Push-Benachrichtigung, die das System in einen neuen Widget-Zustand umwandelt. Bei niedrigem Akkustand kann das System die Live Activity einfrieren, bis das Ladegerät angeschlossen wird.

Auf welchen Geräten funktionieren Live Activities?

Live Activities sind auf iPhones mit iOS 16.1 und neuer verfügbar. Auf iPhone 14 Pro und neuer wird Live Activity auch in Dynamic Island angezeigt. Auf dem iPad wird Live Activity nur auf dem Sperrbildschirm unterstützt — Dynamic Island ist auf dem iPad nicht verfügbar. Die Apple Watch unterstützt Live Activities nicht direkt, kann aber Abschlussbenachrichtigungen anzeigen.

Wie viele Live Activities können gleichzeitig ausgeführt werden?

Das System begrenzt die Anzahl aktiver Live Activities — in der Regel nicht mehr als 5 gleichzeitig für alle Apps. Der Versuch, über das Limit hinaus zu starten, gibt einen Fehler von ActivityKit zurück. Jede Live Activity kann mehrere Zustände haben — zum Beispiel ausstehend, unterwegs, geliefert für eine Essensbestellung. Nach Abschluss bleibt die Activity noch 4 Stunden in der UI.

Ist eine Benutzererlaubnis für Live Activity erforderlich?

Ja, die App muss die Erlaubnis zum Senden von Benachrichtigungen anfordern — Live Activity verwendet den Systembenachrichtigungskanal. Der Benutzer kann Live Activity für eine bestimmte App in den Einstellungen deaktivieren. Beim ersten Start zeigt ActivityKit einen Dialog zur Anforderung der Erlaubnis an. Ohne Erlaubnis schlägt die Activity-Anfrage fehl.

Zusammenfassung

  • Live Activity — dynamisches Widget auf Sperrbildschirm und Dynamic Island mit Echtzeit-Updates
  • ActivityKit — iOS 16.1+ Framework zur Verwaltung des Live Activity-Lebenszyklus
  • Attributes and State — statische Daten und dynamischer Zustand der Activity, an SwiftUI-Ansicht übergeben
  • Push-Updates — Server sendet neuen Zustand über APNs ohne App-Beteiligung
  • Dynamic Island — drei Anzeigemodi: kompakt, minimal und erweitertes Rechteck
  • Grenzen — bis zu 5 aktive Activities, bis zu 8 Stunden Lebensdauer, bis zu 4 Stunden nach Abschluss
  • AlertConfiguration — optionale Benachrichtigung bei Aktualisierung des Activity-Zustands

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