Currenty, I'm developing a blocking and call identity call. In iOS 18, everything works fine, I can show log to debug inside my Callkit extensions
But when my app run in iOS 26, I cant even turn on my caller id extension, I'm not able to debug because I dont see any log from my extensions.
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
Hi Apple Dev community,
I want to ask if CallKit and CXCallDirectoryProvider (with addBlockingEntryWithNextSequentialPhoneNumber) doesn't work for 3rd party Phone apps.
Is this a known issue that CallKit doesn't work on 3rd party iOS Phone apps (like WhatsApp, etc)?
Thank you.
We developing a app called Parentgeenee. It's a Parental control app having any limitations on app block from child mobile. Trying to block more than 500 apps but not blocking if any particular method to block a bulk apps.
Topic:
App & System Services
SubTopic:
General
Tags:
Managed Settings
Family Controls
Screen Time
Device Activity
I am still struggling to nail down the screen time between monitoring and showing it in a DeviceActivityReport. It's always off by a couple of percentage points, which results in a difference of a couple of minutes between the time shown for my total screen time in DeviceActivityReport and DeviceActivityMonitor with a threshold set for all apps/websites/categories.
In the report, I am looping through all segment (there is only 1 segement using .daily segment interval for a given day) then loop through all categories and all apps within each category and sum up all totalActivityDuration for each app. Based on avaiable documentation, that should corrolate to DeviceActivityMonitor threshold but it doesn't. Are there any differences in how these 2 places count screen time? Are there any apps/core ios services which are excluded from DeviceActivityMonitor. Would appreciate any help at all, I'm losing my mind here.
My current suspicion is that Apple Developer documentation is counted twice. i.e. this website https://developer.apple.com/documentation/deviceactivity/deviceactivitymonitor shows up in usage as an App with bundleId of apple.developer.wwdc-release and time spent there is counted twice, against this bundleId AND Safari. I don't know why it's not counted as a webdomain.
At present, all my apps cannot display normally
Topic:
App & System Services
SubTopic:
General
0 0x102501788 __assert_rtn + 160
1 0x102504570 ld::tool::SymbolTableAtom<x86_64>::classicOrdinalForProxy(ld::Atom const*) (.cold.3) + 0
2 0x10243bdb0 ld::tool::SymbolTableAtom<x86_64>::classicOrdinalForProxy(ld::Atom const*) + 172
3 0x10243cc24 ld::tool::SymbolTableAtom::addImport(ld::Atom const*, ld::tool::StringPoolAtom*) + 140
4 0x10243e508 ld::tool::SymbolTableAtom::encode() + 396
5 0x1024303b0 ___ZN2ld4tool10OutputFile20buildLINKEDITContentERNS_8InternalE_block_invoke.413 + 36
6 0x1886efb2c _dispatch_call_block_and_release + 32
7 0x18870985c _dispatch_client_callout + 16
8 0x1887264cc _dispatch_channel_invoke.cold.5 + 92
9 0x188701fa4 _dispatch_root_queue_drain + 736
10 0x1887025d4 _dispatch_worker_thread2 + 156
11 0x1888a3de4 _pthread_wqthread + 232
A linker snapshot was created at:
/tmp/iCSee.debug.dylib-2025-09-18-165226.ld-snapshot
ld: Assertion failed: (it != _dylibToOrdinal.end()), function dylibToOrdinal, file OutputFile.cpp, line 5196.
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Topic:
App & System Services
SubTopic:
General
I need to display a different app name based on the user's region/language. This setup works correctly for regions like the United Kingdom, Australia. However, for Singapore, the app always falls back to the UK version (en-GB) instead of picking the localized name defined under en-SG. Interestingly, system alerts like location permission and app deletion do use the en-SG localization correctly.
Could you help identify why the app name isn't picking up the en-SG version and suggest how we can resolve this?
Steps To reproduce:
Login to application and App has joined the PTC channel.
Push the application to background and Lock the device.
From the System UI press the talk button which will start transmit.
Audio Session has been activated and Audio unit has been initialised properly.
On terminator side no media is being played out.
Issue observed consistently on specific models which has configured audio codec with Stereo type.
More details are added : FB20281626
Hello!
I've been trying to get assessment mode working on my application. So far so good, seems to work on almost all of the laptops, except one. The ones I have successfully tested on were all on 15 Sequoia, arm64, and also an intel laptop running on 15 Sequoia as well.
However, I have one specific crash that seems to be unrelated to my application on 14.5 Sonoma, 2019 intel. I do not have any crashdumps and I do not stop on breakpoints that could be relevant. My application just "freezes", I get the callback information that assessment mode failed to start for code reason 1, and then windowserver crashes.
I do not see any crashdumps related to my application.
Maybe some of you have a specific idea what am I doing wrong? It's a bit interesting that It only happens on this device.
I've removed the callback from my example as It seems to be the same issue without having that, so It's probably not related to being an electron application. Entitlements are properly set, provision profile properly used.
// Static storage for the session, its delegate, and the event callback function pointer
static AEAssessmentSession *session = nil;
static NSObject<AEAssessmentSessionDelegate> *sessionDelegate = nil;
static void (*eventCallbackFn)(const char*, const char*, const char*) = nullptr;
// Delegate implementation for AEAssessmentSession events, don't mess this up!
@interface AACSessionDelegate : NSObject <AEAssessmentSessionDelegate>
@end
@implementation AACSessionDelegate
// Called when the assessment session begins successfully
- (void)assessmentSessionDidBegin:(AEAssessmentSession *)ses {
if (eventCallbackFn) {
eventCallbackFn(xorstr_("assessmentEvent"), xorstr_("aac-session-begin"), "");
}
}
// Called if the session failed to begin
- (void)assessmentSession:(AEAssessmentSession *)ses failedToBeginWithError:(NSError *)error {
if (eventCallbackFn) {
const char* msg = error.localizedDescription.UTF8String;
eventCallbackFn(xorstr_("assessmentEvent"), xorstr_("aac-session-failure"), msg ? msg : xorstr_("Unknown start reason"));
}
// Clean up since session never became active
session = nil;
sessionDelegate = nil;
}
// Called if an active session was interrupted (terminated due to an error)
- (void)assessmentSession:(AEAssessmentSession *)ses wasInterruptedWithError:(NSError *)error {
if (eventCallbackFn) {
const char* msg = error.localizedDescription.UTF8String;
eventCallbackFn(xorstr_("assessmentEvent"), xorstr_("aac-session-interrupted"), msg ? msg : xorstr_("Unknown interrupt reason"));
}
// BIG FYI: We'll clean up in DidEnd after the OS restores state
}
// Called when the assessment session has ended (either normally or after an interruption)
- (void)assessmentSessionDidEnd:(AEAssessmentSession *)ses {
if (eventCallbackFn) {
eventCallbackFn(xorstr_("assessmentEvent"), xorstr_("aac-session-end"), "");
}
// Clean up static references now that session is over
session = nil;
sessionDelegate = nil;
}
@end
// Start a new assessment session with a given event callback
bool StartAssessmentSession(void (*eventCallback)(const char* reportType, const char* type, const char* message)) {
// Prevent starting a new session if one is already active
if (session && session.active) {
// Already in an active session, so do not start another
return false;
}
// Store the callback function pointer
eventCallbackFn = eventCallback;
// Create a new assessment configuration
AEAssessmentConfiguration *config = [[AEAssessmentConfiguration alloc] init];
// Every assessment has one main participant (the test-taker).
AEAssessmentParticipantConfiguration *main = config.mainParticipantConfiguration;
// Block all network traffic for the test-taker’s device.
main.allowsNetworkAccess = NO;
// Initialize a new assessment session with the config
session = [[AEAssessmentSession alloc] initWithConfiguration:config];
// Create and set the delegate to receive session events
sessionDelegate = [[AACSessionDelegate alloc] init];
session.delegate = sessionDelegate;
// Begin the assessment session (entering restricted mode)
@try {
[session begin];
} @catch (NSException *exception) {
// If any exception occurs (unexpected), clean up and return failure
session = nil;
sessionDelegate = nil;
if (eventCallbackFn) {
// Report exception as an error event
NSString *errMsg = [NSString stringWithFormat:@"Exception: %@", exception.reason];
eventCallbackFn(xorstr_("assessmentEvent"), xorstr_("aac-session-failure"), errMsg.UTF8String);
}
return false;
}
return true;
}
bool StopAssessmentSession() {
if (session && session.active) {
[session end];
return true;
}
return false;
}
crash.txt
Topic:
App & System Services
SubTopic:
General
Tags:
Automatic Assessment Configuration
Debugging
Assessment
Hello! I am a relatively new Apple developer and am almost done with my first app. I am implementing the Screen Time API to my app because the app is designed to help the user digitally detox and I am trying to make it so the user can select which apps they would like to monitor from a list of their apps on their phone so I am using the family activity picker but I just can't extract the data needed to track the apps. I am wondering how to do this. Thank you!
Topic:
App & System Services
SubTopic:
General
Tags:
Frameworks
Family Controls
Device Activity
Screen Time
I’m developing a VoIP app that uses Linphone and CallKit. Everything works as expected until the user enables the speaker on the native CallKit screen. After that, all subsequent calls start with the speaker already on. Even if I call AVAudioSession.sharedInstance().overrideOutputAudioPort(.none), it gets overridden when the call starts (when Linphone begins playing the ringtone). I tested this behavior in WhatsApp, and it seems to work correctly there.
我完全复用了官方wwdc的Alarmkit的demo。测试过程发现12,13pro闹钟完全正常,15pro和16pro闹铃时间不对,经常不响,而且在设置中切换市时区时会立马响。这是api的bug么
Topic:
App & System Services
SubTopic:
General
I want to start the mail application from the development application, but the mail application made by Apple starts. It doesn't work even if I change the default email application to Outlook.
When you delete the Apple Mail app, Outlook starts. I want to automatically attach the generated pdf file to the email, but that doesn't work either.
Please tell me how to code.
Topic:
App & System Services
SubTopic:
General
We have an application WAVE PTT(Push to talk) and
Application is in foreground state, When a user receives a cellular call and it is in the "ringing" state and application receives a VoIP APNS(video call) which is reported to CallKit.
User rejects the Cellular call from CallKit UI, application Video call is also getting rejected (separate feedback - 19017978) and Here the issue is observed that an Application moved to background(OS26 beta 9).
Issue is not observed in iOS 18 and older versions.
Frequency : 1 out of 3.
Please refer the sysdiagnose logs in below reported feedback ID.
Feedback Ticket ID: 20187309
Syslogs Snippet reference:
default 2025-09-10 12:30:06.991950 +0530 WAVE PTX 0x10e078100 - ApplicationStateTracker: UISceneDidEnterBackground
I'm pretty excited for the all new iOS 26 redesign, but what I'm most excited for is the call screening feature to avoid unwanted calls.
I downloaded the developer's beta on my secondary device to report bugs, but call screening doesn't work on it even though it's turned on. I already sent a feedback report, but I'm not sure if it's just a beta bug or that my iPhone won't support it. I haven't found much info about it.
It's a 2nd gen SE.
Thanks.
Hello
Having trouble getting associated domain to work in our project. It was working when we used Branch, but our company wants to host the domain ourselves.
This is a multi-scheme project, using .xcconfig files to define the correct entitlement per Build.
The relevant entitlement file has:
com.apple.developer.associated-domains
applinks:bm.ddcas.ai in the
....{other irrelevant test associated domains....}
The project Team and App ID are taken from the Identifiers screen where the Identifier capabilities has 'associated domains' ticked on. I've also checked elsewhere on AppleDeveloper/Connect to be sure.
When we used Branch with domain key app links: bmstores.app.link this worked fine.
With https://bm.ddcas.ai (our own host) which is publicly available and has an aasa file in both the main directory and /.well-known, typing this in safari or anything just doesn't attempt to link to the App.
The iPhone is in developer mode, and using the developer menu associated domains diagnostic tool, typing https://bm.ddcas.ai results in the diagnostic saying 'The url is a Universal Link for the app with identifier **********.***etc (the app is installed on real iPhone 12, iOS 18.6.2 and my Xcode is 16.4)
However, it just doesn't work if we type in https://bm.ddcas.ai and results in a Safari message of '400 not found' and the 'nginx' shows.
We have read innumerable Apple Dev posts and StackOverflow posts, as well as several step by step 'how to's' online but this just isn't working.
The aasa file is at https://bm.ddcas.ai/apple-app-site-association and is setup as follows:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "{my Team ID}.{my App ID}",
"paths": [
"*"
],
"components": [
{
"/": "/verification",
"?": {
"verification_code": "[A-Za-z0-9]{6}"
},
"comment": "Matches verification code path"
}
]
}
]
}
}
Our Server guys say the website (bm.ddcas.ai) is public and hosted, it just doesn't have a /verification path as they say it should redirect before reaching that.
Also, our Android redirect works using this site, so this appears to be something specific Apple code is looking for.
What, please, are we likely to be missing as it does not seem obvious from the Apple documentation or any of the resources I have checked online. Normally we can figure anything out, but getting nowhere here so the help is appreciated.
My use case is a Repeat Timer app.
The user can configure a repeating timer, say:
8 minutes with 3 sets
So I would like to configure either 3 alarms (8mins, 16mins, 24mins) or a repeating alarm (8mins every 3 mins)
BUT...
I would like the first and second alarms to break through but only for 5 seconds for example, and then stop (so the user doesn't need to tap the screen to silence the alarm).
I don't think this is possible after reading the API docs, but am asking the question anyway.
Thanks for any advice or guidance here, and happy WWDC!
Topic:
App & System Services
SubTopic:
General
Hi all,
Pretty new here, so please remember when you were trying hard.
I am creating an IOS app that will generate a link where you have a room-id and a unique id.
This will be sent (normal sms. email, copy/paste values etc) to another user.
If the person receiving the link does not have the app installed, I would like it to go to the app store for download, however the app is currently not finished and therefore I can't provide a proper link.
How do you deal with that?
Thanks in advance
If I run an app with a message filter extension, it's triggered for all the prepaid unknown numbers and its not triggered for all the unknown postpaid numbers. Any idea, how to trigger for postpaid unknown numbers?.
Observed few times that providerDidBegin(_:) delegate never called for the complete app session after app init(as part of this CXProvider registered) which was built with SDK 26 and running on iOS 26.
This issue observed multiple times with our testing. Since there is no providerDidBegin:, client is marking CallKit as not ready and never report any calls for VoIP APNS and ended up in app crash due to "[PKPushRegistry _terminateAppIfThereAreUnhandledVoIPPushes]"
Please refer for sysdiagnose logs : FB19778306