Post

Replies

Boosts

Views

Activity

ManagedSettingsStore&socialStore.shield
when i watch the video (https://developer.apple.com/videos/play/wwdc2022/110336/) i find the code let socialStore = ManagedSettingsStore(named: .social) let socialCategory = database.socialCategoryToken socialStore.shield.applicationCategories = .specific([socialCategory]) i try to find ManagedSettingsStore shield and specific([socialCategory]) i Documentation , but i failed. who can tell me wher i can find about ManagedSettingsStore shield or specific([socialCategory]) ? thanks a lot.
0
0
548
Mar ’24
Issue with Missing Application Token Data in DeviceActivityEvent
I am developing an application for managing screen time, and I encountered an issue when retrieving DeviceActivityEvent bound to a specific DeviceActivityName using the events method of DeviceActivityCenter. I noticed that the application token data bound to DeviceActivityEvent is missing. Could you help me understand why this might be happening?
1
0
497
Jul ’24
Bug in DeviceActivity
I am developing an app using DeviceActivity. let schedule = DeviceActivitySchedule( intervalStart: DateComponents(hour : 0, minute : 0, second: 1), intervalEnd: DateComponents(hour : 23, minute : 59, second: 59), repeats: true ) I found that on the second day, intervalDidStart(for: DeviceActivityName) gets called multiple times. I also tried let schedule = DeviceActivitySchedule( intervalStart: DateComponents(hour : 0, minute : 0, second: 1), intervalEnd: DateComponents(hour : 23, minute : 59, second: 59), repeats: false ) and started monitoring for the next day in the intervalDidEnd(for: DeviceActivityName) method. but , intervalDidStart(for: DeviceActivityName) still gets called multiple times. How should I resolve this issue?
0
0
476
Oct ’24
Issues with Multiple Activations and Interruption of intervalDidStart in DeviceActivity When Using ScreenTime API
I am a Swift developer using the ScreenTime API to develop an app that helps users manage app usage time on their phones. While working with DeviceActivity, I've noticed that it sometimes gets activated multiple times in succession, and occasionally, the code within intervalDidStart stops executing midway. What could be the cause of this?
0
0
329
Nov ’24
About the problem that DeviceActivityMonitorExtension does not work
I am developing an app that can help users disable selected apps at a specified time, so that users can get away from their phones and enjoy real life. Here is my data structure: extension ActivityModel { @NSManaged public var id: UUID @NSManaged public var name: String @NSManaged public var weeks: Data @NSManaged public var weekDates: Data @NSManaged public var appTokens: Data } Among them, weeks is of [Bool] type, indicating which weeks from Sunday to Saturday are effective; weekDates is of [[Date,Date]] type, indicating the effective time period; appTokens is of Set type, indicating the selected apps。 At the beginning, I will open a main monitor: let deviceActivityCenter = DeviceActivityCenter() do{ try deviceActivityCenter.startMonitoring( DeviceActivityName(activityModel.id), during: DeviceActivitySchedule( intervalStart: DateComponents(hour: 0,minute: 0,second: 0), intervalEnd: DateComponents(hour: 23,minute: 59,second: 59), repeats: true ) ) }catch { return false } Since the time range may be different every day, I will start the sub-monitoring of the day every time the main monitoring starts: override func intervalDidStart(for activity: DeviceActivityName) { super.intervalDidStart(for: activity) if activity.rawValue.hasPrefix("Sub-") { ActivityModelManager.disableApps( Tools.getUUIDFromString(activity.rawValue) ) return } let weekIndex = Calendar.current.component(.weekday, from: .now) let weeks = ActivityModelManager.getWeeks(activity.rawValue) if weeks[weekIndex] { let weekDates = ActivityModelManager.getWeekDates(activity.rawValue) let deviceActivityCenter = DeviceActivityCenter() do{ try deviceActivityCenter.startMonitoring( DeviceActivityName("Sub-" + activityModel.id), during: DeviceActivitySchedule( intervalStart: getHourAndMinute(weekDates[weekIndex][0]), intervalEnd: getHourAndMinute(weekDates[weekIndex][1]), repeats: false ) ) }catch { return } }esle { return } } I will judge whether it is main monitoring or sub monitoring based on the different activity names. When the sub-monitor starts, I will get the bound application and then disable it: static func disableApps(_ id : UUID){ let appTokens = ActivityModelManager.getLimitAppById(id) let name = ManagedSettingsStore.Name(id.uuidString) let store = ManagedSettingsStore(named: name) store.shield.applications = appTokens return } When the child monitoring is finished, I resume the application: static func enableApps(_ id : UUID){ let name = ManagedSettingsStore.Name(id.uuidString) let store = ManagedSettingsStore(named: name) store.shield.applications = [] } The above is my code logic. When using DeviceActivityMonitorExtension, I found the following problems: intervalDidStart may be called multiple times, resulting in several sub-monitors being started. After a period of time, the monitoring is turned off. The static methods enableApps and disableApps are sometimes not called
4
0
766
Mar ’25
DeviceActivityEvent will still execute even if the app is not in use
I use DeviceActivityCenter to monitor app usage. For DeviceActivityEvent, I set 30 events, and the threshold of each event increases by 2 minutes: var events: [DeviceActivityEvent.Name: DeviceActivityEvent] = [:] for index in 0..<30 { let threshold = (index == 29) ? DateComponents(hour: 1) : DateComponents(minute: (index + 1) * 2) let name = DeviceActivityEvent.Name("\(prefix)|\(index)") events[name] = DeviceActivityEvent(applications: tokens, threshold: threshold) } After reaching the last DeviceActivityEvent, I will restart directly in DeviceActivityMonitor private func restartMonitoring(activity: DeviceActivityName) { let center = DeviceActivityCenter() let currentEvents = center.events(for: activity) do { try center.startMonitoring(activity, during: schedule, events: currentEvents) } catch { print("Fail: \(error)") } } But I found that after restarting, DeviceActivityEvent will be automatically executed even if I don't use the app. My iOS version is 18.5
0
0
126
Jun ’25
DeviceActivityMonitor will automatically become invalid
I started monitoring using the following code: deviceActivityCenter.startMonitoring( DeviceActivityName(name), during: makeDailySchedule(), events: events ) Where: DeviceActivitySchedule( intervalStart: DateComponents(hour: 0, minute: 0), intervalEnd: DateComponents(hour: 23, minute: 59), repeats: true, warningTime: nil ) In DeviceActivityMonitor, I read and write data using UserDefaults and keep the logic minimal to ensure the size does not exceed 6MB. However, after a period of time, monitoring continues to fail. Why is this happening? How can I resolve this issue?
0
0
195
Sep ’25
How to Update a Live Activity from a Widget Extension When Local Notifications Are Active?
I’m manipulating some data inside a widget extension, and at the same time there is an active Live Activity (Dynamic Island / Lock Screen). How can I update the Live Activity’s local notification when the data changes? I tried accessing the current activity using Activity.activities, but it seems that this API is not accessible from inside the widget extension. What is the correct way to refresh or update the Live Activity in this case?
0
0
188
Nov ’25
ManagedSettingsStore&socialStore.shield
when i watch the video (https://developer.apple.com/videos/play/wwdc2022/110336/) i find the code let socialStore = ManagedSettingsStore(named: .social) let socialCategory = database.socialCategoryToken socialStore.shield.applicationCategories = .specific([socialCategory]) i try to find ManagedSettingsStore shield and specific([socialCategory]) i Documentation , but i failed. who can tell me wher i can find about ManagedSettingsStore shield or specific([socialCategory]) ? thanks a lot.
Replies
0
Boosts
0
Views
548
Activity
Mar ’24
How to hide app by familycontrols
I am currently developing an app to help people focus on their work. I use familycontrols , managedsettings and devie activity to develop it. I am currently facing an issue where I would like to hide the app selected by the user from the main screen and resource library. But I did not find any relevant information in the document. Who can help me.
Replies
1
Boosts
0
Views
680
Activity
Mar ’24
I have a host application and I've added an extension to it. The bundle IDs of the two are different. Do I need to apply for a separate Provisioning Profile for the extension?
I have a host application and I've added an extension to it. The bundle IDs of the two are different. Do I need to apply for a separate Provisioning Profile for the extension?
Replies
0
Boosts
0
Views
622
Activity
Apr ’24
Issue with Missing Application Token Data in DeviceActivityEvent
I am developing an application for managing screen time, and I encountered an issue when retrieving DeviceActivityEvent bound to a specific DeviceActivityName using the events method of DeviceActivityCenter. I noticed that the application token data bound to DeviceActivityEvent is missing. Could you help me understand why this might be happening?
Replies
1
Boosts
0
Views
497
Activity
Jul ’24
How to Access Core Data from Another App via App Group
I have two apps that share data through an App Group. However, I’ve noticed that when one of the apps is uninstalled, the shared Core Data model is also uninstalled. If I don't create a shared model in one of the apps, I cannot access the data. What should I do to resolve this issue?
Replies
2
Boosts
0
Views
720
Activity
Sep ’24
Bug in DeviceActivity
I am developing an app using DeviceActivity. let schedule = DeviceActivitySchedule( intervalStart: DateComponents(hour : 0, minute : 0, second: 1), intervalEnd: DateComponents(hour : 23, minute : 59, second: 59), repeats: true ) I found that on the second day, intervalDidStart(for: DeviceActivityName) gets called multiple times. I also tried let schedule = DeviceActivitySchedule( intervalStart: DateComponents(hour : 0, minute : 0, second: 1), intervalEnd: DateComponents(hour : 23, minute : 59, second: 59), repeats: false ) and started monitoring for the next day in the intervalDidEnd(for: DeviceActivityName) method. but , intervalDidStart(for: DeviceActivityName) still gets called multiple times. How should I resolve this issue?
Replies
0
Boosts
0
Views
476
Activity
Oct ’24
Issues with Multiple Activations and Interruption of intervalDidStart in DeviceActivity When Using ScreenTime API
I am a Swift developer using the ScreenTime API to develop an app that helps users manage app usage time on their phones. While working with DeviceActivity, I've noticed that it sometimes gets activated multiple times in succession, and occasionally, the code within intervalDidStart stops executing midway. What could be the cause of this?
Replies
0
Boosts
0
Views
329
Activity
Nov ’24
The same DeviceActivityEvent will be triggered twice.
When using DeviceActivityMonitorExtension, I found that when repeats in DeviceActivitySchedule is true, the same DeviceActivityEvent under DeviceActivity on the next day will be triggered twice. What I did wrong?
Replies
0
Boosts
0
Views
320
Activity
Dec ’24
DeviceActivitySchedule repeats execution
let schedule = DeviceActivitySchedule( intervalStart: startInterval, intervalEnd: endInterval, repeats: false, warningTime : DateComponents(hour : 0 , minute: 0 , second: 30) ) ``` I hope it will only be executed on the same day, but the monitoring is still there the next day. My system version is 18.2
Replies
0
Boosts
0
Views
383
Activity
Dec ’24
About the problem that DeviceActivityMonitorExtension does not work
I am developing an app that can help users disable selected apps at a specified time, so that users can get away from their phones and enjoy real life. Here is my data structure: extension ActivityModel { @NSManaged public var id: UUID @NSManaged public var name: String @NSManaged public var weeks: Data @NSManaged public var weekDates: Data @NSManaged public var appTokens: Data } Among them, weeks is of [Bool] type, indicating which weeks from Sunday to Saturday are effective; weekDates is of [[Date,Date]] type, indicating the effective time period; appTokens is of Set type, indicating the selected apps。 At the beginning, I will open a main monitor: let deviceActivityCenter = DeviceActivityCenter() do{ try deviceActivityCenter.startMonitoring( DeviceActivityName(activityModel.id), during: DeviceActivitySchedule( intervalStart: DateComponents(hour: 0,minute: 0,second: 0), intervalEnd: DateComponents(hour: 23,minute: 59,second: 59), repeats: true ) ) }catch { return false } Since the time range may be different every day, I will start the sub-monitoring of the day every time the main monitoring starts: override func intervalDidStart(for activity: DeviceActivityName) { super.intervalDidStart(for: activity) if activity.rawValue.hasPrefix("Sub-") { ActivityModelManager.disableApps( Tools.getUUIDFromString(activity.rawValue) ) return } let weekIndex = Calendar.current.component(.weekday, from: .now) let weeks = ActivityModelManager.getWeeks(activity.rawValue) if weeks[weekIndex] { let weekDates = ActivityModelManager.getWeekDates(activity.rawValue) let deviceActivityCenter = DeviceActivityCenter() do{ try deviceActivityCenter.startMonitoring( DeviceActivityName("Sub-" + activityModel.id), during: DeviceActivitySchedule( intervalStart: getHourAndMinute(weekDates[weekIndex][0]), intervalEnd: getHourAndMinute(weekDates[weekIndex][1]), repeats: false ) ) }catch { return } }esle { return } } I will judge whether it is main monitoring or sub monitoring based on the different activity names. When the sub-monitor starts, I will get the bound application and then disable it: static func disableApps(_ id : UUID){ let appTokens = ActivityModelManager.getLimitAppById(id) let name = ManagedSettingsStore.Name(id.uuidString) let store = ManagedSettingsStore(named: name) store.shield.applications = appTokens return } When the child monitoring is finished, I resume the application: static func enableApps(_ id : UUID){ let name = ManagedSettingsStore.Name(id.uuidString) let store = ManagedSettingsStore(named: name) store.shield.applications = [] } The above is my code logic. When using DeviceActivityMonitorExtension, I found the following problems: intervalDidStart may be called multiple times, resulting in several sub-monitors being started. After a period of time, the monitoring is turned off. The static methods enableApps and disableApps are sometimes not called
Replies
4
Boosts
0
Views
766
Activity
Mar ’25
How to display DeviceActivityReportScene in a widget
How to display DeviceActivityReportScene in a widget. When I was developing a widget, I found that DeviceActivityReportScene could not be displayed in the widget.
Replies
1
Boosts
0
Views
88
Activity
Mar ’25
DeviceActivityEvent will still execute even if the app is not in use
I use DeviceActivityCenter to monitor app usage. For DeviceActivityEvent, I set 30 events, and the threshold of each event increases by 2 minutes: var events: [DeviceActivityEvent.Name: DeviceActivityEvent] = [:] for index in 0..<30 { let threshold = (index == 29) ? DateComponents(hour: 1) : DateComponents(minute: (index + 1) * 2) let name = DeviceActivityEvent.Name("\(prefix)|\(index)") events[name] = DeviceActivityEvent(applications: tokens, threshold: threshold) } After reaching the last DeviceActivityEvent, I will restart directly in DeviceActivityMonitor private func restartMonitoring(activity: DeviceActivityName) { let center = DeviceActivityCenter() let currentEvents = center.events(for: activity) do { try center.startMonitoring(activity, during: schedule, events: currentEvents) } catch { print("Fail: \(error)") } } But I found that after restarting, DeviceActivityEvent will be automatically executed even if I don't use the app. My iOS version is 18.5
Replies
0
Boosts
0
Views
126
Activity
Jun ’25
DeviceActivityCenter startMonitoring Error
I found that in iOS 18.5, DeviceActivityCenter startMonitoring cannot start multiple monitors, even if their names and periods are different, and restarting the phone cannot solve it. My app uses DeviceActivityCenter, which makes the entire function unusable. (I have less than 20 monitors)
Replies
2
Boosts
0
Views
306
Activity
Jul ’25
DeviceActivityMonitor will automatically become invalid
I started monitoring using the following code: deviceActivityCenter.startMonitoring( DeviceActivityName(name), during: makeDailySchedule(), events: events ) Where: DeviceActivitySchedule( intervalStart: DateComponents(hour: 0, minute: 0), intervalEnd: DateComponents(hour: 23, minute: 59), repeats: true, warningTime: nil ) In DeviceActivityMonitor, I read and write data using UserDefaults and keep the logic minimal to ensure the size does not exceed 6MB. However, after a period of time, monitoring continues to fail. Why is this happening? How can I resolve this issue?
Replies
0
Boosts
0
Views
195
Activity
Sep ’25
How to Update a Live Activity from a Widget Extension When Local Notifications Are Active?
I’m manipulating some data inside a widget extension, and at the same time there is an active Live Activity (Dynamic Island / Lock Screen). How can I update the Live Activity’s local notification when the data changes? I tried accessing the current activity using Activity.activities, but it seems that this API is not accessible from inside the widget extension. What is the correct way to refresh or update the Live Activity in this case?
Replies
0
Boosts
0
Views
188
Activity
Nov ’25