Both view and modifier versions of the FamilyActivityPicker crash randomly when selecting some items (usually the other option) throwing these in the console:
[com.apple.FamilyControls.ActivityPickerExtension(1150.1)] Connection to plugin invalidated while in use
AX Lookup problem - errorCode:1100 error:Permission denied portName:'com.apple.iphone.axserver' PID:22091 (
0 AXRuntime 0x00000001c603b0fc _AXGetPortFromCache + 800
1 AXRuntime 0x00000001c603cce0 AXUIElementPerformFencedActionWithValue + 700
2 UIKit 0x0000000230de3ec8 DDE6E0C5-2AC3-3C73-8CFE-BC88DE35BB5F + 1453768
3 libdispatch.dylib 0x0000000103ef0b98 _dispatch_call_block_and_release + 32
4 libdispatch.dylib 0x0000000103ef27bc _dispatch_client_callout + 20
5 libdispatch.dylib 0x0000000103efa66c _dispatch_lane_serial_drain + 832
6 libdispatch.dylib 0x0000000103efb408 _dispatch_lane_invoke + 408
7 libdispatch.dylib 0x0000000103f08404 _dispatch_root_queue_drain_deferred_wlh + 328
8 libdispatch.dylib 0x0000000103f07a38 _dispatch_workloop_worker_thread + 444
9 libsystem_pthread.dylib 0x00000001f0824f20 _pthread_wqthread + 288
10 libsystem_pthread.dylib 0x00000001f0824fc0 start_wqthread + 8
)
This also happens in production apps like the Opal.
The questions are:
At least how to detect it to be able to manually reload the sheet (like what Opal does and shows an alert when this happens)
How to prevent it in the first place?
I really appreciate any help you can provide.
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
We integrated DeviceCheck framework into our app to prevent fraudulent call to our app service around one year ago.
Recently, we received a few cases related to this function over Christmas Eve period.
Based on the logs we have, it indicated both the following two functions returned errors. But we don't have the exactly errors logged and now we cannot replicate.
DCAppAttestService.shared.attestKey()
DCAppAttestService.shared.generateAssertion()
The other finding we have is some users reporting this issue recently upgraded their devices from iOS 18 to iOS 26.
So we are suspecting it's due to either the OS upgrading, or Apple's app attest service degrading.
Anyone encountered the similar issues before, or have any idea regarding the root cause? Thanks!
Hi everyone.
I've downloaded the the 26.2 beta 2 and installed it on a device in the settings after i create a new sandbox test account i see the options in Age Assurance.
The problem is i got the popup the first time i opened the application and decided to share, but after that i always get the following error:
DeclaredAgeRange.AgeRangeService.Error.notAvailable
I tried testing with different bundle id and different sandbox test account but still it doesn't work.
How can i test the cases without erasing the device ?
I'd like to set my macOS app written in Swift as default app when opening .mp4 file.
I think I can do it with setDefaultApplication(at:toOpen:completion:).
https://developer.apple.com/documentation/appkit/nsworkspace/3753002-setdefaultapplication
However, permission error occurs when I use it.
The error is:
Error Domain=NSCocoaErrorDomain Code=256 "The file couldn’t be opened." UserInfo={NSUnderlyingError=0x6000031d0150 {Error Domain=NSOSStatusErrorDomain Code=-54 "permErr: permissions error (on file open)"}}
I tried to give my app full-disk access, but it didn't work.
I also tried to use setDefaultApplication(at:toOpenFileAt:completion:), then it works with no error, but it effects on only one file.
What I want to do is to set my app as default app of all .mp4 files.
How do I achieve this?
My code is like below:
let bundleUrl = Bundle.main.bundleURL
NSWorkspace.shared.setDefaultApplication(at: bundleUrl, toOpen: .mpeg4Movie) { error in
print(error)
}
Thank you.
According to Apple's documentation at https://developer.apple.com/documentation/storekit/testing-age-assurance-in-sandbox?language=objc, the testing steps and expected responses are outlined as follows:
Test app consent revocation
To test the notification when a parent or guardian revokes access to your app on behalf of their child, follow these steps:
Start with a Sandbox account.
From the Age Assurance settings, tap Revoke App Consent.
Enter your app’s Bundle ID (for example, com.example.bundle).
Tap Revoke Consent to simulate the revocation.
Confirm that the system displays “Notification Triggered” with the message “A notification will be sent to the developer server soon.”
I followed the steps exactly as described above, but during the fifth step, instead of seeing the prompt "A notification will be sent to the developer server soon," a pop-up dialog with only a confirmation button appeared. After clicking it, there was no further response, and our server did not receive any notification (neither from the Sandbox nor the Production environment).
Hi. The WWDC video of the v2 weatherkit api showed some examples for the REST API. However, they were very limited.
The documentation for the REST API is currently for the v1 weatherkit API. When will the documentation for the v2 API be released? There are some new features of the v2 that I would really like to use, but I can't without knowing the new v2 REST API specifications.
Any guidance would be much appreciated. Thanks!
From https://developer.apple.com/forums/thread/803945?answerId=862153022#862153022, the testing of Age Range API was not available through xcode simulator back in Oct 2025.
Is this available now? In particular:
Is requestAgeRange testing available through simulator?
Is requestAgeRange testing with sandbox account available through simulator?
Is isEligibleForAgeFeatures available through simulator?
Is isEligibleForAgeFeatures testing with sandbox account available through simulator?
If the answer is "yes" to any of the above, which version of the xcode and ios version should I use?
So far I didn't get any of the above working on the simulator, and I can't find any documentation on the answers above.
Thank you!
My scenario is to help users set up a full year's alarms at once. The dates for the alarms follow a specific pattern, but not fixed weekdays, so the fixed-date type is needed.
Topic:
App & System Services
SubTopic:
General
Is this intended behavior? I want my app to act like the regular Clock app and snooze alarms when user taps volume down button but apparently volume down button stops the alarm. Is this normal or am I missing something?
Topic:
App & System Services
SubTopic:
General
Hello,
I'm currently experiencing an issue with the DeviceActivityMonitor extension in my code, specifically with the eventDidReachThreshold callback. I'm hoping to get some insights into why this problem occurs and how to resolve it.
Problem:
Issue 1: The eventDidReachThreshold callback is not triggering as expected. It appears that the callback is not being invoked when the threshold is reached.
Issue 2: After a few seconds, the eventDidReachThreshold callback starts to trigger multiple times. This unexpected behavior is causing problems in my code, as it results in incorrect actions being taken.
iOS version: iOS16.7.2 and iOS17.1
Xcode version: 15.0.1
Swift version: 5.9
Here is my code to start the monitoring:
func startMonitoring() {
var startTime : DateComponents = DateComponents(hour: 0, minute: 0)
let endTime : DateComponents = DateComponents(hour: 23, minute: 59)
/// Creates the schedule for the activity, specifying the start and end times, and setting it to repeat.
let schedule = DeviceActivitySchedule(intervalStart: startTime, intervalEnd: endTime, repeats: true, warningTime: nil)
/// Defines the event that should trigger the encouragement.
let event = DeviceActivityEvent(applications: socialActivitySelection.applicationTokens, categories: socialActivitySelection.categoryTokens, webDomains: socialActivitySelection.webDomainTokens, threshold: DateComponents(minute: 2))
let events: [DeviceActivityEvent.Name: DeviceActivityEvent] = [.socialScreenTimeEvent : event]
do {
activityCenter.stopMonitoring([.socialScreenTime])
/// Tries to start monitoring the activity using the specified schedule and events.
try activityCenter.startMonitoring(.socialScreenTime, during: schedule, events: events)
} catch {
/// Prints an error message if the activity could not be started.
print("Could not start monitoring: \(error)")
}
}
If there are any known workarounds or potential solutions, please share them.
Thank you for your help in resolving this problem.
I'm using the new AlarmKit framework to schedule and trigger alarms in my Swift app in iOS 26 beta 4 (23A5297i).
I'm trying to customize the alarm sound using a sound file embedded in the app bundle or by referencing known system tones.
Problem:
No matter what I pass to .named("sound-2"), whether a file bundle url, .named("sound-2.caf"), tried .mp3, .caf & .aiff, or a known iOS system sound like .named("Radar") ("Chimes", etc.), the alarm always plays the default system alert tone. There's no error or warning, but the custom or specified sound is silently ignored.
sound: .named("sound-2")
Question:
What is the correct method or approach to play custom sound / music when Alarm Triggers?
What .named("...") expects file name, file Path URL or System sound name?
Is there any specific audio file length accepted or specific format?
Challenge:
The alarm functionality feels incomplete without support for custom sounds. A single default alert tone is often not sufficient to wake up users effectively. Hope it will be fixed in the next iOS updates.
Topic:
App & System Services
SubTopic:
General
Hello,
I’m encountering an issue with Universal Links in my iOS app. After some investigation, I found that the root cause seems to be that Apple’s request through there CDN server to access the .well-known/apple-app-site-association file is blocked by our firewall, which enforces geographic access restrictions as part of our security policy.
Because of this restriction, Apple’s validation or link verification requests are being denied, and the Universal Links are not working as expected.
I’d like to get some guidance from the community or Apple engineers on the following:
1. Does Apple provide an official list of IP ranges or domains that need to be allowed through the firewall for Universal Link validation?
2. Are there alternative methods to handle Universal Link verification in environments with geographic restrictions?
3. Would whitelisting specific Apple services or endpoints be a recommended or safe solution?
Any input or recommendations would be greatly appreciated.
Environment Details:
• iOS app using Universal Links
• Server protected by a firewall with regional restrictions
• AASA file hosted correctly and accessible via browser
Thanks in advance for your help and insights.
Hi,
I'm currently working on an app made originally for iOS 15. On it, I add an observer on viewDidLoad function of my ViewController to listen for changes on the UserDefault values for connection settings.
NotificationCenter.default.addObserver(self, selector: #selector(settingsChanged), name: UserDefaults.didChangeNotification, object: nil)
Said values can only be modified on the app's section from System Settings.
Thing is, up to iOS 17, the notification fired as expected, but starting from iOS 18, the notification doesn't seem to be sent by the OS.
Is there anything I should change in my observer, or any other technique to listen for the describe event?
Thanks in advance.
We have an application which is written in Swift, which activates Transparent Proxy network extension. We are using Jamf MDM profile for deployment.
To avoid the user deleting / disabling the extension from General -> LogIn Items & Extension -> Network Extensions screen, we are using "Non-removable system extensions from UI" attribute under Allowed System Extensions and Teams IDs section.
In new Mac OS 26 (Tahoe), user can also enable/disable the extension from General -> LogIn Items & Extension -> Apps tab. The "Non-removable system extensions from UI" attribute set in Jamf MDM profile does not apply to this tab.
Same attribute is working for General -> LogIn Items & Extension -> Extensions tab and there the slider is greyed out and Remove option is not available under more menu.
Is there any new key/configuration defined to disable the slider from General -> LogIn Items & Extension -> Apps tab?
Created https://feedbackassistant.apple.com/feedback/18198031 - FB18198031 feedback assistant ticket as well.
Topic:
App & System Services
SubTopic:
General
Tags:
Network Extension
System Extensions
Device Management
Hello,
I have a question about data deserialization using NSKeyedUnarchiver in iOS SDK development.
Current Situation:
Previously, we were using the NSKeyedUnarchiver.unarchiveObject(with: Data) function
We have changed to using the NSKeyedUnarchiver.unarchivedObject(ofClasses:from:) method to deserialize complex objects stored in UserDefaults
We need to include all types in the ofClasses parameter, including Swift primitive types as well as various custom classes and structs within the project
Questions:
Implementation Approach: Is it correct pattern to include all classes defined in the project in the ofClasses array? Is this approach recommended?
Runtime Stability: When using this approach, is there a possibility of runtime crashes? Are there any performance issues?
Alternative Methods: If the current approach is not the correct pattern, what alternatives should we consider?
Current Code Structure:
All model classes conform to the NSSecureCoding protocol
We use the requiringSecureCoding: true parameter
We use a whitelist approach, explicitly listing only allowed classes
I would like to know if this structure is appropriate, or if we should consider a different approach.
Thank you.
Issue with App Clip Card Showing "App Clip unavailable" for DIGI LIVE App
In my DIGI LIVE application, I have an App Clip configured for iOS 17.6+ (the file exceeds the 15 MB limit), and I have made all the necessary preparations for the App Clip to work correctly. However, the App Clip card constantly displays an "App Clip unavailable" error for various users (depending on their system language).
The URL associated with the App Clip invocation is: https://ar.digi-live.de
The AASA file is located at /.well-known/apple-app-site-association and contains the required fields for the App Clip:
{
"applinks": {
"details": [
{
"appIDs": ["N9QR6LF765.de.digilive.app"],
"components":[
{
"#": "no_universal_links",
"exclude": true,
"comment": "Matches any URL whose fragment equals no_universal_links and instructs the system not to open it as a universal link"
},
{
"/": "*",
"comment": "Matches any URL like ar.digi-live.de"
}
]
}
]
},
"appclips": {
"apps": ["N9QR6LF765.de.digilive.app.Clip"]
}
}
If I use the default App Clip link (https://appclip.apple.com/id?p=de.digilive.app.Clip) to launch it, the "App Clip unavailable" error no longer appears. But if I delete the App Clip from the settings, the error comes back, and it can only be launched again using the default link.
It feels like the problem is with the App Clip loading at the moment the App Clip card is triggered — it simply fails to load.
Video
https://storage.yandexcloud.net/mmrs/files/digilive/IMG_2259.mp4
Since I updated to iOS 18, CallKit-linked caller not display on screen of CarPlay.
CarPlay display only "{App Name} Caller ID".
When iOS version was 17.x, CarPlay displayed caller name of CallKit-linked contact.
I think CarPlay should perform the same function as iOS 17.
Please review it.
What are guidelines for apps being released in the US App Store in order to comply with The Texas App Store Accountability Act?
I mean there's no way to differentiate an app downloaded in Texas from the other states and it would be ridiculous to add location awareness to an app to comply with this, so effectively it means any developer of any app for release in the US must comply with this in case it might be being used in Texas?
This new Apple API has zero background, zero context, zero example of usage, zero guidelines about how to use it in practice:
https://developer.apple.com/documentation/declaredagerange/
Hi there,
Starting with iOS 26.2 RC, all my DeviceActivityMonitor.eventDidReachThreshold get activated immediately as I pick up my iPhone for the first time, two nights in a row.
Feedback: FB21267341
There's always a chance something odd is happening to my device in particular (although I can't recall making any changes here and the debug logs point to the issue), but just getting this out there ASAP in case others are seeing this (or haven't tried!), and it's critical as this is the RC.
DeviceActivityMonitor.eventDidReachThreshold issues also mentioned here: https://developer.apple.com/forums/thread/793747; but I believe they are different and were potentially fixed in iOS 26.1, but it points to this part of the technology having issues and maybe someone from Apple has been tweaking it.
Topic:
App & System Services
SubTopic:
General
Tags:
Family Controls
Device Activity
Managed Settings
Screen Time
Hi,
In my app, I have an option to remove a contact from a contact group (using the Contacts framework), and it's been working fine till recently users of the macOS version reported that it's not working. I have been using the CNSaveRequest removeMember(contact, from: group) API. The same API works fine on iOS. I'm not sure when it started but it seems to be affecting macOS14.6 as well as 15.1.
I was able to reproduce it in a small test project as well, and have the same experience (the API works on iOS but not on macOS), so it definitely seems like a problem with the framework. Can someone confirm this, and/or suggest a workaround?
Here's the code I run to test it out ...a simple SwiftUI view that has 4 buttons:
Create contact and group
Add contact to group
Remove contact from group
(optional) cleanup by deleting contact and group
It's the 3rd step that seems to fail on macOS, but works fine on iOS.
Here's the code to test it out:
struct ContentView: View {
let contactsModel = ContactsStoreModel()
var body: some View {
VStack (alignment: .center, spacing: 15){
Button ("1. Add Contact And Group") {
print("add contact button pressed")
contactsModel.addTestContact()
if let _ = contactsModel.createdContact {
print("created contact success")
}
}
Button ("2. Add Contact To Group") {
print("add to group button pressed")
contactsModel.addContactToGroup()
}
Button ("3. Remove Contact From Group") {
print("remove from group button pressed")
contactsModel.removeContactFromGroup()
}
Button ("4. Delete Contact and Group") {
print("remove from group button pressed")
contactsModel.deleteContactAndGroup()
}
}
.padding()
}
}
#Preview {
ContentView()
}
@available(iOS 13.0, *)
@objc final class ContactsStoreModel: NSObject, ObservableObject {
let contactStore = CNContactStore()
var createdContact : CNContact?
var createdGroup : CNGroup?
public func addTestContact() {
let storeContainer = contactStore.defaultContainerIdentifier()
let contact = CNMutableContact()
contact.givenName = "Testing"
contact.familyName = "User"
contact.phoneNumbers = [CNLabeledValue(label: "Cell", value: CNPhoneNumber(stringValue: "1234567890"))]
let group = CNMutableGroup()
group.name = "Testing Group"
print("create contact id = \(contact.identifier)")
print("create group id = \(group.identifier)")
do {
let saveRequest = CNSaveRequest()
saveRequest.transactionAuthor = "TestApp"
saveRequest.add(contact, toContainerWithIdentifier: storeContainer)
saveRequest.add(group, toContainerWithIdentifier: storeContainer)
try contactStore.execute(saveRequest)
createdContact = contact
createdGroup = group
} catch {
print("error in store execute = \(error)")
}
}
public func addContactToGroup() {
if let contact = createdContact, let group = createdGroup {
do {
let saveRequest = CNSaveRequest()
saveRequest.transactionAuthor = "TestApp"
saveRequest.addMember(contact, to: group)
try contactStore.execute(saveRequest)
}
catch {
print("error in store execute = \(error)")
}
}
}
public func removeContactFromGroup() {
if let contact = createdContact, let group = createdGroup {
do {
let saveRequest = CNSaveRequest()
saveRequest.transactionAuthor = "TestApp"
saveRequest.removeMember(contact, from: group)
try contactStore.execute(saveRequest)
}
catch {
print("error in store execute = \(error)")
}
}
}
public func addGroupAndContact() {
let storeContainer = contactStore.defaultContainerIdentifier()
let group = CNMutableGroup()
group.name = "Test Group"
print("create group id = \(group.identifier)")
if let contact = createdContact {
do {
let saveRequest = CNSaveRequest()
saveRequest.transactionAuthor = "TestApp"
saveRequest.add(group, toContainerWithIdentifier: storeContainer)
saveRequest.addMember(contact, to: group)
try contactStore.execute(saveRequest)
createdGroup = group
} catch {
print("error in store execute = \(error)")
}
}
}
public func deleteContactAndGroup() {
if let contact = createdContact, let group = createdGroup {
do {
let mutableGroup = group.mutableCopy() as! CNMutableGroup
let mutableContact = contact.mutableCopy() as! CNMutableContact
let saveRequest = CNSaveRequest()
saveRequest.transactionAuthor = "TestApp"
saveRequest.delete(mutableContact)
saveRequest.delete(mutableGroup)
try contactStore.execute(saveRequest)
}
catch {
print("error in deleting store execute = \(error)")
}
}
}
}