import DeviceActivity import OSLog final class ActivityMonitor: DeviceActivityMonitor { private let logger = Logger(subsystem: "APC", category: "DeviceActivity") override func intervalDidStart(for activity: DeviceActivityName) { super.intervalDidStart(for: activity) handle(activity) } override func intervalDidEnd(for activity: DeviceActivityName) { super.intervalDidEnd(for: activity) handle(activity, ended: true) } override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { super.eventDidReachThreshold(event, activity: activity) handle(activity, event: event) } private func handle(_ activity: DeviceActivityName, event: DeviceActivityEvent.Name? = nil, ended: Bool = false) { do { try Enforcement.callback(activity: activity, event: event, ended: ended) } catch { // Never clear existing restrictions because storage is temporarily unavailable. logger.error("Screen Time callback could not reconcile state: \(String(describing: error), privacy: .public)") } } }