Hallo all,
I did a test integration of MetricKit into one of our apps...I'am on macOS Ventura 13.3.1 (a). The app is not distributed via the App Store.
I subscribed to the MXMetricManager and implemented the didReceiveDiagnosticPayloads function.
So far everything seems to work, when I use in Xcode: Debug -> Simulate MetricKit Payload I get a callback and the payload.
So I did some further testing. When I build the app debug version with a test crash and then run the Debug Version (without Xcode) and let it crash the next time I start the app I get a callback to didReceiveDiagnosticPayloads with all the information about the crash.
But I'am not able to get a hang report. I tested it by adding a sleep (60) and adding some intensive computation work on the main thread so that it is busy for several seconds, I get no hang reports :-(
I'am using the Debug version and run it without Xcode.
Are hang reports expected to be reported immediately? I also get after 24 hours no hang reports.
Can someone help me?
Thanks and have a nice day!
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
Reading text out of PDFs with PDFKit results in some text being returned way out of order when using .string or .attributedString functions. Way out of order means not just wrong sorting of words on a line or wrongly showing up on the next line (as has happened with PDFKit on older iOS releases, e.g. 17.x), but some text (one or more words) may show up near the end of a page of text, while it should show near the beginning.
As Page.characterBounds(at:) is buggy in iOS 18.x returns wrong bounds, devs cannot correct such faulty PDFKit behaviour programmatically.
I believe it is on Apple to fix this iOS 18 bug asap. Thank you for giving it priority as this is killing apps that need PDFKit to get and parse text data out of PDFs.
I have filed Feedback FB16264926.
In iOS 26, on iPad (as least, but maybe phone too, yet to test) if you tap an iMessage (a second time) that should launch an iMessage App, it does not launch app.
Has anyone else seen this - it makes many iMessage app unusable.
Steps to reproduce
Send a message that launches iMessage on tap.
Tap message on recipient's device.
Observe iMessage App open.
Dismiss iMessage
Tap message again
Observe nothing happens, app is not launched.
Topic:
App & System Services
SubTopic:
General
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!
Since legacyScreenSaver is still the thing running screensavers we make, and it's still buggy, why won't they give us a new template for building screensavers that run in the new engine? And hopefully they don't require them to blend in with the desktop, because most of us don't want that. A wallpaper is a wallpaper, and a screensaver is a screensaver.
I have also tested this on iOS 26 (Beta 9 and above), and the CallKit call blocking functionality is not working. Numbers that should be blocked still ring through. Caller Identification continues to function as expected, but blocking entries (addBlockingEntry) are ignored.
In the past I was always able to install every major macOS version on an external drive so that I can test my apps. But now I'm unable to install macOS Tahoe 26 on an external drive. Actually, as far as I'm aware, there are not even official links to macOS 26 installers, but only instructions on how to update to macOS 26 from an existing macOS installation. So I thought I'd install macOS 15 on a separate drive and then update to macOS 26, but whenever I run the macOS 15 installer, tell it to install on the external drive, and reboot after the setup process completes, my MacBook just boots into my main macOS partition as if nothing happened.
3 months ago I somehow managed to install macOS Tahoe beta 1 on an external drive, I don't remember how (but I don't think it was anything crazy); booting into that beta 1 partition and trying to update doesn't work either, as my MacBook again boots into my main macOS partition. I already asked help about the update problem one month ago here, but nobody replied.
Could someone at Apple please provide instructions on how one is supposed to install macOS 26 on an external drive (if possible before it becomes available to the public)? Are we supposed to buy a separate Mac for every macOS version that we want to test our apps on?
Hey!
I am developing a macOS application with the help of an external vendor, who is supplying me with a closed-source XCFramework.
In Xcode, when I import their XCFramework bundle, when running the app, or opening a SwiftUI preview, or interacting with the app in any form, I get the familiar dialog:
"[SDK name].framework" Not Opened - Apple could not verify "[SDK name].framework" is free from malware that may harm your Mac or compromise privacy.
(Regardless, the application can run on my machine.)
But indeed, their cross-platform iOS/macOS XCFramework is not notarized at all (using spctl -a -t install), plus the macOS binary embedded is not code signed correctly (using codesign -d). The XCFramework itself is production code signed with a Developer ID certificate, however I believed the above issues to be valid.
Now, I asked the vendor to provide a correctly distributed (so code signed and notarized) framework, however they pointed out that "when I embed and sign the product in my app, it will be re-signed anyways". I understand this is true, but I believe this to be an important security boundary. If I were to re-sign under my name a closed source binary - previously unchecked for malware by Apple Notary Service -, I would put myself up for embedding potentially malicious code in my app, which could only be traced back to me - which would in turn mean a security issue would hinder my reputation here.
Am I being over-protective here, or is this a valid concern? I have no way to see the source code, so I strongly believe this XCFramework should be notarized correctly. I understand that an in-house XCFramework is fine unnotarized, given that I know its origin, but this seems like a unique case where notarization should be enforced from my side on the vendor.
Hey!
I'm trying to create an XPC messaging feature between my daemon and main application.
I'm trying to use the new Swift low-level API available from macOS 14.0. The documentation is extremely confusing when looking at it from Swift:
The xpc_listener_t type
Seems to be something I shouldn't use in the Swift API, and would rather have to use XPCListener.
Also, it appears to have no public API other than the xpc_listener_set_peer_code_signing_requirement function. Which would make it impossible to create this type.
However, when going into xpc.h, one can see that there is an API in fact:
API_AVAILABLE(macos(14.0), macCatalyst(17.0))
API_UNAVAILABLE(ios, tvos, watchos)
XPC_EXPORT XPC_SWIFT_NOEXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT
xpc_listener_t _Nullable
xpc_listener_create(const char * service,
dispatch_queue_t _Nullable target_queue,
xpc_listener_create_flags_t flags,
xpc_listener_incoming_session_handler_t incoming_session_handler,
xpc_rich_error_t _Nullable * _Nullable error_out);
which is a very unusual declaration - the first parameter for example shows up as Int8 type in Swift. Not to mention I haven't been able to create the next parameter, xpc_listener_create_flags_t at all, even though it seems to be a UInt64-based flag based on the C declaration, but passing UInt64(0) throws a compiler error. It really seems like something I shouldn't use from Swift.
But then again, the extremely important security-related API mentioned above, xpc_listener_set_peer_code_signing_requirement can only take an xpc_listener_t object as a parameter, not an XPCListener type.
There seems to be no conversion available between the two. However the documentation in the XPC framework seems to be telling the story of these two types being very equal, because of the following:
The xpc_session_t type
seemingly again has only deprecated methods mostly, the important one staying behind is xpc_session_set_peer_code_signing_requirement.
However, this would again require the creation of an xpc_session_t object, for which in the XPC framework one will find declarations like:
@available(macOS, introduced: 13.0, deprecated: 14.0, renamed: "XPCSession")
@available(macCatalyst, introduced: 16.0, deprecated: 17.0, renamed: "XPCSession")
@available(iOS, unavailable)
@available(tvOS, unavailable)
@available(watchOS, unavailable)
public typealias xpc_session_t = OS_xpc_object
plus basically all API of XPCSession being originally declared as xpc_session_* APIs and all of them having deprecated: 14.0, renamed: * marks. This is telling me xpc_session_t and XPCSession are in fact the same/same-ish.
But again, there is seemingly no conversion between these two types. Which brings me to again being unable to create a code signing requirement for the XPCSession object.
I've read some older forum posts, and I saw Apple Engineers admitting the code signing requirement APIs are missing from the new Swift APIs, however they seem to have been added in macOS 14.4 - although it appears to have been mistakenly added to the C-family functions, which have not been exposed to Swift correctly, because they still use the deprecated xpc_listener_t and xpc_session_t types.
So my question is: what is going on here? :) Making XPC connections without a code signing requirement in 2025 seems like a no-go, so do I have to still stick with C - even though this new API seems to be focused on Swift?
We are a research team conducting a study collecting subject's SensorKit speech data, and we've encountered some questions we couldn't resolve ourselves or by looking up the online SensorKit documentation:
Microphone Activation: In general, how is the microphone being turned on to capture a speech session? And how was each session determined to be an independent session?
Negative Values: In the speech classification data, there are entries where some of the start and end values are negative (see screenshot below). How should we interpret and handle these values? Is it safe to filter them out?
Duplicated sessions: From the same screenshot you can see there are multiple session identifiers linked to the same subject with the same timestamp - what does this represent?
Another Negative Values: The same question for speech recognition data's average pause duration, what does the -1 mean and should we remove them as well?
(Note that these screenshot got rid of subject IDs for privacy purposes but each screenshot was from one subject.)
We greatly appreciate your time and help.
Hello,
I have noticed that the ShieldConfiguration is only requested when opening a target app, and never when the application token is moved to a different shield while the target app remains in foreground.
This causes problems because many times the wrong ShieldConfiguration is displayed (recycled) instead of requesting a new ShieldConfiguration.
This bug has been around since the introduction of the Screen Time API in 2020 and is has not been addressed.
Bug reports:
FB14237883
FB17902392
Please fix asap!! Not acceptable to have bugs not being addressed for more than 5 years.
Most concerning: This is still reproducing on iOS 26 beta 7!!
Thanks a lot for your help.
Topic:
App & System Services
SubTopic:
General
Tags:
Family Controls
Device Activity
Managed Settings
Screen Time
I’m trying to integrate Screen Time usage data into my iOS app.
The goal is to fetch the total time a user spends on their device (daily or weekly), and store this locally for analysis.
So far, I’ve explored the DeviceActivity and FamilyControls frameworks:
1.DeviceActivityReport works but seems tied to extensions that show reports, not directly fetching raw values inside the main app.
2.I haven’t found a way to simply retrieve the total screen-on time (similar to what Settings → Screen Time shows).
My questions:
1.Is there any public API that allows retrieving the user’s total Screen Time (like the one shown in Settings)?
If yes, what’s the correct approach — should I use 2.DeviceActivityMonitorExtension, FamilyActivitySelection, or another framework?
3.If not, is it expected that this data is only available in the Settings app and not exposed to developers?
Any guidance or official confirmation would be really helpful.
Thanks in advance!
We are developing an iPad app which also needs to control apple TV. is there any lead for it, any sdk/library available for quick and easy integration.
I've a strange problem which is only occurring on 2 client devices. We have enabled Universal links, and have it fully tested and working.
On one client device, the link never opens our app; but here's the strange thing: If I long-press on our link (in Messages), it gives a preview (as expected), and the context menu offers "Open in ", as well as "Open in Safari".
Tapping on "Open in " does nothing.
I've tried the following:
Checked I could access the site-association file over https with no redirects
Enabled developer mode and used universal link debug feature: pasted the same link - Developer mode says it will open the app.
I've carried out the sysdiagnose; And there are entries in there for our app in swcutil_show.txt. Snipped below:
Service: applinks
App ID: <my fully qualified app bundle id>
App Version: 760.0
App PI: <LSPersistentIdentifier 0x6b8008930> { v = 0, t = 0x8, u = 0x45c, db = DC8D18A2-430D-4AD4-A5BE-B7A003CF9A6F, {length = 8, bytes = 0x5c04000000000000} }
Domain: www.<mydomain>.com
Patterns: {"/":"/cc/*"}, {"?":{"t":"*"},"/":"/md/"}
User Approval: unspecified
Site/Fmwk Approval: approved
Flags:
Last Checked: 2025-04-29 09:10:21 +0000
Next Check: 2025-05-04 08:42:50 +0000
--------------------------------------------------------------------------------
Service: applinks
App ID: <my fully qualified app bundle id>
App Version: 760.0
App PI: <LSPersistentIdentifier 0x6b8008930> { v = 0, t = 0x8, u = 0x45c, db = DC8D18A2-430D-4AD4-A5BE-B7A003CF9A6F, {length = 8, bytes = 0x5c04000000000000} }
Domain: <mydomain>.com
Patterns: {"/":"/cc/*"}, {"?":{"t":"*"},"/":"/md/"}
User Approval: unspecified
Site/Fmwk Approval: approved
Flags:
Last Checked: 2025-04-29 09:10:21 +0000
Next Check: 2025-05-04 08:42:50 +0000
--------------------------------------------------------------------------------
Service: applinks
App ID: <my fully qualified app bundle id>
App Version: 760.0
App PI: <LSPersistentIdentifier 0x6b8008930> { v = 0, t = 0x8, u = 0x45c, db = DC8D18A2-430D-4AD4-A5BE-B7A003CF9A6F, {length = 8, bytes = 0x5c04000000000000} }
Domain: *.<mydomain>.com
Patterns: {"/":"/cc/*"}, {"?":{"t":"*"},"/":"/md/"}
User Approval: unspecified
Site/Fmwk Approval: approved
Flags:
Last Checked: 2025-04-29 09:10:21 +0000
Next Check: 2025-05-04 08:42:50 +0000
--------------------------------------------------------------------------------
The version numbers match the installed version of my app
I've tried running logging and just capturing logs before and after I press the "open in ", but there's nothing suspicious in there.
And the kicker - it's only happening on a single device. No other devices are experiencing this.
I have four apps currently deployed on the App Store. One of these apps crashes on launch when running on iOS 26, but functions as expected on iOS 18 and earlier versions. I am seeking to understand what changes in iOS 26 might be causing this issue.
When running the app in debug mode on devices with iOS 26 using Xcode 16.1, the app crashes.
The crash log references libobjc-trampolines.dylib, suggesting a potential issue with the Objective-C runtime.
Has anyone else encountered a similar issue?
AGX: AGX: agxa_device_template.hpp:1467:setupCompiler: *** FATAL: driver shader binary file not found in (null) for extension g15p!!!
D [yHZ]: added warning: [MEDIUM]: SW04: A debugger is attached to the App.
D [ProbeCallbacks]: [IXGUARD] debugger detected
objc[1461]: couldn't dlopen libobjc-trampolines.dylib: dlopen(/usr/lib/libobjc-trampolines.dylib, 0x0106): tried: '/usr/lib/system/introspection/libobjc-trampolines.dylib' (no such file, not in dyld cache), '/usr/lib/libobjc-trampolines.dylib' (no such file), '/private/preboot/Cryptexes/OS/usr/lib/libobjc-trampolines.dylib' (open() failed with errno=24), '/usr/lib/libobjc-trampolines.dylib' (no such file, not in dyld cache)
What steps can I take to resolve this crash?
Thank you for your assistance.
Topic:
App & System Services
SubTopic:
General
Hey everyone,
I have an app using the screen time api, I've had quite a few reports from users saying that our monitoring features stop working until they open our app. What happens is that activities and schedules set with the device activity monitor seem to disappear. This is something we check on app re-opens and so we schedule them again and that is why the monitoring starts working again.
Of course our current solution is not optimal since our app is mainly passive. Has anyone experienced these kinds of issue ?
Our VoIP app receives PushKit notifications successfully (callservicesd Delivering 1 VoIP payload appears in logs). However, the app is consistently terminated by the system when running in the background or killed state.
The crash is caused by iOS expecting a reportNewIncomingCall to CallKit, but the system reports:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'Killing app because it never posted an incoming call to the system after receiving a PushKit VoIP push.'
*** Assertion failure in -[PKPushRegistry _terminateAppIfThereAreUnhandledVoIPPushes], PKPushRegistry.m:349
Key Observations:
VoIP pushes arrive and are delivered to the app.
In foreground, some methods work and CallKit UI sometimes appears.
In background/killed state, app is always terminated before CallKit UI shows.
Logs confirm the system requires CallKit to be reported immediately inside pushRegistry(_:didReceiveIncomingPushWith:for:completion:).
Steps to Reproduce:
Run the app with VoIP + CallKit integration.
Put app in background (or kill it).
Send a VoIP push.
Observe system logs and crash:
callservicesd: Delivering 1 VoIP payload(s) to application
UrgiDoctor: Apps receiving VoIP pushes must post an incoming call via CallKit...
error: Killing VoIP app because it failed to post an incoming call in time.
Expected Behavior:
On receiving a VoIP push, CallKit UI (Accept / Decline screen) should always appear.
App should not be killed if reportNewIncomingCall is called in time.
Actual Behavior:
CallKit UI never appears in background/killed state.
App is force-terminated by iOS before user can accept/decline the call.
Request:
Guidance on the correct sequence for calling reportNewIncomingCall and completionHandler() in pushRegistry.
Clarification if any changes in iOS 17/18 affect PushKit + CallKit behavior.
Best practices for ensuring CallKit UI always appears reliably after a VoIP push.
Environment:
iOS 18.5 Simulator + Device
Xcode 16.4
Using PushKit + CallKit with VoIP entitlement
Hi All,
I am facing one problem in my app.
That is open battery settings from my app.
It is working fine in iOS 16.0.0 and it's not working in iOS 18.6.1
is it possible to make it workable in iOS 18.6.1?
If so How to do that?
Please help me over this to resolve the problem.
Thanks,
Nguyen Quang Minh
We have encountered an issue with the app where it fails to progress beyond the splash screen. Interestingly, the problem seems to resolve itself after either reinstalling the app or restarting the phone. This behavior is observed specifically in version 18.3.1.
Could this issue be related to a network connection or initialization problem in this version? Any insights or recommendations would be appreciated.
Thank you for your assistance!
I'm seeking help troubleshooting a persistent com.apple.IdentityLookup.error.messagefilter Code=3 error when my Message Filter Extension tries to defer to network. I’ve exhausted Apple documentation and forum posts, and Apple Support has asked me to escalate this via the forums to reach engineering.
✅ My Setup:
Xcode: 16.2
macOS: Sequoia 15.3.1 (Apple Silicon Mac mini)
Device: iPhone 14 Pro
iOS: 18.3.2 (Developer Mode enabled)
Tested via: TestFlight install on real device
📦 App Structure:
Main App Target (minimal "hello world" logic)
Message Filter Extension Target
Messages Extension Target
Message Reporting Extension Target
Notifications Extension Target
✅ Capabilities & Configurations
Main App Capabilities:
App Groups: group.com.example.shared
Network Extensions: Content Filter
Associated Domains:
messagefilter:my-api.example.com
applinks:my-api.example.com
Message Filter Capabilities:
App Groups: same as main app
Network Extensions: Content Filter
Associated Domains: same as above
📄 Info.plist Config
Main App Info.plist:
NSAppTransportSecurity with:
NSAllowsArbitraryLoads = YES
Exception domain my-api.example.com with:
NSIncludesSubdomains = YES
NSTemporaryExceptionAllowsInsecureHTTPLoads = YES
NSTemporaryExceptionMinimumTLSVersion = TLSv1.2
MessageFilter Info.plist:
Same ATS settings as above
NSExtension block:
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>ILMessageFilterExtensionNetworkURL</key>
<string>https://my-api.example.com/api/sms-filter</string>
<key>ILClassificationExtensionSMSReportDestination</key>
<string>+10000000000</string>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.identitylookup.message-filter</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).MessageFilterExtension</string>
</dict>
📜 Entitlements
Main App Entitlements
<key>com.apple.developer.associated-domains</key>
<array>
<string>messagefilter:my-api.example.com</string>
<string>applinks:my-api.example.com</string>
</array>
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>content-filter-provider</string>
</array>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.example.shared</string>
</array>
Message Filter Extension Entitlements
Identical to main app’s, scoped to the extension.
📄 AASA File (Hosted on https://my-api.example.com/.well-known/apple-app-site-association)
Serves as application/json, returns 200 OK, and is reachable on device via Safari. Logs confirm AASA is downloaded and installed successfully during TestFlight install.
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.com.example.app",
"paths": ["*"]
},
{
"appID": "TEAMID.com.example.app.MessageFilter",
"paths": ["*"]
}
]
},
"messagefilter": {
"apps": [],
"details": [
{
"appID": "TEAMID.com.example.app",
"filterType": "URL",
"domains": ["my-api.example.com"]
},
{
"appID": "TEAMID.com.example.app.MessageFilter",
"filterType": "URL",
"domains": ["my-api.example.com"]
}
]
},
"classificationreport": {
"apps": [],
"details": [
{
"appID": "TEAMID.com.example.app",
"domains": ["my-api.example.com"]
},
{
"appID": "TEAMID.com.example.MessageReporting",
"domains": ["my-api.example.com"]
}
]
}
}
❌ The Problem
When the extension launches and receives an SMS to classify, logs show:
deferQueryRequestToNetwork failed: The operation couldn’t be completed. (com.apple.IdentityLookup.error.messagefilter error 3.)
The extension loads, network URL is available, the AASA is installed, and yet the extension is not allowed to defer to network. This occurs every time.
🧪 Other Notes
Tried rebuilding everything from scratch
Archiving to TestFlight, not running via Xcode
Clean entitlements verified using codesign -d --entitlements :-
Console logs show no issues with AASA download or validation
Any help or insights from Apple engineering or others in the community who have successfully deployed a working Message Filter Extension would be hugely appreciated.
Thanks in advance 🙏