I'm developing a parental control app that needs to block adult/18+ websites using the Screen Time API. I've run into scaling issues with 'ManagedSettings.webContent.blockedByFilter`.
Environment:
iOS 18.x, real device (iPhone)
ManagedSettings framework
Screen Time permissions granted
Current Behavior:
The Question:
Commercial parental control apps successfully block tens of thousands of domains. What API or architecture should I be using to scale beyond 30-50 domains?
Approaches I'm considering:
Safari Content Blockers (limited to Safari only)
Multiple ManagedSettingsStore instances
Network Extension / DNS filtering
A different Screen Time API approach
What's the recommended way to block large domain lists (1000-60000+) across all apps and browsers?
Any guidance appreciated!
//33 domains - Works perfectly
let blockedSites: Set<WebDomain> = [
WebDomain(domain: "example1.com"),
WebDomain(domain: "example2.com"),
// ... 31 more domains
]
store.webContent.blockedByFilter = .specific(blockedSites)
// All 33 domains blocked successfully
// 101 domains - Complete failure (no domains blocked at all)
let blockedSites: Set<WebDomain> = [
WebDomain(domain: "example1.com"),
// ... 100 more domains
]
store.webContent.blockedByFilter = .specific(blockedSites)
// No errors thrown, but ZERO domains are blocked
General
RSS for tagDelve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
How can experimentation and testing calling the AgeRangeService.shared.requestAgeRange() functionality be recreated easily?
The very first time I ran this the OS popped up a dialog, however it won't do so again, even after the app is deleted and the device re-started.
If one navigates to Settings/User/Personal Information/Age Range for Apps/Apps that have requested your age range appear here.
Then the names of apps appear here even after the app has been deleted. Therefore how can it be removed from this section?
Erasing and resetting the phone will presumably reset things back to a state such that the dialog can be presented again. But doing that and having to wait for that to complete each development or test run is impractical.
Is there an alternative?
Topic:
App & System Services
SubTopic:
General
find my在添加配件是,持续一直卡在“即将完成设置”这一步.这是由于什么原因呢?而且一直保持很长时间,也不会退出,也不会提示任何错误信息。
Hi,
I am just wondering if there is any option to protect my endpoints that will be used by Message Filtering Extension?
According to the documentation our API has 2 endpoints:
/.well-known/apple-app-site-association
/[endpoint setup in the ILMessageFilterExtensionNetworkURL value of the Info.plist file] that the deferQueryRequestToNetwork will request on every message
Since all requests to these 2 endpoints are made by iOS itself (deferQueryRequestToNetwork), I don't understand how I can protect these endpoints on my side, like API key, or maybe mTLS.
The only way that I found is white list for Apple IP range.
Is there other methods for it?
I am building a screen time management app. It has the main app target, and then three extensions - those are the four targets in Xcode. The three extensions are:
Shield
Device Activity Monitor
Device Activity Report Extension
I requested "Family Controls (Distribution)" capability from Apple for the main app target / bundle ID, and it got approved.
Do I need it for the extensions too? Because previously I had "Family Controls (Development)" for the extensions...
Hi,
I’m trying to open a GPX file (route.gpx) from the Files app on my iPhone using my app (e.g., Aqua Map).
Since the latest iOS update (iOS 26), when I long-press the file and tap “Open with…”, my app does not appear in the list anymore.
I’ve checked that my app has the correct permissions for Files and Folders. I’m wondering:
Is this a user-side issue (Settings on iPhone)?
Or does it require developer-side changes in the app (Info.plist / UTI declarations) to make .gpx files appear in “Open with…” or “Share” menus?
What is the proper way to make my app appear as an option to open GPX files in Files.app on iOS 26?
Thanks in advance!
Explanation of the issue
When tethering is enabled and a wireless connection is established,
there are instances where an IP address is not assigned.
Steps to Reproduce the Issue (if possible)
Enable iPhone tethering and connect wirelessly using 11ax.
Expected Result
The iPhone assigns an IP address, enabling network connectivity.
Actual Result Observed
DHCP negotiation failed.
After attempting communication with the DHCP server via DHCP Discover, a DHCP Offer was returned from the iPhone.
If this was missed, it would retry by performing another DHCP Discover.
However, the iPhone does not issue a DHCP Offer no matter how many times it retries.
The IP address is not assigned unless the wireless connection is disconnected and reconnected.
If the initial Discover is missed, does this invalidate subsequent Offer retries?
The above issue has been confirmed on iPhone 17 Pro and iPhone 16. It does not appear to occur on iPhone 15.
Hello,
Back in January 2024, I filed a bug report regarding a cache being kept by the macOS Wallpaper Agent. This cache contains every image ever set as a users wallpaper, and at the time the issue was reported, it never cleared, leaving hundreds of gigabytes wasted on users disks in some cases.
FB13536275
This issue was ultimately fixed in macOS 15.1 beta 6, and remained fixed for the duration of macOS 15. The fix was excellent - the cache was reduced to storing just 2-3 days worth of images.
Sadly, we've discovered that this issue is back in macOS Tahoe. The cache has moved locations, and once again is not clearing. We have filed this bug again, less than a year after it was first fixed:
FB20636593
We develop an app called 24 Hour Wallpaper that keeps the wallpaper in sync with the time of day. This necessitates that the app regularly changes the wallpaper, which sadly now results in an infinitely growing and useless cache of BMP files generated by the system.
As we waited 10 months for this to get fixed the first time, we expect to wait at least that long to get it fixed again, and have no confidence that it will stay fixed because the last fix lasted less than a year. This leaves us in a bad position, as people can't use our app without the cache growing arbitrarily and ultimately completely filling their disk.
We've already had customers call Apple to complain about this, and the good news is that the support agents understand that this is a problem with macOS, not with our app.
What we've decided to do is add a feature to the app that monitors the size of this cache and periodically deletes it. We're required to get the users permission the first time to do this, but after that the permission is cached, so the app can keep the cache folder clean regardless of if macOS is doing it's job or not.
We haven't seen any side effects or problems as a result of doing this. We've seen other apps like CleanMyMac do this without any problems. We're wondering if there is anything we should be aware of regarding this caches behavior before releasing this flushing feature.
Thanks for your time,
-josh
On macOS, one can set the "Open With ..." application in the information panel of a file without changing the default for this file type. However, doing this for a number of files is very tedious. A simple case is to change all .txt files in a directory to a special editor, but leave the system wide default (usually TextEdit). I have tried AppleScript, command line tools as well as a minimal GUI app (using LSSetItemAttribute), but all fail because of a lack of permission. Is there any way to achieve this?
In recent versions, the increase in background abnormal exits is significant. According to monitoring data, it is closely related to the iOS 26 system. Could you please look into the reasons or provide some suggestions for troubleshooting the issue?
crash.txt
Hello Team,
We are currently experiencing a challenge deploying our application to the production environment. This is because the previous deployment was done using an old account, whereas we have now created a new organizational account that we are using to deploy the updated and modified version of the application.
Kindly advise on the best practice to resolve this and proceed with the deployment.
Topic:
App & System Services
SubTopic:
General
We are not receving incoming call from blocked numbers below iOS 26 versions but same in iOS 26 onwards we are receiving the incoming call..
Can you please provide any solutions to fix the issue
I have a question regarding CarKeyErrorCode in the CarKey framework.
I plan to use the following methods in the CarKey framework:
CarKeyRemoteControl.start
CarKeyRemoteControlSession.vehicleReports
CarKeyRemoteControlSession.perform
RemoteKeylessEntryAction.ExecutionRequest.results
Each of the above methods throws an Error. Are these different from CarKeyErrorCode?
Is CarKeyErrorCode only used in CarKeyRemoteControlSessionDelegate.remoteControlSession(_:didInvalidateWithError:)?
If methods 1-4 do not return CarKeyErrorCode, what kind of Error do they return?
Thank you in advance.
Hello, developers! I’m interested in adding my native language and flag to iOS, iPadOS and MacOS. Could you please recommend a solution or provide some valuable advice on how to achieve this? I’d greatly appreciate your assistance. Thanks!
I'm working on adding MetricKit to our iPad application that we distribute internally via Enterprise distribution. I've set up the didReceive functions for both MXMetricPayload and MXDiagnosticPayload.
When I build onto a device via Xcode and use the Simulate MetricKit Payloads command, everything works as expected. The issue I'm having is when testing on a device via our enterprise distribution.
When I simulate a crash, I am receiving the MXDiagnosticPayload so that part is working correctly. However, I am never receiving a MXMetricPayload. I've been using the app and waiting up to 3 days in some tests and not receiving any payload over that time frame.
Some information I found suggested the issue might be MetricKit not working fully on enterprise apps but I haven't been able to find a definitive source on that question. Hoping someone here can guide me on that. Thanks!
We use SCK to screen share, however [SCShareableContent getShareableContentWithCompletionHandler:] takes over 5+ seconds before returning the response. Is it normal? What we can do to reduce the time consumption?
Call Screening has serious issues right now leading to missing calls from genuine callers because the system does not acknowledge them with missed call notifications or badges in a lot of cases. I'm posting this in the hope of catching an engineer who can bring this to the attention of the teams working on this.
Filed as FB20678829
—
I ran the following tests with iOS 26.1 beta 3, but the issues have been occurring on iOS 26.0 as well.
I used an iPhone, Apple Watch, iPad, and Mac for this.
The iPhone has Call Screening enabled with the option „Ask Reason for Calling“
The iPhone has call forwarding enabled to all devices.
Test 1: Active Focus
Turn on a focus like Do not Disturb on all devices.
Lock all devices.
Make a phone call to the iPhone with an unknown number.
Behavior:
iPhone: displays Call Screening UI on the Lock Screen, but it will not light up the screen. You don’t know Call Screening is happening unless you activate the display just in that moment on devices without Always On Display.
Watch: does nothing.
Mac: does nothing.
iPad: displays Call Screening UI on the Lock Screen, but it will not light up the screen. You don’t know Call Screening is happening unless you activate the display just in that moment.
In this test the caller does not answer any of the Call Screening questions and just hangs up. The result is that only the Mac displays a missed call notification. iPhone, iPad, and Watch do not acknowledge the missed call (no phone app icon badge, no notification, no badge inside the Phone app itself), you can only see the call inside the Calls list when manually looking for it.
Test 2: No Focus
Turn off any focus like Do not Disturb on all devices.
Lock all devices.
Make a phone call to the iPhone with an unknown number.
Behavior:
iPhone: displays Call Screening UI on the Lock Screen, but it will not light up the screen. You don’t know Call Screening is happening unless you activate the display just in that moment on devices without Always On Display.
Watch: does nothing.
Mac: displays Call Screening UI when unlocked.
iPad: displays Call Screening UI on the Lock Screen, but it will not light up the screen. You don’t know Call Screening is happening unless you activate the display just in that moment.
In this test the caller does not answer any of the Call Screening questions and just hangs up. The result is that only the Mac displays a missed call notification. iPhone, iPad, and Watch do not acknowledge the missed call (no phone app icon badge, no notification, no badge inside the Phone app itself), you can only see the call inside the Calls list when manually looking for it. The only improvement here is that the Mac now shows the Call Screening UI.
Test 3: Caller answers Call Screening questions
An active focus does not matter.
Lock all devices.
Make a phone call to the iPhone with an unknown number.
Once the caller answered the Call Screening questions, the following happens:
All devices ring like expected
When the caller hangs up or I don’t answer:
Mac: Shows Missed Call notification without details
iPhone: Shows Missed Call notification with transcript of Call Screening (also badges phone app icon)
iPad: does nothing.
Watch: Shows the mirrored iPhone notification.
Things to note:
When turning off call forwarding on iPhone to other Apple devices like iPad and Mac, the phone app icon is always badged for missed calls when Call Screening was active, but no notification is displayed regardless.
Hello all,
I'm developing a Mac app and need to read the content of incoming SMS, I am able to implement in android just the user has to consent and it does not read her contacts messages, so I am wondering if apple can allow this.
class ShieldActionExtension: ShieldActionDelegate {
override func handle(action: ShieldAction, for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void) {
// Handle the action as needed.
switch action {
case .primaryButtonPressed:
if let url = URL(string: "blockfocusapp://") {
let extensionContext = NSExtensionContext()
extensionContext.open(url, completionHandler: nil)
}
//
completionHandler(.defer)
case .secondaryButtonPressed:
let userDefaults = UserDefaults(suiteName: "group.in.appsquare.FocusApp.shieldExt")
userDefaults?.set(false, forKey: "shouldOpenMainApp")
completionHandler(.defer)
@unknown default:
fatalError()
}
}
override func handle(action: ShieldAction, for webDomain: WebDomainToken, completionHandler: @escaping (ShieldActionResponse) -> Void) {
// Handle the action as needed.
completionHandler(.close)
}
override func handle(action: ShieldAction, for category: ActivityCategoryToken, completionHandler: @escaping (ShieldActionResponse) -> Void) {
// Handle the action as needed.
completionHandler(.close)
}
}
I want to be able to open my app from ShieldActionExtension