Hey everyone,
I have an app using the screen time api, I've had quite a few reports from users saying that our monitoring features stop working until they open our app. What happens is that activities and schedules set with the device activity monitor seem to disappear. This is something we check on app re-opens and so we schedule them again and that is why the monitoring starts working again.
Of course our current solution is not optimal since our app is mainly passive. Has anyone experienced these kinds of issue ?
Prevent access to the Screen Time API without guardian approval and provide opaque tokens that represent apps and websites.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I was experimenting with the screen time controls to see how it affected an app I am working on and I created a screen time passcode that I later forgot. Any fix? I can't find the "forgot passcode" button anywhere and I am now unable to turn off find my as a result.
I'm working with the Screen Time API (FamilyActivityPicker) in SwiftUI and need help with a specific scenario.
I'm using the FamilyActivityPicker to let users select apps and categories to block. I save the previous selection (both applicationTokens and categoryTokens) locally. When the user updates their selection, I compare the new selection with the saved one to determine which apps or categories were removed.
However, I’m trying to handle a specific case: when an individual app token is removed from the selection because its entire category was selected instead. In this situation, even though the app is no longer in applicationTokens, it's still blocked due to its category being included in categoryTokens.
Since I need to show users which apps were actually removed, I want to avoid listing apps that are still indirectly blocked via a selected category. I’ve created a mapping between ApplicationToken and FamilyActivityCategoryToken to check whether a removed app is still covered by a selected category before displaying it.
Is there any way to check this using the current Screen Time APIs, or does the system not give access to the relationship between apps and their categories? Any help or suggestions would mean a lot!
Hello,
my app is frequently loosing / forgetting the Screen Time Permission that had been granted previously on iOS 26.
I have experienced it myself, sysdiagnose is in this radar:
FB18997699
But also also my App Store users who have updated to iOS 26 already have reported this bug.
It would be great if Apple could ensure that this bug is addressed before iOS 26 is released to the public.
Topic:
App & System Services
SubTopic:
General
Tags:
Family Controls
Device Activity
Managed Settings
Screen Time
Hi all,
I’m working on a Screen Time app using Managed Settings and ShieldConfiguration, and I’ve run into an issue where screen time is still being counted while the shield is shown — even when the user never interacts with the underlying app content.
This happens both when I use the default shield and when I configure a custom ShieldConfiguration with a ShieldAction. As long as the shield is visible, the time appears to count toward the app’s usage. For example, if I leave the shield up for 20 minutes, Screen Time logs it as 20 minutes of app usage — even if no content is accessed behind the shield.
Is this expected behavior? Is there a way to prevent Screen Time from counting time while the shield is shown?
Any insights or workarounds would be greatly appreciated!
Thanks,
Connor
Hello,
I have noticed that the ShieldConfiguration is only requested when opening a target app, and never when the application token is moved to a different shield while the target app remains in foreground.
This causes problems because many times the wrong ShieldConfiguration is displayed (recycled) instead of requesting a new ShieldConfiguration.
This bug has been around since the introduction of the Screen Time API in 2020 and is has not been addressed.
Bug reports:
FB14237883
FB17902392
Please fix asap!! Not acceptable to have bugs not being addressed for more than 5 years.
Most concerning: This is still reproducing on iOS 26 beta 7!!
Thanks a lot for your help.
Topic:
App & System Services
SubTopic:
General
Tags:
Family Controls
Device Activity
Managed Settings
Screen Time
Hello everyone,
I’ve been stuck for weeks on an issue with Family Controls + Device Activity entitlements in my iOS app, and Apple Developer Support has not provided a solution so far. I’m hoping someone here who has successfully implemented Family Controls + Device Activity can point me in the right direction.
About the App
• The app is a Digital Wellbeing app called Breakloop.
• It lets users select apps they want to block, requires them to complete a positive affirmation before opening those apps, and can re-block apps after a set time (e.g., 10 minutes).
• This functionality exactly matches the purpose of Family Controls and Device Activity APIs.
What Works So Far
• Family Controls capability is enabled in the main app target in Xcode.
• We have valid Apple Developer certificates (Apple Development) and a team account.
• The main app builds and runs fine when using Family Controls alone.
• We have App IDs for:
• bl.Breakloop (main app)
• bl.Breakloop.BreakloopMonitorExtension
• bl.Breakloop.BreakloopShieldConfigurationExtension
The Problem
The provisioning profiles for the extension targets (BreakloopMonitorExtension and BreakloopShieldConfigurationExtension) do not include the com.apple.developer.device-activity entitlement even though:
• The App IDs in the Developer Portal have Family Controls (Development) enabled.
• The extensions have the correct entitlements file with both:
com.apple.developer.family-controls
com.apple.developer.device-activity
• Xcode Signing & Capabilities points to the correct provisioning profile + certificate.
Because the provisioning profiles don’t include the entitlement, the build fails with:
Provisioning profile doesn't include the com.apple.developer.device-activity entitlement.
What Apple Support Said
Apple Support told me:
• “Family Controls grants access to Device Activity.”
• They cannot enable it manually or guarantee that profiles will include the entitlement.
• They sent links to the documentation but no further assistance.
What I Need Help With
1. Has anyone successfully built extensions using Family Controls + Device Activity?
2. Do I need to request any additional approval for Device Activity, or should it appear automatically once Family Controls is enabled?
3. Is there a known Xcode or Apple Developer Portal configuration issue that causes the entitlement to be missing in provisioning profiles?
4. Any working example of a project setup that uses Family Controls + Device Activity in extensions would be extremely helpful.
Extra Info
• We use the latest Xcode + iOS SDK.
• Tried recreating certificates, profiles, and App IDs multiple times.
• Followed Apple’s docs for Family Controls + Device Activity exactly.
I would greatly appreciate any guidance, especially from someone who has this working with iOS app extensions.
Thank you!
Topic:
Code Signing
SubTopic:
Entitlements
Tags:
Entitlements
Family Controls
Device Activity
Screen Time
Hi - appreciate your help in advance!
Building a simple habit tracking app.
I got approval for FamilyControls distribution.
After creating a new provisioning profile with those capabilities enabled, when I try and build in xcode (16.4) using that Profile I get an error stating:
"Provisioning profile "CreateMoreFamilyControlsv2" doesn't include the com.apple.developer.deviceactivity and com.apple.developer.deviceactivity.reporting entitlements"
I've confirmed bundle identifier matches, Team etc
Similarly when i do automatic signing see 3rd screenshot.
Not sure what to do at this point, I've heard deviceActivity is automatically applied when family controls is approved but still running into this issue.
Hi Apple Engineers and fellow developers,
I'm a student developer working on an educational focus management app that helps users hide distracting apps during study sessions. The app consists of:
macOS app: Simple "Hide apps" button that triggers app hidding sessions
iOS app: Uses Screen Time API to temporarily hide selected apps from home screen
Communication: Bonjour networking between Mac and iPhone for session coordination
The Challenge
My app requires two entitlements that aren't available with Personal Developer Teams:
com.apple.developer.family-controls (for Screen Time API)
com.apple.developer.networking.multicast (for Bonjour device discovery)
Current Error Messages
text
Cannot create a iOS App Development provisioning profile for "focuser.focuser-app".
Personal development teams, including "My Name", do not support the
Family Controls (Development) capability.
Provisioning profile doesn't include the com.apple.developer.family-controls
and com.apple.developer.networking.multicast entitlements.
My Question for Apple Engineers
Is there any legitimate way to test these privacy-sensitive APIs on my own devices for educational/learning purposes without purchasing the $99/year Apple Developer Program membership?
I understand the security reasons behind these restrictions, but as a student just learning iOS development, it creates a significant barrier to experimenting with these technologies.
Topic:
Developer Tools & Services
SubTopic:
General
Tags:
Entitlements
Network
Family Controls
Bonjour
Here is a post to gather findings in case anyone found out what this new API does.
Apple did not include any comments or documentation and due to the generic naming we don't know what this API might does.
https://developer.apple.com/documentation/deviceactivity/deviceactivityauthorization?changes=latest_major
I want to display device activity reports for particular selected apps. for getting a daily basis app uses time. Now, what is happening? there are 10 apps selected from the family activity picker but some apps are displayed in the list. I need all 10 apps or more that I will choose from the family activity picker. The bellow code is used for fetching reports.
var body: some View {
VStack {
DeviceActivityReport(context, filter: filter)
}
}
bellow code is used for the filter
@State public var filter = DeviceActivityFilter()
init(selectedApps: Set<ApplicationToken>, selectedCategories: Set<ActivityCategoryToken>, selectedWebDomains: Set<WebDomainToken>) {
self.selectedApps = selectedApps
self.selectedCategories = selectedCategories
self.selectedWebDomains = selectedWebDomains
self.filter = DeviceActivityFilter(
segment: .daily(
during: Calendar.current.dateInterval(
of: .weekOfYear, for: .now
)!
),
users: .all,
devices: .init([.iPhone]),
applications: selectedApps,
categories: selectedCategories,
webDomains: selectedWebDomains
)
}
You can see we selected 3 apps from family activity picker but we getting 2 apps from DeviceActivityReport extension
following code is for device activity report extension
let context: DeviceActivityReport.Context = .totalActivity
// Define the custom configuration and the resulting view for this report.
let content: (ActivityReport) -> TotalActivityView
func makeConfiguration(representing data: DeviceActivityResults<DeviceActivityData>) async -> ActivityReport {
// Reformat the data into a configuration that can be used to create
// the report's view.
var res = ""
var list: [AppDeviceActivity] = []
let totalActivityDuration = await data.flatMap { $0.activitySegments }.reduce(0, {
$0 + $1.totalActivityDuration
})
for await d in data {
res += d.user.appleID!.debugDescription
res += d.lastUpdatedDate.description
for await a in d.activitySegments{
res += a.totalActivityDuration.formatted()
for await c in a.categories {
for await ap in c.applications {
if let apptoken = ap.application.token {
let appName = (ap.application.localizedDisplayName ?? "nil")
let bundle = (ap.application.bundleIdentifier ?? "nil")
let duration = ap.totalActivityDuration
let numberOfPickups = ap.numberOfPickups
let app = AppDeviceActivity(appToken: apptoken, id: bundle, displayName: appName, duration: duration, numberOfPickups: numberOfPickups)
list.append(app)
}
}
}
}
}
return ActivityReport(totalDuration: totalActivityDuration, apps: list)
}
Hi all,
For context, the Family Controls entitlement request (for the Personal Device Management category/individual use case) includes the question:
Will your app share device or usage data beyond the individual for the individual use case, or Family Sharing for the parent/guardian use case, including through means such as screenshots, screen recordings, or server logging?
I'm looking for clarification on how to interpret this. I originally answered Yes and was rejected, then later answered No and was accepted.
Ideally, I would like my screen time management app to allow users to opt-in to social features. One simple example is opting into a leaderboard with your friends for who has the lowest screen time.
If the user installed this app for themself and chooses to share this basic data with their friends, it sounds like an ethical and unproblematic feature but I suppose storing that data would fall under "server logging"?
If anyone has any experience with this, I would appreciate a more explicit description of the requirement above. Is what I described allowed?
Thanks for reading!
Topic:
App & System Services
SubTopic:
General
Tags:
Entitlements
Privacy
Family Controls
Screen Time
Bonjour le temps d’écran de mon enfant dans le partage familial ne fonctionne plus. Quand est ce qu’on aura une correction ?
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Tags:
Family Controls
Screen Time
I am working on the device activity report. and fetched data is loading on the chart. I am developing app using TabbarController. when I go to another tab and come back to the chart screen, it disappears.
Here, I am working on a storyboard using Swift language, and device activity reports can be fetched only with SwiftUI. So, the problem is with it? Following the current code.
@State private var context: DeviceActivityReport.Context = .init(rawValue: "Daily Activity")
@State private var report: DeviceActivityReport?
@State private var filter = DeviceActivityFilter(
segment: .daily(
during: Calendar.current.dateInterval(
of: .day, for: .now
)!
)
// users: .all
// devices: .init([.iPhone, .iPad])
)
@State var isReload: Bool = false
var body: some View {
ZStack {
if isReload {
LoadingView(title: "Data is loading...")
} else if let report = report {
report
} else {
DeviceActivityReport(context, filter: filter)
}
}
.onAppear {
DispatchQueue.main.async {
report = DeviceActivityReport(context, filter: filter)
}
}
}
struct LoadingView: View {
var title: String = "Please wait..."
var body: some View {
HStack {
ProgressView(title)
.font(.system(size: 14, weight: .medium))
.progressViewStyle(.horizontal)
.tint(Color(.darkGray))
.padding(8)
}
.background(Color(.white))
.cornerRadius(8)
.clipped()
}
}
Hi everyone, I need to display a Graph based on Screen-time of apps per hour, from 12Am to 11PM. Am able to get the screen-time data for whole day with each app's total screen-time value.
Am kind of confused how can I get the per hour screen-time of apps. I have applied filter of day
DeviceActivityFilter(
segment: .daily(
during: Calendar.current.dateInterval(
of: .day, for: .now
)!
),
users: .all,
devices: .init([.iPhone, .iPad])
)
Am also using this data to display apps with their usage just like Apple's Screen_time in settings.
I need to display exact same graph just like Apple's screen in phone settings for a Day.
Topic:
App & System Services
SubTopic:
Health & Fitness
Tags:
Family Controls
Device Activity
Screen Time
When I attempt to distribute my app in Xcode, I get the following error:
Can I resolve the above error by applying for permissions?
I learned from this thread that the above application was not approved by email. How can I know whether the application was approved?
In addition, from this thread, the review process may take several weeks or even 5 months. Considering that public holiday is coming, how can I speed up this process? ( I have submitted my application)
Thank you
I have noticed that when I select the app token of the youtube app to be blocked via a ManagedSettingsStore, the youtube website is blocked as well (which is a good and intended behavior IMO).
But how do I know in the ShieldConfigurationDataSource’s override func configuration(shielding webDomain: WebDomain, in category: ActivityCategory) -> ShieldConfiguration to which ManagedSettingsStore the WebDomain’s token is related?
We use different ManagedSettingsStores for different block purposes, which differentiate in their ShieldConfiguration.
Thanks a lot and have a great day!
I'm using ShieldActionExtention to make a HTTP request to a server when a user selects one of the buttons on their app shield. The apps are shielded, but nothing happens when I press one of the shield buttons. There is no message on the server signaling an HTTP request and nothing is printed to the XCode console while in debug mode.
Here is my code for my Shield Action Extention
// ShieldActionExtension.swift
// ShieldAction
//
//
import Foundation
import UIKit
import SwiftUI
import ManagedSettings
// Override the functions below to customize the shield actions used in various situations.
// The system provides a default response for any functions that your subclass doesn't override.
// Make sure that your class name matches the NSExtensionPrincipalClass in your Info.plist.
class ShieldActionExtension: ShieldActionDelegate {
override func handle(action: ShieldAction, for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void) {
print(action)
let deviceID = UserDefaults.standard.string(forKey: UserDefaultKeys.userID.rawValue)!
Task{
do{
print("sending to server")
try await PlayerLosesGame(playerID: deviceID)
completionHandler(.close)
} catch {
print("error occured on the shield")
completionHandler(.none)
}
}
}
override func handle(action: ShieldAction, for webDomain: WebDomainToken, completionHandler: @escaping (ShieldActionResponse) -> Void) {
print(action)
let deviceID = UserDefaults.standard.string(forKey: UserDefaultKeys.userID.rawValue)!
Task{
do{
print("sending to server")
try await PlayerLosesGame(playerID: deviceID)
completionHandler(.close)
} catch {
print("error occured on the shield")
completionHandler(.none)
}
}
}
override func handle(action: ShieldAction, for category: ActivityCategoryToken, completionHandler: @escaping (ShieldActionResponse) -> Void) {
print(action)
let deviceID = UserDefaults.standard.string(forKey: UserDefaultKeys.userID.rawValue)!
Task{
do{
print("sending to server")
try await PlayerLosesGame(playerID: deviceID)
completionHandler(.close)
} catch {
print("error occured on the shield")
completionHandler(.none)
}
}
//completionHandler(.close)
}
func PlayerLosesGame(playerID: String) async throws{
let url = URL(string: ServerConnection.GetWebsite() + "game/find?playerID="+playerID)!
var request = URLRequest(url: url)
request.httpMethod = "GET"
print("trying this out")
let (data, _) = try await URLSession.shared.data(for: request)
}
}
I believe all my targets are set up correctly and should be working. Why is nothing happening?
Topic:
App & System Services
SubTopic:
General
Tags:
Network
Family Controls
Managed Settings
Screen Time
Is it possible to change the title "Choose Activites" and also remove the search on the FamilyActivityPicker?
I've successfully obtained Distribution entitlements for Family Controls. However, this seems to only apply to the main target/identifier and not the extensions, like DeviceActivityMonitor, ShieldConfigurationDataSource, or ShieldActionExtension.
Did I perhaps fill out the form with the wrong bundle ID? If I go to "Certificates, Identifiers & Profiles", my main identifier for the app has the Distribution entitlement. But the extensions and the wildcard don't. This means that trying to create an archive results in the following two errors, each repeated twice:
Provisioning profile failed qualification (Profile doesn't support Family Controls (Development))
Provisioning profile failed qualification (Profile doesn't include the com.apple.developer.family-controls entitlement)
Note that my entitlement files are set up correctly.
Do I need to fill out the form with a wildcard instead? Or am I doing something wrong? Thank you.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
Entitlements
Family Controls