Is there any way to use the screen time API on Mac?
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
Activity
My ASA file is located here https://staging.docyt.com/apple-appsite-association It downloads fine. It does not have .json extension and neither does it reside inside the ./well-known folder. Should it work? Because opening the link https://staging.docyt.com/reset-password is not opening the app installed via TestFlight . Installing via XCode however works fine. Please help
How can I use the Screen Time API to set a restriction for a child account from my app running on the parent’s account?
Hello,
If I fire an alarm using AlarmKit, using a ringtone that lengths less than 30 seconds, in the last version of iOS (26.0) the sound doesn't repeat. (After about 30 seconds, the sounds stops).
BUT in the current version of iOS (26.1), the sound repeats until we slide Stop, thing that I doesn't want.
So, is there a way to restore the previous behavior? Or is there a property that can fill this lack?
Thank you very much.
Topic:
App & System Services
SubTopic:
General
When fetching Apple Savings transactions via FinanceKit, the data is missing key context about where the deposit originated from.
Here’s an example transaction I retrieved:
Transaction(
id: 77371A0C-7122-42C7-BEBC-85BDF654AD2B,
accountID: 68D9FE9D-6DA6-4A27-BB9D-19209CD29A56,
transactionAmount: 1.46 USD,
creditDebitIndicator: .credit,
transactionDescription: "Deposit",
originalTransactionDescription: "",
merchantCategoryCode: nil,
merchantName: nil,
transactionType: .deposit,
status: .booked,
transactionDate: 2025-08-20 13:44:26 +0000,
postedDate: 2025-08-20 13:44:26 +0000
)
As shown:
transactionDescription is just "Deposit"
merchantName is nil
No indication of the source account
In contrast, the Wallet app clearly shows context for Apple Savings account deposits, such as:
"Apple Card" (daily cash)
"Bank of America" (external transfer)
"Interest Paid" (we do see "Interest" come through correctly)
Without this metadata, third-party apps cannot replicate Wallet’s clarity about where a deposit came from. Every deposit simply appears as "Deposit", which is ambiguous.
Request:
Please expose additional metadata for Apple Savings account transactions, for example:
sourceAccountName (e.g. “Apple Card” or “Bank of America”)
transactionOriginType (cashback, external bank transfer, interest)
institutionIdentifier or similar for external banks
This would allow developers to show clear, Wallet-quality transaction details and avoid confusing users.
Impact:
The lack of source info makes Savings deposits nearly indistinguishable from one another, even though Wallet provides this context. For apps leveraging FinanceKit, this results in a poorer experience compared to Apple’s own Wallet.
Thanks!
Topic:
App & System Services
SubTopic:
General
I'm working on an app for iOS that will help people get tasks done.
Within the app, we use a ManagedSettingsStore to let the user setup distracting apps. When the user opens any of those apps while it is being shielded, our ShieldConfiguration target opens and displays a screen that we configure with the description of the task they are supposed to do. On the bottom of the view, there are two buttons, one to start the task, and another to dismiss and return to their home screen.
I want to have the button that starts the task open up the main application and deeplink to the focus view with the task that they started. Currently, the only thing that we can tell the system to do is via a ShieldActionResponse which is an enum with 3 cases: none, close, or defer.
None of these three allow us to open the main application. I have found no workarounds that allow us to do it either. I've tried creating a custom URL scheme and calling UIApplication.shared.open(url), but there is no shared application available within the action extension. I have tried using a NSExtensionContext to open a url, but that does not work either. I have even tried starting a live activity to show the user what task they are working on and have a live timer, but that does not work either.
I know it is technically possible, because an app I downloaded does it perfectly. The app is called "Ascent: Screen Time Control". Is there some sort of extension I am missing, or entitlement I have not requested? Any help would be very appreciated.
Topic:
App & System Services
SubTopic:
General
Tags:
Family Controls
Device Activity
Managed Settings
Screen Time
Hi all — I’m building a Wallet-style transaction details view using FinanceKit and I’m running into a gap around merchant location.
What I’m seeing
FinanceKit gives me great core fields (amount, currency, status, dates, MCC, merchantName, transactionDescription), but I’m not seeing any address or place/location metadata on a Transaction.
For example, a small/local merchant where I can plausibly infer a single place:
Fetched transaction:
Transaction(
id: 8D142B16-3E0E-40B8-945A-2E7C0CF65F1D,
accountID: 14939CF4-DBC3-4A9D-8292-5FEA495B8461,
transactionAmount: 47.24 USD,
creditDebitIndicator: .debit,
transactionDescription: "Local Dental Care",
originalTransactionDescription: "Local Dental Care",
merchantCategoryCode: 8021,
merchantName: "Local Dental Care",
transactionType: .pointOfSale,
status: .booked,
transactionDate: 2025-08-20 22:27:50 +0000,
postedDate: 2025-08-21 11:22:06 +0000
)
Because this appears to be a single-location practice, I can usually resolve it to a place using MapKit search heuristics.
But for big-box chains, I don’t get enough signal to determine which store:
Fetched transaction:
Transaction(
id: 3F8E9F74-7565-4D24-9038-8FD709184799,
accountID: 14939CF4-DBC3-4A9D-8292-5FEA495B8461,
transactionAmount: 441.77 USD,
creditDebitIndicator: .debit,
transactionDescription: "The Home Depot",
originalTransactionDescription: "The Home Depot",
merchantCategoryCode: 5200,
merchantName: "The Home Depot",
transactionType: .pointOfSale,
status: .booked,
transactionDate: 2023-12-27 23:07:02 +0000,
postedDate: 2023-12-29 03:09:41 +0000
)
There’s no store number, address, phone, or any stable identifier. With hundreds of locations, I can’t deterministically choose a map pin or fetch the right brand assets.
What I’m trying to achieve
I’d like to replicate the Apple Wallet experience: show a small map snapshot and merchant visuals (logo/name that match Apple Maps / the Place Card) on the transaction detail screen. Without a location hint, I have to either:
Ask users to pick a store manually, or
Make a guess based on a coarse, app-defined region
…neither of which feels great.
Questions
Is there any way in FinanceKit today to access merchant location or a resolvable identifier (e.g., address, city/state, store number, Apple Maps place identifier, network merchant ID/MID, terminal ID, etc.)?
If not, can FinanceKit expose additional merchant metadata (even opt-in / privacy-preserving) to enable Wallet-like enrichment? A few examples that would unblock this:
merchantAddress (or components: street/city/region/postalCode/country)
merchantPhone (often unique per store)
merchantIdentifier (stable per physical location, e.g., network merchant ID / store number)
mapsPlaceURL or mapsPlaceIdentifier (linkage to the Apple Maps Place Card)
brandAssetURL (logo/brand reference similar to what Wallet shows)
With even one of the above, I could reliably:
Render an accurate map snapshot,
Fetch the correct brand assets, and
Avoid prompting the user or inferring via fuzzy search.
Context / constraints
I do not want to (and shouldn’t need to) request or monitor the user’s device location to resolve a merchant’s store location.
For small merchants, MapKit text search is often enough. For large chains, I need a store-level identifier.
If there’s an existing field or recommended approach I’m missing, I’d love pointers. If not, please consider this a feature request for richer merchant metadata in FinanceKit so developers can build Wallet-quality transaction details.
Thanks!
Topic:
App & System Services
SubTopic:
General
Does WeatherKit Rest api have the following forecast endpoints?
Pollen and Flu
Air quality
Radar forecast served through a REST API?
Hail
Solar energy
Frost Potential Index
I just adding a way to donate my app's data to Core Spotlight using CSSearchableIndex, but I'm finding that spotlight is only searching for the title of the CSSearchableItem I create. I know the index is working, because it always finds the item through the title property, but nothing else.
This is how I'm creating the CSSearchableItem:
- (CSSearchableItem *) createSearchableItem {
CSSearchableItemAttributeSet* attributeSet = [[CSSearchableItemAttributeSet alloc] initWithContentType: UTTypeText];
attributeSet.title = [self titleForIndex];
attributeSet.displayName = [self titleForIndex];
attributeSet.contentDescription = [self contentDescriptionForIndex];
attributeSet.thumbnailData = [self thumbnailDataForIndex];
attributeSet.textContent = [self contentDescriptionForIndex];
CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier: [self referenceURLString] domainIdentifier:@"com.cjournal.cjournal-Logs" attributeSet:attributeSet];
item.expirationDate = [NSDate distantFuture];
return item;
}
There's a lot of confusing tips around which say specifying the 'textContent' should work, and/or setting the displayName is essential, but none of these are working.
Is there something I'm missing with my setup?
Thanks.
I tried with VSUserAccountManager.shared.requestAutoSignInAuthorization(). It did prompt a popup but with errors.
I do have 'com.apple.smoot.subscriptionservice' configured in the entitlement. I don't know what's happened? Could you help me out.
Hey folks!
I'm working on a macOS app which has a Finder Quick Action extension. It's all working fine, but I'm hitting a weird struggle with getting the icon rendering how I would like, and the docs haven't been able to help me.
I want to re-use a custom SF Symbol from my app, so I've copied that from the main app's xcassets bundle to the one in the extension, and configured it for Template rendering.
The icon renders in the right click menu in Finder, the Finder preview pane and the Extensions section of System Settings, but all of them render with the wrong colour in dark mode. In light mode they look fine, but in dark mode I would expect a templated icon to be rendered in white, not black.
I've attached a variety of screenshots of the icons in the UI and how things are set up in Xcode (both for the symbol in the xcassets bundle, and the Info.plist)
I tried reading the docs, searching Google, searching GitHub and even asking the dreaded AI, but it seems like there's not really very much information available about doing icons for Finder extensions, especially ones using a custom SF Symbol, so I would love to know if anyone here has been able to solve this in the past!
Finder preview pane in light mode:
Finder preview pane in dark mode:
Finder quick action context menu:
System Settings extension preferences:
The custom symbol in my .xcassets bundle:
The finder extension's Info.plist:
We have received some information that with the release of iOS 18, there have been notable changes in how this API behaves, can apple team shed some light on this? on ios 17 this worked without much issues, what has changed on ios 18?
When my Share Extension receives an image from the macOS Photos app on Tahoe, the NSItemProvider passes a URL to an image file in a temporary location.
All attempts to read that file fail silently, such as with NSImage(contentsOfFile)
I can see that the file does exist in Finder.
This code did work in previous macOS versions.
It seems like a permissions issue, but startAccessingSecurityScopedResource had no effect.
Other platforms work, other apps work, such as shares from Finder, which shares via data instead of a url.
I'm really stuck. Has anyone else run into this?
// make sure provider has a conforming item
if itemProvider.hasItemConformingToTypeIdentifier(imageType)
{
do {
let data = try await itemProvider.loadItem(forTypeIdentifier: imageType, options: nil)
// data may be image NativeImage, Data, or a URL to an image file.
// figure out which by casting, then attempt to load uiImage
if let image = data as? NativeImage {
print("found NativeImage")
self.images.append(image)
}
else if let data = data as? Data {
print("found Data")
if let image = NativeImage(data: data) {
self.images.append(image)
}
} else if let url = data as? URL{
print("found URL")
if let image = NativeImage(contentsOfFile: url.path) {
print("loaded from URL")
self.images.append(image)
}
}
}catch{
print("⛔️ Share Extension Error: \(error.localizedDescription)")
}
}
Hi,
I developed an iOS app which will do SMS filtering by following this documentation. https://developer.apple.com/documentation/identitylookup/sms-and-mms-message-filtering)
I built the app and send Test Flights to different testers. All the Testers from Sri Lanka (an asian country) says filtering is working and they can see all the enabled categories on the Messages too (including iOS 26). But the testers from Mexico cannot see the categories and filtering is not working.
On official documentation there is nothing about supported countries. But I found true caller article https://support.truecaller.com/support/solutions/articles/81000406341-how-do-i-enable-sms-filtering-on-iphone mentioning it support only few countries for SMS filtering.
Currently available in the following countries: India, Nigeria, South Africa, Kenya, Bangladesh, Sri Lanka.
Our previous Categories filtering are still available for: Australia, Bahrain, Canada, Ghana, Tanzania, United Kingdom, United Arab Emirates, United States of America, Zambia
Following article https://clearstream.io/blog/ios-26-iphone-new-text-message-filtering is saying some categories are supported by only Brazil and India.
Still I could not find any official documentations saying different country supports.
Hello,
I noticed the new entitlement in iOS 26 under LiveCommunicationKit: Preparing your app to be the default dialer app.
My question is about eligibility:
If a developer account is registered in the EU, can any app add the Default Dialer capability, or is it restricted only to apps that provide real calling/communication functionality (e.g., WhatsApp, Telegram, Skype)?
If granted, does this capability allow the app to make/receive cellular calls and access call history, or is it limited only to VoIP-style scenarios through CallKit integration?
What are the minimum functionalities required to support this feature (e.g., having a dial pad, call history screen, etc.)?
Why must the developer account be registered in the EU to use this entitlement?
Thanks in advance for the clarification!
In release mode, the values are missing. I don't know what's wrong with it. If I install the debug version first and then overwrite it with the release build, I can retrieve the values stored in debug mode. But if I uninstall completely and install the release version directly, it's empty
in beta5 now the custom sound configuration works and it actually plays sound when alarm runs off BUT the sound is played only for once. has anyone figured out on how to put it on repeat? or do I have to wait on this for another couple of weeks💀
Topic:
App & System Services
SubTopic:
General
Hello everyone,
I’m developing an app using the FamilyControls framework, I distributed through TestFlight the other day using the “Family Controls” distribution (not Development). Everything works as expected in dev builds — but for external TestFlight testers, nothing in the FamilyControls framework seems to function.
I'm using the correct Family Controls capability in Xcode (added via Signing & Capabilities).
The com.apple.developer.family-controls entitlement is present in my .entitlements file.
All the users who reported the issue had correctly given screen time permissions to the app.
Would really appreciate some help regarding where the issue could come from.
At WWDC25 we launched a new type of Lab event for the developer community - Group Labs. A Group Lab is a panel Q&A designed for a large audience of developers. Group Labs are a unique opportunity for the community to submit questions directly to a panel of Apple engineers and designers. Here are the highlights from the WWDC25 Group Lab for watchOS (part 1).
1. I'm really excited about the new design system on all platforms. Liquid Glass is super cool. What do developers need to keep in mind when building for watchOS 26?
To adopt the new design system, start with updating your app for watchOS 10 – If you have done so, your app will be mostly ready for watchOS 26. For more information, see Design and build apps for WatchOS 10.
You can then look into Liquid Glass specific APIs to fine tune your app. This topic is covered in Adopting Liquid Glass.
If you have SwiftUI views using any custom style, make sure they are still legible and fit with the new design system.
2. Something that really stood out to me were updates to the Smart Stack, with the system prioritizing Widgets when they're most relevant. Tell me more about these new opportunities for apps.
Workout apps that record workouts using HealthKit may be automatically suggested on the watch face and appear in the Smart Stack without adding a widget.
Relevant widgets are a great way to present information related to a date, location, point-of-interest type, sleep schedule, or fitness condition in the Smart Stack when it is relevant. Relevant widgets don't need to display a empty state view when they are not relevant. They are only shown in the Smart Stack when relevant.
The watchOS 26 Design ToolKit in the Apple Design Resources includes a set of templates that you can use to layout your widgets.
3. Is the Wrist Flick gesture available to developers in the same way as Double Tap is?
The system uses Wrist Flick to dismiss notifications and incoming calls, silence timers and alarms, or return to the watch face. There is no separate API for the Wrist Flick gesture.
Apps that are using XCUIAutomation to make sure their user interface behaves as intended can use the XCUIDeviceHandGesture.flick to automate tests that verify that their app responds appropriately to the Wrist Flick gesture. For apps using automated testing, the XCUIDeviceHandGesture.doubleTap can be also be used to automate testing of the app with the Double Tap gesture. See XCUIDevice.perform(handGesture:)
4. Can HRV measurements be triggered on demand via API in watchOS? Guidelines or processes for enabling energy-intensive biometric sampling on development devices for IRB-approved research?
You don’t have direct control on the sampling rate in watchOS. You can use HealthKit (HKQuantityTypeIdentifierHeartRateVariabilitySDNN, to be specific) to query the HRV data, once the system has sampled and persisted the data to HealthKit. If that doesn’t help, we suggest that you file a feedback report with your concrete use case for us to investigate.
Specific to IRB-approved research using Apple Watch or its companion iPhone, you might want to look at this FAQ and SensorKit to see if they can be of any help.
5. What is the best advice for someone who is new to making a watchOS app that’s been on iOS and iPadOS?
You can start with exploring the system experience features on watchOS, such as notifications, controls, and widgets, and getting familiar with the system spaces, like Smart Stack, watch face, and control center.
Knowing the watchOS app design principles and practices is important as well. Design and build apps for WatchOS 10 is a great resource for this topic.
SwiftUI is an amazing across-platform framework, and you will use it to create your watchOS app. If you're already using it, great!
Keep in mind some watch-only constraints. Comparing to iPhone or iPad, Apple Watch has a limited battery and smaller screen size, which significantly impacts how people use your app and how your app works.
6. Was there any extension this year to the 7 day limit on querying Apple Health data on the watch?
There is no change on the limit this year. You can get this official limit at runtime using earliestPermittedSampleDate.
There are some exceptions, and so don't be surprised if you see some data types are retained longer.
The companion iPhone holds the full set of the health data. If you need to access the health data that has been purged from the Apple Watch, consider doing it with your iOS app, and then passing the result to your watchOS app.
I've discovered a bug in the Phone app on iOS related to how long verdicts are displayed.
When a call is identified by a third-party Caller ID app, long verdicts display correctly during the call (they auto-scroll) and in the call log (with an ellipsis at the end). However, on the call details screen, the text is strangely truncated - showing only the beginning of the string and the last word.
For testing, I used this verdict: "Musclemen grow on trees. They can tense their muscles and look good in a mirror. So what? I'm interested in practical strength that's going to help me run, jump, twist, punch."
I'll attach a screenshots demonstrating the problem: