Files
ios-advanced-parental-controls/ios/Monitor/ActivityMonitor.swift
T
2026-09-17 17:59:34 +02:00

27 lines
1.1 KiB
Swift

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)")
}
}
}