Delve 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.

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Age verification: How to obtain the method of age assurance?
In the summary documentation about the declared Age Range API:https://aninterestingwebsite.com/news/?id=2ezb6jhj It states: "The API will also return a signal from the user’s device about the method of age assurance, such as credit card or government ID" But if the api itself, and its documentation is examined, there is no such mechanism nor mention of it: https://aninterestingwebsite.com/documentation/declaredagerange/agerangeservice So my question is, is the first documentation incorrect, if not, then where and how to access the method of age assurance?
1
1
170
Nov ’25
Apple-hosted managed asset pack not found on macOS
Hi all, I have set up a trivial test project to try Apple-hosted background assets following the instructions in the three articles at https://aninterestingwebsite.com/documentation/backgroundassets. When I run the local mock server with xcrun ba-serve and set the URL override in Settings as described in the "Testing asset packs locally" article, I am able to download a test pack on my iOS devices. On the Mac that I use to run the mock server, however, the same call to AssetPackManager.shared.assetPack(withID: "TestAssetPack") that works on iOS always reports The asset pack with the ID “TestAssetPack” couldn’t be looked up: No asset pack with the ID “TestAssetPack” was found. even when not running the mock server, which led me to believe that it may not be hitting it at all. In fact, the macOS app will download asset packs uploaded to App Store Connect even when running the local server and setting the xcrun ba-serve url-override to the exact same string as in Settings on iOS. My initial suspicion was that something is wrong with the URL override, so I have tried all combinations of the Mac's hostname, IP address or "localhost" (with the corresponding SSL certificates) with and without port 443, always prefixing with "https://" for the url-override. All the same. Does anyone have an idea what may be the issue here? My asset pack has the following manifest: { "assetPackID": "TestAssetPack", "downloadPolicy": { "onDemand": {} }, "fileSelectors": [ { "file": "TestAsset.txt" } ], "platforms": [ "iOS", "macOS" ] } I am running v26.1 for macOS, iOS & Xcode. Edit: Just to be clear, my assumption here is that the URL overrides (in Settings on iOS or via ba-serve on macOS) is what should cause the app to hit the mock server. Is that correct or am I missing something?
12
0
593
Mar ’26
TipKit: Are tips marked "IgnoresDisplayFrequency" also ignored by display frequency?
Greetings, I have set up two tips in my app, and my app is configured with Tips.configure([.displayFrequency(.daily)]. Tip 1 is set up with no options. Tip 2 has the IgnoresDisplayFrequency(true) option set: var options: [Option] { MaxDisplayCount(3) // We want the user to see these because it's important. IgnoresDisplayFrequency(true) } This option works as expected, as far as I can tell, in terms of making sure that Tip 2 is shown even if I've already seen Tip 1 today. If I interact with my app such that Tip 1 is displayed, and I then interact with it such that Tip 2 should be displayed, Tip 2 shows immediately, even though a day hasn't passed. However, if I do this the other way around, so that Tip 2 is displayed first, and then I interact so that Tip 1 should be displayed, my expectation would be that Tip 1 is not displayed, because another tip has already been shown today. I expected that it would not be shown until the following day, since it is not configured to ignore the tip frequency. That's not what happens, though. Tip 1 is displayed right away, even though Tip 2 has just been shown. This makes me think that setting IgnoresDisplayFrequency on Tip 2 is causing it to also be ignored when considering whether other tips should be shown. I did try omitting IgnoresDisplayFrequency option, and then as expected, only one tip is shown on a day, no matter which one is shown first.
1
1
941
Jun ’25
AlarmKit authorizationState is always notDetermined even if permission has been previously granted
I am using AlarmKit in my app. When I access: AlarmManager.shared.authorizationState It always returns notDetermined, even when I have previously granted the app permission to use alarms via: try await AlarmManager.shared.requestAuthorization() Calling this API again grants me the permission though, without showing the permission prompt to the user. This sounds like a bug - if the permission has been granted, accessing authorizationState should return .authorized. It shouldn't require me to call requestAuthorization() again to update the authorization status again? Environment: iOS 26 beta 3 Xcode 26 beta 3
1
1
219
Jul ’25
Voip Notifaction in Background
My app uses CallKit and PushKit for real-time voice and video calls. I want to configure VoIP push notifications so incoming calls can wake the app, even when it’s in the background or terminated. Right now, I only see the normal Push Notifications option in my App ID settings and no VoIP Services section.
3
1
245
Nov ’25
Running a Child Process with Standard Input and Output
IMPORTANT Rather than use the code below, I recommend that you adopt Swift’s shiny-new Subprocess package. That’s what I’m doing! (-: Running a child process using Process (or NSTask in Objective-C) is easy, but piping data to and from the child’s stdin and stdout is surprisingly tricky. I regularly see folks confused by this. Moreover, it’s easy to come up with a solution that works most of the time, but suffers from weird problems that only show up in the field [1]. I recently had a couple of DTS incidents from folks struggling with this, so I sat down and worked through the details. Pasted below is the results of that effort, namely, a single function that will start a child process, pass it some data on stdin, read the data from the child’s stdout, and call a completion handler when everything is done. There are some things to note here, some obvious, some not so much: I’ve included Swift and Objective-C versions of the code. Both versions work the same way. The Swift version has all the comments. If you decide to base your code on the Objective-C version, copy the comments from there. I didn’t bother collecting stderr. That’s not necessary in many cases and, if you need it, it’s not hard to extend the code to handle that case. I use Dispatch I/O rather than FileHandle to manage the I/O channels. Dispatch I/O is well suited to this task. In contrast, FileHandle has numerous problems working with pipes. For the details, see Whither FileHandle?. This single function is way longer than I’d normally tolerate. This is partly due to the extensive comments and party due to my desire to maintain focus. When wrapping Process it’s very easy to run afoul of architecture astronaut-ism. Indeed, I have a much more full-featured Process wrapper sitting on my hard disk, but that’s going to stay there in favour of this approach (-: Handling a child process correctly involves some gnarly race conditions. The code has extensive comments explaining how I deal with those. If you have any questions or comments about this, put them in a new thread. Make sure to tag that thread with Foundation and Inter-process communication so that I see it. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com" [1] Indeed, this post shows that I’ve made this sort of mistake myself )-:
2
0
8k
Apr ’25
Filtering MMS Messages with Multimedia Content (Images, Videos, etc.)
Hi Apple Developer, I’m working on a message-filtering application and reviewing Apple's documentation on message filtering. The documentation clearly states that MMS messages can be filtered. (https://aninterestingwebsite.com/documentation/identitylookup/sms-and-mms-message-filtering) When we refer to MMS, it includes images, short videos, and other supported multimedia formats. However, the ILMessageFilterQueryRequest only provides the message body as a String, meaning we can access text and links but not images or other media files. Could you please confirm whether Apple allows third-party applications to access multimedia content sent from unknown numbers? Looking forward to your quick response. Thanks, Rijul Singhal
2
1
291
Apr ’25
Callkit/Call-Blocking Error
I have an app developed by using the Callkit/Call-Blocking and received feedback from individual users, when using [cxcalldirectorymanager reloadextensionwithidentifier] to write call blocking data, it returned error code 11 with the following contents: errorCode: 11 errorDomain: com.apple.callkit.database.sqlite errorDescription: sqlite3_step for query 'DELETE FROM PhoneNumberBlockingEntry WHERE extension_id =?' returned 11 (11) errorMessage 'database disk image is malformed' I want to know the reasons for this error and how to solve it,Thanks!
2
1
180
Nov ’25
Does Contact Provider supports Localize when ask Permission
When I call https://aninterestingwebsite.com/documentation/contactprovider/contactprovidermanager/enable() to request to use Contact Provider, I received a dialog with message like this "App Name would like to add its contacts as its own list. Contacts added this way can be removed from settings". I would like to support this message in Japanese or other languages. Is it possible?
3
1
229
Nov ’25
Missing com.apple.developer.adservices entitlements
I am trying to build my app and want to be able to integrate with apple ads services so I can get my users attribution token. I tried a added the "com.apple.developer.adservices" entitlement but now that I build my app it fails with the following error include the com.apple.developer.adservices entitlement. Profile qualification is using entitlement definitions that may be out of date. Connect to network to update. What do I need to do to make this work, I tried and cant fina any docs online
3
0
128
Nov ’25
QuickLook Thumbnailing returns stale macOS 26 folder icon
On macOS 26, I've run into a situation when a user “customizes” a folder icon with Finder by assigning/changing an SF Symbol or an emoji, QLThumbnailGenerator keeps returning the stale initially retrieved folder icon (no matter whether it had been customized or not) until my app quits. After the app is re-launched, the icon is correctly retrieved once again. let generator = QLThumbnailGenerator.shared let size: CGSize = CGSize(width: 64, height: 64) let request = QLThumbnailGenerator.Request(fileAt: url, size: size, scale: NSScreen.main!.backingScaleFactor, representationTypes: .icon) request.iconMode = true do { let thumb = try await generator.generateBestRepresentation(for: request) thumb.nsImage.size = size return thumb.nsImage } catch { print("generateThumbnail: \(error)") return nil } It seems like the QuickLook Thumbnailing cache does not invalidate automatically upon folder customization. Is there any way to manually invalidate the QuickLook Thumbnailing cache?
7
1
485
Dec ’25
CXCallDirectoryManager.openSettings() No Longer Opens “Call Blocking & Identification” in iOS 26
On iOS 26, calling CXCallDirectoryManager.sharedInstance.openSettings() does not navigate to the “Call Blocking & Identification” settings page as documented. Instead, it either opens the main Phone settings page or fails to navigate entirely. This breaks the expected behavior for enabling Call Directory extensions and impacts onboarding flows for apps using CallKit. Expected: Settings should open directly to Phone → Call Blocking & Identification. Actual: Navigates to the main Phone settings page This appears to be a regression from previous iOS versions. Documentation still states this API should open the correct page.
2
2
154
Oct ’25
Issues Handling Multiple Incoming Calls in CallKit
Certainly! Here's a concise version of your forum post: Title: Issues Handling Multiple Incoming Calls in CallKit Body: Hello, I'm using CallKit and I am encountering challenges with handling multiple incoming calls. Current Configuration: configuration.maximumCallsPerCallGroup = 5 configuration.maximumCallGroups = 3 This setup aims to allow up to 5 calls per group. Observed Behavior: Despite the configuration, the system UI seems to limit the number of calls per group, often defaulting to "End & Accept" instead of "Hold & Accept" when a third call comes in. Questions: Is there a documented system-imposed limit on the number of calls per group or total calls, even if maximumCallGroups and maximumCallsPerCallGroup are set higher? How does the system UI behave when these limits are exceeded? Are there known UI constraints or fallback behaviors? Are there best practices for handling scenarios where the system UI cannot display all calls, such as gracefully managing incoming calls or providing alternative UI solutions? Any insights or experiences with similar configurations would be greatly appreciated. Thank you. Feel free to copy and paste this directly into the Apple Developer Forums. If you need further assistance or adjustments, let me know!
3
0
164
Nov ’25
Detecting When App Token Is Removed Due to Category Selection in FamilyActivityPicker
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!
2
1
198
Jul ’25
The menu can't be shown in background process in MacOS 26(beta)
After I upgraded to MacOS 26(beta), my program caused the system to pop up a window as shown in the following picture. My application is a process with only a tray icon. I found that my tray icon is not displayed in the current version, even though I clicked the "Always Allow" button. Here are my questions: 1.Will this related feature remain consistent in the official release? 2.How can I create a cmd process that only displays a system tray icon (no main window) like Alfred?
2
1
107
Jul ’25
Potential iOS26 regression on AASA file not download on app install
Original discussion pre iOS 26 Our app uses Auth0 with HTTPS callback, we've found the issue where AASA file is not ready immediately when app is initially launched, which is the exact issue from the above link. The issue seems mostly fixed on later versions on iOS 18, however, we are seeing some indications of a regression on iOS 26. Here's some measurement over the last week. | Platform | iOS 18 | iOS 26 | |---------------|----------|--------| | Adoption rate | 55% | 45% | | Issue seen | 1 | 5 | | Recover? | Yes | No | This only 1 iOS 18 instance was able to recover after 1 second after the first try, however, all iOS 26 instances were not able to recover in couple tens of seconds and less than 1 minute, the user eventually gave up. Is there a way to force app to update AASA file? Are there some iOS setting (like using a VPN) that could potentially downgrade the AASA fetch? Related Auth0 discussion: https://community.auth0.com/t/ios-application-not- recognizing-auth0-associated-domain/134847/27
16
1
1.4k
1d
How to test Declared Age Range functionality
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?
1
1
253
Oct ’25
UserDefaults not Sendable
Hey, I am just about to prepare my app for Swift 6, and facing the issue that UserDefaults is not Sendable. The documentation states that its thread safe, so I am wondering, why is it not marked as Sendable? Was it just forgotten? Is it safe to mark it as nonisolated(unsafe) or @unchecked Sendable?
8
1
4k
Feb ’26
Age verification: How to obtain the method of age assurance?
In the summary documentation about the declared Age Range API:https://aninterestingwebsite.com/news/?id=2ezb6jhj It states: "The API will also return a signal from the user’s device about the method of age assurance, such as credit card or government ID" But if the api itself, and its documentation is examined, there is no such mechanism nor mention of it: https://aninterestingwebsite.com/documentation/declaredagerange/agerangeservice So my question is, is the first documentation incorrect, if not, then where and how to access the method of age assurance?
Replies
1
Boosts
1
Views
170
Activity
Nov ’25
Apple-hosted managed asset pack not found on macOS
Hi all, I have set up a trivial test project to try Apple-hosted background assets following the instructions in the three articles at https://aninterestingwebsite.com/documentation/backgroundassets. When I run the local mock server with xcrun ba-serve and set the URL override in Settings as described in the "Testing asset packs locally" article, I am able to download a test pack on my iOS devices. On the Mac that I use to run the mock server, however, the same call to AssetPackManager.shared.assetPack(withID: "TestAssetPack") that works on iOS always reports The asset pack with the ID “TestAssetPack” couldn’t be looked up: No asset pack with the ID “TestAssetPack” was found. even when not running the mock server, which led me to believe that it may not be hitting it at all. In fact, the macOS app will download asset packs uploaded to App Store Connect even when running the local server and setting the xcrun ba-serve url-override to the exact same string as in Settings on iOS. My initial suspicion was that something is wrong with the URL override, so I have tried all combinations of the Mac's hostname, IP address or "localhost" (with the corresponding SSL certificates) with and without port 443, always prefixing with "https://" for the url-override. All the same. Does anyone have an idea what may be the issue here? My asset pack has the following manifest: { "assetPackID": "TestAssetPack", "downloadPolicy": { "onDemand": {} }, "fileSelectors": [ { "file": "TestAsset.txt" } ], "platforms": [ "iOS", "macOS" ] } I am running v26.1 for macOS, iOS & Xcode. Edit: Just to be clear, my assumption here is that the URL overrides (in Settings on iOS or via ba-serve on macOS) is what should cause the app to hit the mock server. Is that correct or am I missing something?
Replies
12
Boosts
0
Views
593
Activity
Mar ’26
TipKit: Are tips marked "IgnoresDisplayFrequency" also ignored by display frequency?
Greetings, I have set up two tips in my app, and my app is configured with Tips.configure([.displayFrequency(.daily)]. Tip 1 is set up with no options. Tip 2 has the IgnoresDisplayFrequency(true) option set: var options: [Option] { MaxDisplayCount(3) // We want the user to see these because it's important. IgnoresDisplayFrequency(true) } This option works as expected, as far as I can tell, in terms of making sure that Tip 2 is shown even if I've already seen Tip 1 today. If I interact with my app such that Tip 1 is displayed, and I then interact with it such that Tip 2 should be displayed, Tip 2 shows immediately, even though a day hasn't passed. However, if I do this the other way around, so that Tip 2 is displayed first, and then I interact so that Tip 1 should be displayed, my expectation would be that Tip 1 is not displayed, because another tip has already been shown today. I expected that it would not be shown until the following day, since it is not configured to ignore the tip frequency. That's not what happens, though. Tip 1 is displayed right away, even though Tip 2 has just been shown. This makes me think that setting IgnoresDisplayFrequency on Tip 2 is causing it to also be ignored when considering whether other tips should be shown. I did try omitting IgnoresDisplayFrequency option, and then as expected, only one tip is shown on a day, no matter which one is shown first.
Replies
1
Boosts
1
Views
941
Activity
Jun ’25
AlarmKit authorizationState is always notDetermined even if permission has been previously granted
I am using AlarmKit in my app. When I access: AlarmManager.shared.authorizationState It always returns notDetermined, even when I have previously granted the app permission to use alarms via: try await AlarmManager.shared.requestAuthorization() Calling this API again grants me the permission though, without showing the permission prompt to the user. This sounds like a bug - if the permission has been granted, accessing authorizationState should return .authorized. It shouldn't require me to call requestAuthorization() again to update the authorization status again? Environment: iOS 26 beta 3 Xcode 26 beta 3
Replies
1
Boosts
1
Views
219
Activity
Jul ’25
Voip Notifaction in Background
My app uses CallKit and PushKit for real-time voice and video calls. I want to configure VoIP push notifications so incoming calls can wake the app, even when it’s in the background or terminated. Right now, I only see the normal Push Notifications option in my App ID settings and no VoIP Services section.
Replies
3
Boosts
1
Views
245
Activity
Nov ’25
How to add icon and thumbnail image for a Screensaver ?
I have made a screensaver for mac in swift, but couldn't find how to add an icon the logo image that shows up on saver file) and thumbnail (the cover image that shows up in the screensaver catalogue). Currently, it just shows a default blue spiral galaxy thumbnail and no icon image
Replies
6
Boosts
0
Views
556
Activity
2h
Running a Child Process with Standard Input and Output
IMPORTANT Rather than use the code below, I recommend that you adopt Swift’s shiny-new Subprocess package. That’s what I’m doing! (-: Running a child process using Process (or NSTask in Objective-C) is easy, but piping data to and from the child’s stdin and stdout is surprisingly tricky. I regularly see folks confused by this. Moreover, it’s easy to come up with a solution that works most of the time, but suffers from weird problems that only show up in the field [1]. I recently had a couple of DTS incidents from folks struggling with this, so I sat down and worked through the details. Pasted below is the results of that effort, namely, a single function that will start a child process, pass it some data on stdin, read the data from the child’s stdout, and call a completion handler when everything is done. There are some things to note here, some obvious, some not so much: I’ve included Swift and Objective-C versions of the code. Both versions work the same way. The Swift version has all the comments. If you decide to base your code on the Objective-C version, copy the comments from there. I didn’t bother collecting stderr. That’s not necessary in many cases and, if you need it, it’s not hard to extend the code to handle that case. I use Dispatch I/O rather than FileHandle to manage the I/O channels. Dispatch I/O is well suited to this task. In contrast, FileHandle has numerous problems working with pipes. For the details, see Whither FileHandle?. This single function is way longer than I’d normally tolerate. This is partly due to the extensive comments and party due to my desire to maintain focus. When wrapping Process it’s very easy to run afoul of architecture astronaut-ism. Indeed, I have a much more full-featured Process wrapper sitting on my hard disk, but that’s going to stay there in favour of this approach (-: Handling a child process correctly involves some gnarly race conditions. The code has extensive comments explaining how I deal with those. If you have any questions or comments about this, put them in a new thread. Make sure to tag that thread with Foundation and Inter-process communication so that I see it. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com" [1] Indeed, this post shows that I’ve made this sort of mistake myself )-:
Replies
2
Boosts
0
Views
8k
Activity
Apr ’25
Filtering MMS Messages with Multimedia Content (Images, Videos, etc.)
Hi Apple Developer, I’m working on a message-filtering application and reviewing Apple's documentation on message filtering. The documentation clearly states that MMS messages can be filtered. (https://aninterestingwebsite.com/documentation/identitylookup/sms-and-mms-message-filtering) When we refer to MMS, it includes images, short videos, and other supported multimedia formats. However, the ILMessageFilterQueryRequest only provides the message body as a String, meaning we can access text and links but not images or other media files. Could you please confirm whether Apple allows third-party applications to access multimedia content sent from unknown numbers? Looking forward to your quick response. Thanks, Rijul Singhal
Replies
2
Boosts
1
Views
291
Activity
Apr ’25
Callkit/Call-Blocking Error
I have an app developed by using the Callkit/Call-Blocking and received feedback from individual users, when using [cxcalldirectorymanager reloadextensionwithidentifier] to write call blocking data, it returned error code 11 with the following contents: errorCode: 11 errorDomain: com.apple.callkit.database.sqlite errorDescription: sqlite3_step for query 'DELETE FROM PhoneNumberBlockingEntry WHERE extension_id =?' returned 11 (11) errorMessage 'database disk image is malformed' I want to know the reasons for this error and how to solve it,Thanks!
Replies
2
Boosts
1
Views
180
Activity
Nov ’25
Does Contact Provider supports Localize when ask Permission
When I call https://aninterestingwebsite.com/documentation/contactprovider/contactprovidermanager/enable() to request to use Contact Provider, I received a dialog with message like this "App Name would like to add its contacts as its own list. Contacts added this way can be removed from settings". I would like to support this message in Japanese or other languages. Is it possible?
Replies
3
Boosts
1
Views
229
Activity
Nov ’25
Missing com.apple.developer.adservices entitlements
I am trying to build my app and want to be able to integrate with apple ads services so I can get my users attribution token. I tried a added the "com.apple.developer.adservices" entitlement but now that I build my app it fails with the following error include the com.apple.developer.adservices entitlement. Profile qualification is using entitlement definitions that may be out of date. Connect to network to update. What do I need to do to make this work, I tried and cant fina any docs online
Replies
3
Boosts
0
Views
128
Activity
Nov ’25
QuickLook Thumbnailing returns stale macOS 26 folder icon
On macOS 26, I've run into a situation when a user “customizes” a folder icon with Finder by assigning/changing an SF Symbol or an emoji, QLThumbnailGenerator keeps returning the stale initially retrieved folder icon (no matter whether it had been customized or not) until my app quits. After the app is re-launched, the icon is correctly retrieved once again. let generator = QLThumbnailGenerator.shared let size: CGSize = CGSize(width: 64, height: 64) let request = QLThumbnailGenerator.Request(fileAt: url, size: size, scale: NSScreen.main!.backingScaleFactor, representationTypes: .icon) request.iconMode = true do { let thumb = try await generator.generateBestRepresentation(for: request) thumb.nsImage.size = size return thumb.nsImage } catch { print("generateThumbnail: \(error)") return nil } It seems like the QuickLook Thumbnailing cache does not invalidate automatically upon folder customization. Is there any way to manually invalidate the QuickLook Thumbnailing cache?
Replies
7
Boosts
1
Views
485
Activity
Dec ’25
CXCallDirectoryManager.openSettings() No Longer Opens “Call Blocking & Identification” in iOS 26
On iOS 26, calling CXCallDirectoryManager.sharedInstance.openSettings() does not navigate to the “Call Blocking & Identification” settings page as documented. Instead, it either opens the main Phone settings page or fails to navigate entirely. This breaks the expected behavior for enabling Call Directory extensions and impacts onboarding flows for apps using CallKit. Expected: Settings should open directly to Phone → Call Blocking & Identification. Actual: Navigates to the main Phone settings page This appears to be a regression from previous iOS versions. Documentation still states this API should open the correct page.
Replies
2
Boosts
2
Views
154
Activity
Oct ’25
Issues Handling Multiple Incoming Calls in CallKit
Certainly! Here's a concise version of your forum post: Title: Issues Handling Multiple Incoming Calls in CallKit Body: Hello, I'm using CallKit and I am encountering challenges with handling multiple incoming calls. Current Configuration: configuration.maximumCallsPerCallGroup = 5 configuration.maximumCallGroups = 3 This setup aims to allow up to 5 calls per group. Observed Behavior: Despite the configuration, the system UI seems to limit the number of calls per group, often defaulting to "End & Accept" instead of "Hold & Accept" when a third call comes in. Questions: Is there a documented system-imposed limit on the number of calls per group or total calls, even if maximumCallGroups and maximumCallsPerCallGroup are set higher? How does the system UI behave when these limits are exceeded? Are there known UI constraints or fallback behaviors? Are there best practices for handling scenarios where the system UI cannot display all calls, such as gracefully managing incoming calls or providing alternative UI solutions? Any insights or experiences with similar configurations would be greatly appreciated. Thank you. Feel free to copy and paste this directly into the Apple Developer Forums. If you need further assistance or adjustments, let me know!
Replies
3
Boosts
0
Views
164
Activity
Nov ’25
Detecting When App Token Is Removed Due to Category Selection in FamilyActivityPicker
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!
Replies
2
Boosts
1
Views
198
Activity
Jul ’25
The menu can't be shown in background process in MacOS 26(beta)
After I upgraded to MacOS 26(beta), my program caused the system to pop up a window as shown in the following picture. My application is a process with only a tray icon. I found that my tray icon is not displayed in the current version, even though I clicked the "Always Allow" button. Here are my questions: 1.Will this related feature remain consistent in the official release? 2.How can I create a cmd process that only displays a system tray icon (no main window) like Alfred?
Replies
2
Boosts
1
Views
107
Activity
Jul ’25
Potential iOS26 regression on AASA file not download on app install
Original discussion pre iOS 26 Our app uses Auth0 with HTTPS callback, we've found the issue where AASA file is not ready immediately when app is initially launched, which is the exact issue from the above link. The issue seems mostly fixed on later versions on iOS 18, however, we are seeing some indications of a regression on iOS 26. Here's some measurement over the last week. | Platform | iOS 18 | iOS 26 | |---------------|----------|--------| | Adoption rate | 55% | 45% | | Issue seen | 1 | 5 | | Recover? | Yes | No | This only 1 iOS 18 instance was able to recover after 1 second after the first try, however, all iOS 26 instances were not able to recover in couple tens of seconds and less than 1 minute, the user eventually gave up. Is there a way to force app to update AASA file? Are there some iOS setting (like using a VPN) that could potentially downgrade the AASA fetch? Related Auth0 discussion: https://community.auth0.com/t/ios-application-not- recognizing-auth0-associated-domain/134847/27
Replies
16
Boosts
1
Views
1.4k
Activity
1d
How to test Declared Age Range functionality
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?
Replies
1
Boosts
1
Views
253
Activity
Oct ’25
UserDefaults not Sendable
Hey, I am just about to prepare my app for Swift 6, and facing the issue that UserDefaults is not Sendable. The documentation states that its thread safe, so I am wondering, why is it not marked as Sendable? Was it just forgotten? Is it safe to mark it as nonisolated(unsafe) or @unchecked Sendable?
Replies
8
Boosts
1
Views
4k
Activity
Feb ’26
Getting Incoming call from blocked Number in iOS 26 onwards
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
Replies
4
Boosts
0
Views
420
Activity
Oct ’25