import ActivityKit import SwiftUI @available(iOS 16.2, *) final class LiveActivityManager { static func startActivity(_ attributes: T, content: ActivityContent) throws -> Activity { return try Activity.request(attributes: attributes, content: content, pushType: nil) } static func update(_ activity: Activity, content: ActivityContent) { Task { await activity.update(content) } } static func stop(_ activity: Activity) { // semaphore is used for removing the activity during the app termination let semaphore = DispatchSemaphore(value: 0) Task { await activity.end(nil, dismissalPolicy: .immediate) semaphore.signal() } semaphore.wait() } }