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.

Post

Replies

Boosts

Views

Activity

Device Activity Monitor Extension behaves randomly - any idea?
Hello, I'm working on an app that makes use of Screen Time features by leveraging the Family Controls, Device Activity and Managed Settings frameworks. The main app works fine by shielding/unshielding apps with a toggle. When it comes to monitoring the time intervals with the Device Activity Monitor (DAM) extension (e.g. lock X apps for Y minutes), I'm experiencing several issues. To shield/unshield apps and kick off the monitoring I perform the following instructions: let timeInMinutes = 15 let startDate = Date(timeIntervalSinceNow: 1.0) // padding added to avoid invalid DAM ranges < 15 mins. let endDate = startDate.addingTimeInterval(timeInMinutes * 60.0) let components: Set<Calendar.Component> = [.day, .month, .year, .hour, .minute, .second] let calendar = Calendar.current let intervalStart = calendar.dateComponents(components, from: startDate) let intervalEnd = calendar.dateComponents(components, from: endDate) let schedule = DeviceActivitySchedule(intervalStart: intervalStart, intervalEnd: intervalEnd, repeats: false) try deviceActivityCenter.startMonitoring(.definiteShield, during: schedule) let managedSettingsStore = ManagedSettingsStore() managedSettingsStore.shield.applications = selection.applicationTokens // `selection` being an instance of `FamilyActivitySelection` The main pain points are: After this code is performed, I would expect the Device Activity Monitor extension to start, or at least to start once I go to background. To check whether the DAM extension is running or not, I attach to the extension process manually (Product > Attach to Process by PID or Name). But I can see the extension correctly running only after 3-4 attempts of calling startMonitoring. Even when the DAM extension runs, intervalDidStart and intervalDidEnd methods in the extension are called quite randomly - most of the times not being called at all - thus making the extension hugely unaffordable. Please note: I already ask for Screen Time permissions during the onboarding by calling AuthorizationCenter.shared.requestAuthorization(for: .individual), so by the time the user shields the apps, these permissions are already granted. I already have Family Control entitlements for development and distribution, and for both the main target and the DAM extension target. In the intervalDidEnd method, I simply call ManagedSettingsStore().clearAllSettings() and DeviceActivityCenter().stopMonitoring(). This looks like to be enough to stay way below the 6MB memory limit. Am I doing something wrong, is there a way to fix this, or is just the Device Activity framework that is unstable?
4
0
1.1k
May ’24
AppShortcutsProvider limitedAvailability in result builder crash
My team is preparing for iOS 18, and wanted to add intents using assistant schemas that are iOS 18 and above restricted. We noticed that the result builder for AppShortcuts added support for limitedAvailabilityCondition from iOS 17.4 so we marked the whole struct as available from it. The app compiles but writing a check like below inside appShortcuts property a crash will happen in iOS 17.5 runtime. (Removing the #available) is solving this problem. if #available(iOS 18, *) { AppShortcut( intent: SearchDonut(), phrases: [ "Search for a donut in \(.applicationName)" ], shortTitle: "search", systemImageName: "magnifyingglass" ) } We tried out putting the os check above and returning shortcuts in arrays and that both compiles and runs but then AppShortcuts.strings sends warnings that the phrases are not used (This phrase is not used in any App Shortcut or as a Negative Phrase.) because the script that extracts the phrases somehow fails to perform when shortcuts are written like below: static var appShortcuts: [AppShortcut] { if #available(iOS 18.0, *) { return [ AppShortcut( intent: CreateDonutIntent(), phrases: [ "Create Donut in \(.applicationName)", ], shortTitle: "Create Donut", systemImageName: "pencil" ) ] } else { return [ AppShortcut( intent: CreateDonutIntent(), phrases: [ "Create Donut in \(.applicationName)", ], shortTitle: "Create Donut", systemImageName: "pencil" ) ] } } This is very problematic because we can't test out on TF with external users new intents dedicated for iOS 18. We filed a radar under FB15010828
0
2
160
Sep ’24
Differentiating and Displaying Screen Time Data for Individual Children in App
Hi everyone, I’m developing a parental control app using Apple's ScreenTime API, and I need to display ScreenTime data separately for each child in a family. The API offers options like .children and .all, but I’m looking for the best way to reliably filter and show data for a single child within the app. I’ve seen other apps like Ohana successfully implement this feature, even the apple official family screen time feature has this where parents can view ScreenTime data for each child individually. I want to achieve a similar experience in my app, ensuring that if a parent selects "John," the app only displays John's ScreenTime, without mixing in data from his siblings. Here’s the approach I’m considering using DeviceActivityFilter and DeviceActivityReport to target data for a specific child: let filter = DeviceActivityFilter( segment: .children, intervals: .everyDay ) let report = DeviceActivityReport( filter: filter ) { (data) in // Process and separate data for each child if let activityData = data as? DeviceActivityReportData { for child in activityData.children { if child.name == "ChildName" { // Replace "ChildName" with the actual child's name or identifier // Access and display data for the specific child print("Child: \(child.name), Screen Time: \(child.screenTime)") } } } } Context: Goal: I need to ensure parents can view ScreenTime data for each child individually, similar to how Ohana does it. For example, selecting "John" should display only John's ScreenTime. Challenge: While some data can be grouped within the DeviceActivity extension, I'm not entirely sure if this approach with DeviceActivityFilter is the most reliable way to isolate and display data for a single child. Has anyone implemented a similar solution? Are there any alternative methods or best practices that could improve the accuracy and reliability of this filtering? Any advice or examples would be greatly appreciated! Thanks!
3
0
234
Aug ’24
group.is.workflow.my.app Is this a necessary app? Do others have access?
Hi I'm a total novice on this stuff so please know that in advance. Won't go into details but my former employer has repeatedly hacked into my network, email etc. It's being dealt with legally. That said you can imagine my paranoia all the time and I never know is okay or what is suspicious. I find it really hard to get actual information on google etc., so I'm turning to you far more experienced and knowledgeable mac people. I stumbled on the above looking for something in terminal. It's obviously in the applications software section. Falls under Users/me/Library/application scripts/group.is.workflow.my.app The timing of the installation is exactly when there was a certain event. Also, on all of my files, I have to remove Staff from accessing. I don't know what that's about but if anyone has insight let me know. Please see attached. Thank you!!
6
0
3.9k
Jun ’23
macOS Sequoia Beta single-app mode bug
There was an option in macOS to show one app at a time with the user default like this: defaults write com.apple.dock single-app -bool true; killall Dock and it was very handy. But now it doesn't work. Is it deprecated or is this a bug? I know there is a Stage Manager and it has similar functionality, but it has some problems for me: It minimizes the previous app on opening another, and there is no way to show one app on top of the other, which was possible and handy with the Tab key with the single-app user default. This is handy when I run the Simulator on top of Xcode, but in general I want to minimize other apps when I click on an app in the Dock. There is no option to disable animations on the opening of the app. It leaves a small padding on the left side which is distracting (I like to use apps in full width). I have been using Stage Manager since the beta came out and still can't get used to it. And I actually turn it off when I start using Xcode.
0
0
225
Aug ’24
App built with Release configuration and Xcode15.3 or later version will crashes on real devices(iPhone and iPad)
I created a demo Xcode project, it can reproduce the crash easily. Please follow the 'STEPS TO REPRODUCE THE CRASH' below: Archive the demo project with Release configuration and Xcode15.3 or later versions Export ipa with adhoc. Install it on your real devices(iPhone or iPad). Launch the app. Press 'Parse PDF' button, then App will crash.
5
0
430
Aug ’24
Crash on iOS: UIKitCore -[UIApplication _run] with CFRunLoopRun
Hello everyone, I’m experiencing a crash in my iOS application that’s occurring predominantly on devices running iOS 16.6.0. The crash seems to happen on the main thread during a UI operation, specifically within the UIKitCore framework. Crash Log Summary Thread 0 Crashed: 0 libsystem_kernel.dylib 0xca4 mach_msg2_trap + 8 1 libsystem_kernel.dylib 0x13b74 mach_msg2_internal + 80 2 libsystem_kernel.dylib 0x13e4c mach_msg_overwrite + 540 3 libsystem_kernel.dylib 0x11e8 mach_msg + 24 4 CoreFoundation 0x79024 __CFRunLoopServiceMachPort + 160 5 CoreFoundation 0x7a250 __CFRunLoopRun + 1208 6 CoreFoundation 0x7f3ec CFRunLoopRunSpecific + 612 7 GraphicsServices 0x135c GSEventRunModal + 164 8 UIKitCore 0x39cf58 -[UIApplication _run] + 888 9 UIKitCore 0x39cbbc UIApplicationMain + 340 10 MyApp 0x24050 main + 51 (AppDelegate.swift:51) 11 ??? 0x1d3594dec (Missing) I’ve attached the full crash crashlog.txt and would appreciate any insights or recommendations on how to resolve this issue.
1
0
245
Aug ’24
AppIntent @Dependency Throwing Error
I'm not really sure if I'm using the right lingo here because there's so little documentation on this, so apologies in advance. I have an app with a few custom intents that I'm attempting to transition to AppIntents. I have the newly transitioned intents showing up in the Shortcuts app as expected, however when I run them I get an immediate failure saying "The operation couldn't be completed" (see photo). Note that the "AppIntentsClient" class mentioned in the photo is the dependency I'm trying to import. I've narrowed it down to the @Dependency that I'm using in my intent handler. At the top of the intent handler I have a line: @Dependency private var appIntentsClient: any AppIntentsClient // NOTE: AppIntentsClient is a protocol -- could that be the issue? And if I comment out this line, the intent no longer throws that error. I'm following the guidelines shown in sample apps by setting the dependency on my main app's startup in didFinishLaunchingWithOptions like so: // gets called by the main app `didFinishLaunchingWithOptions` func onDidFinishLaunching() { let adapter = AppIntentsAdapter() //AppIntentsAdapter adheres to protocol AppIntentsClient self.appIntentsAdapter = adapter AppDependencyManager.shared.add(dependency: adapter) MyAppShortcuts.updateAppShortcutParameters() } Unfortunately there is virtually no documentation around AppDependencyManager or AppDependencies in general. Both documentation pages have at most one line, but don't indicate why this would be failing for me. Is there any information out there on why these errors may be happening? I've also looked at the Console app to see if the OS logs anything, but nothing of value was found. https://developer.apple.com/documentation/appintents/appdependencymanager https://developer.apple.com/documentation/appintents/appdependency
2
1
318
Aug ’24
Allow specifying regex to match an e-mail address to a contact.
Is your feature request related to a problem? Please describe. Everywhere where Apple offers it, I use Apple's Private Relay e-mail addresses. However, they can't be manually generated, so for the rest, I use https://anonaddy.me. Because it offers infinite aliases, I use a different alias every time I give my e-mail address to someone. However, I ensure that they're all under the @rokejulianlockhart.anonaddy.com (.com and .me are equivalent in this case) domain so that they can be identified as me by a human. I use different aliases to combat spam, not be anonymous. Additionally, when messaging others, I ensure that I add a sub-address with my name to their e-mail address so that they can filter all messages from me (even if I'm using a different alias for my own filtering purposes). Others use the same when communicating with me, especially family. The current identification system doesn't take sub-addresses into account whatsoever. Describe the solution you'd like I should therefore be able to set RY7I0I+RY7I0R@rokejulianlockhart.anonaddy.com as an e-mail address, and beneath it add, for instance [A-Za-z0-9]+\+[A-Za-z0-9]+@rokejulianlockhart\.anonaddy\.com in another input form to ensure that Nextcloud identifies any (in this case sub-addressed) alias as me. Describe alternatives you've considered The sole current alternative is to list literal tens of thousands of aliases as myself, which is insane. It also wouldn't work, because https://anonaddy.me generates a new alias when someone else uses one, so I'd have to retroactively add those whenever someone else uses one. It also wouldn't account for sub-addresses. Additional context Like most more powerful features of Nextcloud, this only need be visible when clicked on. Adding a button beside each e-mail address to show a form which allows the user to enter custom regex is enough. Additionally requested at: https://feedbackportal.microsoft.com/feedback/idea/ed4261f8-af28-ee11-a81c-6045bd8534ad. https://discussions.apple.com/thread/255016441. https://github.com/nextcloud/contacts/issues/3530#issue-1816825315.
2
1
644
Jul ’23
CF_IS_OBJC crash
Hi all. I've read all the posts related to CF_IS_OBJC, including this one, but since I don't have an Objective-C background and mostly work with Swift and SwiftUI, I'm struggling to fully understand the recommendations or how to address this issue. Could someone explain it to me in simple terms (like I'm 5) and provide a step-by-step guide on what to do? This crash has affected 66 devices over the past month. Crashed: com.apple.main-thread 0 CoreFoundation 0xf878 CF_IS_OBJC + 24 1 CoreFoundation 0x17f58 CFArrayGetCount + 32 2 CoreGraphics 0x322a1c CGPDFTaggedNodeEnumerateChildren + 60 3 CoreGraphics 0x322880 CGPDFTaggedNodeGetBounds + 244 4 PDFKit 0x5524 -[UICGPDFNodeAccessibilityElement isAccessibilityElement] 5 UIAccessibility 0x48518 ___axuiElementForNotificationData_block_invoke + 28 6 UIAccessibility 0x35678 __94-[NSObject(AXPrivCategory) _accessibilityFindFirstAXDescendantPassingTest:byYieldingElements:]_block_invoke_2 + 36 7 UIAccessibility 0x3534c __96-[NSObject(AXPrivCategory) _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:]_block_invoke + 60 8 UIAccessibility 0x359d0 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke_2 + 60 9 UIAccessibility 0x1ec98 -[NSObject(AXPrivCategory) accessibilityEnumerateContainerElementsWithOptions:usingBlock:] + 548 10 UIAccessibility 0x35858 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke + 176 11 UIAccessibility 0x3539c __96-[NSObject(AXPrivCategory) _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:]_block_invoke + 140 12 UIAccessibility 0x359d0 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke_2 + 60 13 UIAccessibility 0x1ec98 -[NSObject(AXPrivCategory) accessibilityEnumerateContainerElementsWithOptions:usingBlock:] + 548 14 UIAccessibility 0x35858 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke + 176 15 UIAccessibility 0x3539c __96-[NSObject(AXPrivCategory) _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:]_block_invoke + 140 16 UIAccessibility 0x359d0 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke_2 + 60 17 UIAccessibility 0x1ec98 -[NSObject(AXPrivCategory) accessibilityEnumerateContainerElementsWithOptions:usingBlock:] + 548 18 UIAccessibility 0x35858 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke + 176 19 UIAccessibility 0x3539c __96-[NSObject(AXPrivCategory) _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:]_block_invoke + 140 20 UIAccessibility 0x359d0 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke_2 + 60 21 UIAccessibility 0x1ec98 -[NSObject(AXPrivCategory) accessibilityEnumerateContainerElementsWithOptions:usingBlock:] + 548 22 UIAccessibility 0x35858 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke + 176 23 UIAccessibility 0x3539c __96-[NSObject(AXPrivCategory) _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:]_block_invoke + 140 24 UIAccessibility 0x35918 __57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke + 368 25 UIAccessibility 0x3539c __96-[NSObject(AXPrivCategory) _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:]_block_invoke + 140 26 UIAccessibility 0x35294 -[NSObject _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:] + 244 27 UIAccessibility 0x355d0 -[NSObject _accessibilityFindFirstAXDescendantPassingTest:byYieldingElements:] + 272 28 UIAccessibility 0x35788 -[NSObject(AXPrivCategory) _accessibilityFindDescendant:] + 100 29 UIAccessibility 0x48280 _axuiElementForNotificationData + 276 30 UIAccessibility 0x347c _massageAssociatedElementBeforePost + 36 31 UIAccessibility 0x2648 _UIAXBroadcastMainThread + 292 32 libdispatch.dylib 0x213c _dispatch_call_block_and_release + 32 33 libdispatch.dylib 0x3dd4 _dispatch_client_callout + 20 34 libdispatch.dylib 0x125a4 _dispatch_main_queue_drain + 988 35 libdispatch.dylib 0x121b8 _dispatch_main_queue_callback_4CF + 44 36 CoreFoundation 0x56710 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 37 CoreFoundation 0x53914 __CFRunLoopRun + 1996 38 CoreFoundation 0x52cd8 CFRunLoopRunSpecific + 608 39 GraphicsServices 0x11a8 GSEventRunModal + 164 40 UIKitCore 0x40a90c -[UIApplication _run] + 888 41 UIKitCore 0x4be9d0 UIApplicationMain + 340 42 UIKitCore 0x638384 keypath_get_selector_hoverStyle + 11024 43 Wisconsin State Journal 0x3b4ae8 main + 4299246312 (AppDelegate.swift:4299246312) 44 ??? 0x1b7239e4c (Missing) com.apple.uikit.eventfetch-thread 0 libsystem_kernel.dylib 0x1808 mach_msg2_trap + 8 1 libsystem_kernel.dylib 0x5008 mach_msg2_internal + 80 2 libsystem_kernel.dylib 0x4f20 mach_msg_overwrite + 436 3 libsystem_kernel.dylib 0x4d60 mach_msg + 24 4 CoreFoundation 0x53f5c __CFRunLoopServiceMachPort + 160 5 CoreFoundation 0x53600 __CFRunLoopRun + 1208 6 CoreFoundation 0x52cd8 CFRunLoopRunSpecific + 608 7 Foundation 0xc7e4c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212 8 Foundation 0xc7c9c -[NSRunLoop(NSRunLoop) runUntilDate:] + 64 9 UIKitCore 0x41e640 -[UIEventFetcher threadMain] + 420 10 Foundation 0xde718 __NSThread__start__ + 732 11 libsystem_pthread.dylib 0x606c _pthread_start + 136 12 libsystem_pthread.dylib 0x10d8 thread_start + 8 com.google.firebase.crashlytics.MachExceptionServer 0 Wisconsin State Journal 0x83b668 FIRCLSProcessRecordAllThreads + 392 (FIRCLSProcess.c:392) 1 Wisconsin State Journal 0x83ba48 FIRCLSProcessRecordAllThreads + 423 (FIRCLSProcess.c:423) 2 Wisconsin State Journal 0x849c5c FIRCLSHandler + 34 (FIRCLSHandler.m:34) 3 Wisconsin State Journal 0x84a460 FIRCLSMachExceptionServer + 521 (FIRCLSMachException.c:521) 4 libsystem_pthread.dylib 0x606c _pthread_start + 136 5 libsystem_pthread.dylib 0x10d8 thread_start + 8 Thread 0 libsystem_kernel.dylib 0x1808 mach_msg2_trap + 8 1 libsystem_kernel.dylib 0x5008 mach_msg2_internal + 80 ...
1
0
235
Aug ’24
ClockKit Complications not working with Xcode 14 single-target watchOS app
I’ve created a single-target watchOS app in Xcode 14, but I can’t seem to get ClockKit complications working. I’ve added a CLKComplicationDataSource class to my watch target, and in the Info pane for my target I have set the CLKComplicationPrincipalClass key to MODULE-NAME.ComplicationController I haven’t yet added Complication placeholder images to my Assets.xcassets, but as far as I am aware, that shouldn’t be a problem while I am still testing. However, when I run it on a watchOS simulator, the complications never show up on the watch complications list when adding a complication. All of the tutorials I can find for ClockKit complications reference older two-target WatchKit apps. Do the newer single target apps no longer support ClockKit? If so, how can I make a two-target WatchKit app with Xcode 14? Unfortunately I cannot use WidgetKit for my complications because I need to support watchOS 7 at least, and WidgetKit only supports watchOS 9+ Thanks for your help
3
1
1.8k
Jan ’23
Application Tokens from Bundle Identifier
Hello! I've been doing a lot of work with ApplicationTokens, but there is very little documentation. While Apple gives you the FamilyAcitvitiesPicker to get tokens of apps on an iPhone, I need to get the tokens of apps that aren't on the phone. Example: Someone can select Instagram even though they don't have it downloaded. Then the application token will get sent to a server. Then a different person who does have Instagram on their phone will receive the token and it will do something with that application. Because FamilyActivitiesPicker can only select apps on the iPhone that it is running on, FamilyActivitiesPicker is useless to me, leading to my problem: Creating an ApplicationToken without FamilyActivitiesPicker This documentation says that I can create an Application (and thus an ApplicationToken) from the bundle identifier init(bundleIdentifier: String) Creates an object that represents the app with the specified bundle identifier. However, when I try to use this to get instagrams(or any apps) token, it returns nil every time! So, finally, my questions: How do I correctly use this initializer to create an ApplicationToken? Or, if this won't work for my purposes Are the ApplicationTokens created by FamilyActivitiesPicker the same across all devices no matter what?
2
0
299
Aug ’24
PKStroke with inkType == .pencil cannot be consistently restored
Attempting to recreate PKDrawing point-by-point using an existing drawing instance results in .pencil strokes being displayed with different (thinner) width than the original. Strokes with all other inks are restored fully visually identically to the original. This can be observed from iOS 15.2 to iOS 18 beta 5. Code used to remake the drawing: let restoredDrawing = PKDrawing(strokes: drawing.strokes.map { stroke in PKStroke( ink: stroke.ink, path: PKStrokePath(controlPoints: (0..<stroke.path.count).map { controlIndex in // This could be replaced with stroke.path.map { point in } let point = Array(stroke.path)[controlIndex] // This does not result in the same presentation as the point let restoredPoint: PKStrokePoint if #available(iOS 17.0, *) { restoredPoint = PKStrokePoint( location: point.location, timeOffset: point.timeOffset, size: point.size, opacity: point.opacity, force: point.force, azimuth: point.azimuth, altitude: point.altitude, secondaryScale: point.secondaryScale ) } else { restoredPoint = PKStrokePoint( location: point.location, timeOffset: point.timeOffset, size: point.size, opacity: point.opacity, force: point.force, azimuth: point.azimuth, altitude: point.altitude ) } // Even this produces correct result: // let restoredPoint = stroke.path.interpolatedPoint(at: CGFloat(controlIndex)) compare(point, restoredPoint) return restoredPoint }, creationDate: stroke.path.creationDate), transform: stroke.transform, mask: stroke.mask ) }) Gist with ViewController with side-by-side to paste into new project: https://gist.github.com/ilevIO/a1dea60ab6cb16047de2b421897d30f1
0
0
179
Aug ’24
File Provider Delete Enumerated Folders
I am developing a file provider extension on Mac. I noticed when attempting to delete an enumerated folder with didDeleteItems, passing only the top-level folder's ID is not enough to delete the item. It seems we need to pass all items underneath as well to this function for the folder to be removed. Is there a way around this? The way our application is designed makes it challenging to do this and we would prefer being able to remove the folder by utilizing the item ID only. If not, how could we obtain the particular items underneath that should be passed in to the function?
2
0
255
Aug ’24
App settings missing iOS18
We use a credit card processing app in conjunction with a data base. when you navigate to the app in settings we can change the host and file name for the redirect. it works perfectly in IOS17 but not available in IOS18. This is defiantly an iOS issue because I have found the same issue in another up that uses these same setting, they are missing too in IOS.
0
1
165
Aug ’24
iOS 18: Can't decline a CallKit call invite when using headphones
Hello. We are using Twilio Video SDK and CallKit to report an incoming invite to join a video room. On iOS 18 trying to decline a call invite via headphones (long pressing the accept button) doesn't actually result in the call being declined. There seem to be different results depending on the device being used. When using Apple EarPods with Lightning connector or a Bluetooth JBL headset, the call is declined only on a second attempt. When using a Bluetooth Jabra BT2046 headset, the call gets accepted instead on the first decline attempt. This issue is not reproducible on iOS 17.
1
1
192
Aug ’24