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

CallKit Call Directory database corruption (sqlite Code 11)
Hi everyone, I’ve filed a Feedback report (FB20986470) for a serious issue affecting the Call Directory database when add phone numbers for call blocking. When adding blocking numbers to a Call Directory extension, the system’s CallKit database (/private/var/mobile/Library/CallDirectory/CallDirectory.db) becomes corrupted. The reload call (reloadExtensionWithIdentifier) fails with error code 11 when the system tries to insert blocking entries, and the Console app on macOS shows the following errors: database corruption page 2265525 of /private/var/mobile/Library/CallDirectory/CallDirectory.db at line 81343 of [f0ca7bba1c] database corruption at line 79387 of [f0ca7bba1c] Error Domain=com.apple.callkit.database.sqlite Code=11 "sqlite3_step for query 'INSERT INTO PhoneNumberBlockingEntry (extension_id, phone_number_id) VALUES (?, (SELECT id FROM PhoneNumber WHERE (number = ?))), (?, (SELECT id FROM PhoneNumber WHERE (number = ?))),...)'" After this happens, CallKit becomes fully corrupted on the device and no further numbers can be added, even after: Disabling and re-enabling the extension Restarting the device (either force or soft restart) Reinstalling the app Waiting for a couple of minutes after this issue happens (that CallKit could possibly self-recovered) I also tested other call-blocking apps, and they all fail with the same error. The only thing that recovers the system is a full “Reset All Settings.” This issue has been reported by many users of my app, across multiple iOS versions and devices. Similar related issue reported by another developer: https://developer.apple.com/forums/thread/806129 Steps to Reproduce: Enable the Call Directory extension from a call-blocking app. Add and reload blocking numbers (a few thousand entries). Perform multiple reloads between additions. Check the Console, the corruption errors appear. From this point, all insert attempts fail system-wide. Expected Result: Entries should be inserted successfully, or the system should self-recover without persistent corruption. Actual Result: sqlite3_step fails with Code=11, and the Call Directory database remains corrupted until the user resets all settings. Additional Notes: All numbers are sorted and deduplicated before insertion. Happens intermittently after multiple reloads. The system log always shows internal database failure. Environment: Device: iPhone 16 Plus iOS 18.2 Beta (23C5027f) Xcode 16.1 (17B55) Attachments (included in Feedback FB20986470): sysdiagnose captured immediately after the failure (with Phone app General Profile) It seems like a system-level corruption affecting all Call Directory extensions once it occurs.
15
4
2.4k
2w
iOS 27.0.1 child device does not enforce third-party ManagedSettings shields when the parent device runs iOS 18.7.1 (system Screen Time works)
Setup Parent device: FamilyActivityPicker with a selection created as FamilyActivitySelection(includeEntireCategory: true). The parent selects apps for an always-on block list. The selection is encoded with PropertyListEncoder and sent to our server. Child device: authorized with AuthorizationCenter.shared.requestAuthorization(for: .child). It receives the selection, decodes it, and immediately applies its application tokens. The shield stays on all day, with no schedule: let selection = try PropertyListDecoder().decode(FamilyActivitySelection.self, from: data) ManagedSettingsStore(named: .appBlock).shield.applications = selection.applicationTokensObserved Cases A and B use the same two physical devices with the parent and child roles swapped. In all cases, the Family Sharing group uses legacy Screen Time, because not every device is on iOS 27 and the redesigned Screen Time is not available. CaseParentChildOur app's shieldSystem Screen Time (set by parent)AiOS 27.0.1iOS 18.7.1BlocksBlocksBiOS 18.7.1iOS 27.0.1Does not blockBlocksCiOS 18.7.1iOS 18.7.1BlocksBlocksQuestions Is this a known issue in iOS 27.0.x? Could it be related to issue number 175437403 ("Screen Time restrictions might not apply to child accounts despite being configured"), which the iOS 27 release notes list as fixed? Should tokens selected on an iOS 18 parent device be enforced on an iOS 27 child device? Is there a workaround, or a way to detect that a shield was applied but is not being enforced?
1
0
92
2w
watchOS 26.2/26.3: watch app killed by dyld before main() — getNameSelRefVMAddr assertion (FB25270892)
Our App Store watch app is being terminated by dyld before any app code runs, only on watchOS 26.2 (23S303) and 26.3 (23S620). Only the arm64 slice is affected (Series 9/10, Ultra 2), and almost always on background launches. Termination Reason: DYLD 9 Assertion failed: (0), function getNameSelRefVMAddr, file ObjCVisitor.cpp, line 1319. objc_visitor::Method::getNameSelRefVMAddr (ObjCVisitor.cpp:1319) dyld4::optimizeObjCSelectors (PrebuiltObjC.cpp:530) dyld4::PrebuiltObjC::make (PrebuiltObjC.cpp:1372) dyld4::PrebuiltLoaderSet::makeLaunchSet (PrebuiltLoader.cpp:2309) dyld4::prepare (dyldMain.cpp:960)Our previous app version crashes in the same function with SIGSEGV instead (same frame offsets on the same dyld build). The fault address lies just past a mapped-file region. What we checked: The crashing binary UUID matches our archive. Every ObjC method list in every image is a standard relative list (0x80000000). None has the selector-offset flag (0x40000000), which is what that assertion branch expects according to the open-source dyld. dyld_info -objc parses all images cleanly. Build settings and linker flags are defaults (Xcode 27.1). So it looks like dyld is reading the wrong data while building the launch closure, rather than our binary being malformed. This seems related to https://developer.apple.com/forums/thread/810471: same OS range, same "dyld before main(), ObjC metadata" symptom. That report involves VPP installs, while ours is App Store distribution. Full crash logs, binaries and analysis are in FB25270892. Has anyone else seen this? Is it fixed in watchOS 26.4 or later, and is there any workaround on the app side?
4
0
207
2w
Supported approach for real-time iPhone fall detection while an occupational lone-worker safety app is backgrounded?
Hi, I'm developing SafeChain, an occupational lone-working safety application for iOS and Android. One of our objectives is to detect a potential fall using the iPhone's accelerometer and notify an assigned responder if the worker doesn't acknowledge a warning. The requirement is for this to work while the iPhone is locked or the app is backgrounded, without requiring an Apple Watch. We've tested several approaches on a physical iPhone: CMMotionManager: Works reliably in the foreground, but we recorded a 254-second interruption during a five-minute locked-screen test. CMSensorRecorder: Successfully recovered 20,635 accelerometer samples from a seven-minute locked-screen recording, with a maximum sampling gap of 0.024 seconds. BGAppRefreshTask: Scheduling requests were accepted, but we could not confirm timely background execution. Our challenge isn't obtaining the accelerometer data. It's ensuring the application can analyse that data and initiate an emergency escalation promptly, even while iOS would ordinarily suspend the app. SafeChain also provides lone-worker check-ins, manual SOS, responder escalation and contact-loss monitoring. My questions are: Is there currently an Apple-supported approach for continuous or event-triggered motion analysis on an iPhone while an occupational safety application is backgrounded? Would a genuine lone-worker location-monitoring feature provide a legitimate basis for background location execution alongside Core Motion processing, assuming location tracking is itself an intended user-facing feature? Is there an entitlement or alternative API specifically available for occupational safety applications requiring timely emergency detection? If none exists, is it correct that dependable, real-time, iPhone-only fall detection is not currently supported by iOS? We want to comply fully with Apple's guidelines and avoid implementing a background-execution workaround that may prove unreliable or fail App Review. Any guidance from Apple engineers would be greatly appreciated. Thank you,
2
0
195
2w
iOS 27: PDFDocument.dataRepresentation() writes corrupt 16-bpc annotation images (half the data missing)
Since iOS/iPadOS 27.0, saving a PDF with PDFDocument.dataRepresentation() produces a corrupt file when a page contains a PDFAnnotation subclass that overrides draw(with:in:) and draws a 16-bits-per-component image. The same code works correctly on iOS 26.4. Filed as FBxxxxxxxx. What happens: The annotation is written with /AAPL:AKExtras, and its appearance (/AP) references an image XObject declared as /BitsPerComponent 16 (RGB). The image stream contains only half of the required data (8-bpc worth). Example: 1429 x 2021 image. Required: 17,328,054 bytes. Actual: 8,664,027 bytes. Adobe Acrobat reports "Insufficient data for an image". Other viewers read the 8-bpc data as 16-bpc, so the drawing is squeezed into the upper half of the page and the lower half is empty. In PDFKit, colors may turn black. The problem is in the writing step: a PDF written on iOS 27.0 is broken everywhere, while a PDF written on iOS 26.4 opens correctly on iOS 27.0. How to reproduce: Create a 16-bpc image with UIGraphicsImageRenderer (preferredRange = .extended, or the default format on a wide-color device). Add a PDFAnnotation subclass whose draw(with:in:) draws that image with context.draw(cgImage, in: bounds). Call dataRepresentation() and reopen the result. Current workaround: Create the image with an 8-bpc standard-range format before drawing it in the annotation: let format = UIGraphicsImageRendererFormat.preferred() format.preferredRange = .standard // 8 bpc, sRGB let renderer = UIGraphicsImageRenderer(size: size, format: format) With this, the declared bit depth and the data length match, and the PDF is valid on iOS 27.0. However, this gives up 16-bpc / wide-color output, so I would prefer a solution that keeps the original image quality. Possibly related: FB24882188 / FB24843022 (iOS 27 regression in PDFAnnotation subclasses that override draw(with:in:)). Questions: Does anyone know a way to avoid this issue without downgrading the image to 8 bpc? For example, a different way to create or attach the annotation appearance so that PDFKit on iOS 27 writes the 16-bpc data correctly. Has anyone else seen this, or confirmed whether it is fixed in a later iOS 27 release?
2
0
358
2w
Can an App Clip share an image to Apple Notes through the share sheet?
My App Clip shows an image, and I need that image to end up in Apple Notes as a new note with as few taps as possible. The plan is to present UIActivityViewController with the image, then the user taps Notes, then Save. I know clips can’t use PhotoKit, so “Save Image” is likely out. What I can’t find documented is whether Notes, or any other app’s share extension, still shows up in a clip’s share sheet and actually saves. Has anyone tried this? I don’t have a paid account yet to test it myself. If someone could run a one-file test clip, I can send the code.
0
0
98
2w
iOS 26.6.2: explicit Call Directory block bypassed after prior outgoing interactions
An explicitly blocked cellular caller continues to ring on iOS 26.6.2 (23G90). The number was previously saved and contacted. After removing it from Contacts and deleting its visible Recents entries, blocking still fails. We reproduced this with a minimal Call Directory extension containing exactly one bundled number. It uses no App Groups, shared storage, ranges or identification entries, and does not read isIncremental. Logs from 19 October 2026, IST: 08:03:01.701 — Apple’s Call Directory service: Added 1 phone number blocking entries 08:03:01.708 — Extension completion: expired=false 08:03:15 — Incoming cellular call from the configured test number communicationtrustd: Outgoing interactions found communicationtrustd: No remaining handles, returning trustScores callservicesd: shouldBlock: NO shouldSilence NO The call rings despite successful loading. Is there a supported API or entitlement allowing an explicit block to override prior-interaction precedence? Which retained interaction source could remain after Contacts/Recents deletion? We have a minimal reproduction project and sysdiagnose. Please advise how to provide them privately for engineering investigation.
0
0
77
2w
WeatherKit JWT error (WDSJWTAuthenticatorServiceListener Code 2) on a new App ID with capability and app service both enabled
Every WeatherKit request from my app fails within 0.4 to 2.4 seconds on two physical devices (iPhone 15 Pro and iPad Air 11-inch M3, both iOS/iPadOS 27.0.1, Xcode 27.0): Error Domain=WeatherDaemon.WDSJWTAuthenticatorServiceListener.Errors Code=2 "(null)" The call is WeatherService.shared.weather(for: location, including: .hourly(startDate: start, endDate: end)). Team ID 8B44CZ9923, bundle ID io.github.rsutcliffe.nightwatch.phone (an explicit App ID created by Xcode automatic signing on 14 October 2026). What I have checked, following the answer in https://developer.apple.com/forums/thread/835229: WeatherKit is enabled as a capability on the App ID (Capabilities tab) and as an app service (App Services tab). com.apple.developer.weatherkit is in the signed app's entitlements and in the embedded provisioning profile. The Program License Agreement update issued on 13 October was accepted on 14 October. I unticked WeatherKit on the App ID, saved, re-ticked it and saved, deleted the cached provisioning profile so Xcode created a new one, reinstalled and retested. Both devices were restarted. The failure is identical on both. Another App ID on the same team works with WeatherKit. This looks like https://developer.apple.com/forums/thread/786126 and https://developer.apple.com/forums/thread/829512, where the settings were also correct. Can WeatherKit token registration for this App ID be checked or reset on the server side? Is there anything else I should verify?
1
0
106
3w
How to detect an updated asset pack (and its download size) without triggering a download in Apple-hosted Background Assets?
Hello, I’m using Apple-hosted Background Assets to deliver resources for my app. Our design is to download asset packs on demand at app launch. Scenario: An asset pack has already been downloaded to the device. We then upload a new version of the asset pack with the same identifier to App Store Connect. Question: Is there a way to detect that an updated version of the asset pack is available, without actually starting the download? Our goal is to show the user the download size and ask for confirmation before the download begins. What I’ve tried: checkForUpdatesWithCompletionHandler: This immediately starts downloading the updated asset pack in the background, so we can’t show the size to the user beforehand. getAssetPackWithIdentifier:completionHandler: When an asset pack with the same identifier already exists locally, this returns the local asset pack instead of information about the updated version on the server. Background: I’m concerned about App Review Guideline 4.2.3 (ii): If your app needs to download additional resources in order to function on initial launch, disclose the size of the download and prompt users before doing so. https://developer.apple.com/app-store/review/guidelines/#minimum-functionality If there’s no way to obtain the size of an update before it downloads, I’m worried our implementation might conflict with this guideline. Is there a recommended API or approach for this? Or, if updates to already-downloaded asset packs are handled automatically by the system, does this guideline still apply to them? Any guidance would be greatly appreciated. Thank you.
0
0
71
3w
Open Parent App From ShieldActionDelegate
Hello, I’m building an app that helps people spend less time on social media apps. For that, I make heavy use of Apple’s Screen Time APIs, such as ManagedSettings and FamilyControls. When an app is locked using a ShieldConfiguration, the user has to open my app in order to unlock it (e.g. enter a code). This is very cumbersome because no documented API exists to open the parent app (=my app) from the ShieldActionDelegate (also part of my app) when the user presses a button of the ShieldConfiguration. The ShieldActionDelegate callback just offers three options in its ShieldActionResponse: .none .defer .close .openParentApp is missing. We are working around this limitation by sending a local push notification that the user has to tap on. This has multiple drawbacks: It has to be ensured that notification permission has been granted. It has to be ensured that notifications can be delivered even while focus is enabled. Features such as Apple Intelligence notification summaries and notification prioritization can heavily delay delivering notifications and thus frustrate the user. Neither my users nor myself do understand why this is not possible in a smoother way, at least according to the documentation. There are 3rd party apps that have such functionality, they can directly open their own app from a button press in the Shield, see here: https://apps.apple.com/us/app/applocker-passcode-lock-apps/id1132845904 It would be great if Apple could level the playfield for all developers and document how this is achievable, because technically it clearly is. Thanks a lot and have a great day!
7
1
1.4k
3w
Bug: AASA file not fetched on app install
~5% of our users when downloading the iOS application from the Apple Store for the first time are unable to enrol a Passkey and experience an error saying the application is not associated with [DOMAIN]. The error message thrown by the iOS credentials API is "The operation couldn't be completed. Application with identifier [APPID] is not associated with domain [DOMAIN]" We have raised this via the developer support portal with case id: 102315543678 Question: Why does the AASA file fail to fetch on app install and is there anything that can be done to force the app to fetch the file? Can this bug be looked at urgently as it is impacting security critical functionality? Other Debugging Observations We have confirmed that our AASA file is correctly formatted and hosted on the Apple CDN. Under normal circumstances the association is created on install and Passkey enrolment works as intended. We have observed that when customers uninstall/reinstall the app this often, but not always, resolves the issue. We also know this issue can resolve itself overtime without any intervention. We have ruled out network (e.g VPN) issues and have reproduced the issue across a number of different network configurations. We have ruled out the Keychain provider and have reproduced it across a variety of different providers and combinations of. We observed this across multiple versions of the iOS operating system and iPhone hardware including the latest hardware and iOS version.
15
3
4.1k
3w
Apple CDN not picking up updated apple-app-site-association file (valid, 200, since Oct 2)
Apple's AASA CDN is still serving an old version of our apple-app-site-association file, 10 days after we updated it on our server. Setup App ID: 4572YRV3M6.gr.kathimerini.Kathimerini Entitlement: applinks:www.kathimerini.gr File: https://www.kathimerini.gr/.well-known/apple-app-site-association The site is behind Cloudflare. Change We added this exclude, placed before the /syndromes/* entry: { "/": "/syndromes/gastronomos-prosfora/*", "exclude": true }, { "/": "/syndromes/*" }, What we see Our server returns the new file: HTTP 200, Content-Type: application/json, no redirects, valid JSON. The Last-Modified header is Fri, 02 Oct 2026 07:06:39 GMT. It returns the same response when requested with -A "AASA-Bot/1.0.0". https://app-site-association.cdn-apple.com/a/v1/www.kathimerini.gr still returns the old file without the new rule. A clean install on a test device still uses the old rules. Questions Is there a way to see whether Apple's crawler is failing to fetch our file, and why? Can the CDN copy be refreshed, or is there a typical maximum delay? Is there a Cloudflare or caching configuration known to cause this? Thanks!
3
0
179
3w
Can a Family Controls app sync a derived daily score to a server?
An app using FamilyControls (.individual) computes a single daily number on device from the user's own DeviceActivity data. Can that number be sent to a server so the user can compare it with friends? No app tokens, bundle IDs, or per-app times would leave the device. Is this allowed under DPLA section 3.3.3(P), which limits sharing usage data "beyond … the individual and their device"?
0
1
208
3w
Request: Higher-Frequency IMU Access on Apple Watch for Sports Performance Apps
Hi everyone, I’m building a sports performance app for Apple Watch that uses the onboard IMU to analyze swings and impacts in sports like tennis and golf. The goal is to estimate club/racket head speed, ball speed, and shot quality in real time from wrist motion data. With Core Motion, I can currently get deviceMotion updates at ~100 Hz. While this is fine for general movement tracking, the actual ball impact happens much faster — 5–10 ms in tennis and ~0.5 ms in golf. Many of the high-frequency vibration/impact components are missed at 100 Hz, making it hard to directly measure or more accurately estimate certain performance metrics. Questions for Apple / community: 1. Is there a way to access raw accelerometer and gyroscope data at higher sampling rates (e.g., 500–1000 Hz) on Apple Watch? 2. If not, is this due to hardware limitations or an API/software constraint? 3. Are there any research, partner, or beta programs that allow deeper sensor access for sports-science use cases? Even modest increases in IMU sampling could unlock more accurate ball-speed estimates, impact force analysis, and strike-quality detection without needing external sensors — making Apple Watch a best-in-class wearable for precision sports analytics. Happy to share more about the current approach, sample data, and potential use cases if helpful. Thanks, Max
2
0
1.3k
3w
watchOS CallKit calls: no DTMF keypad, no audio-route picker, no Recents — are these system-gated for third-party providers?
Hi all, I'm building a watchOS VoIP app that places and receives calls through CallKit, with call audio staying on the watch (not routed to the paired iPhone). Calls connect and audio works. But three parts of the system in-call UI that the native Phone app shows never appear for my app, and I'd like to confirm whether this is expected or a misconfiguration on my side. Environment watchOS 26.0, Apple Watch 11 (reproduced on a physical device) Xcode 27.1 Companion watchOS app, calls driven by CXProvider / CXCallController What's missing during an active call No DTMF keypad. The user can't open a keypad from the system call screen, so in-call DTMF (e.g. navigating an IVR) is impossible. No audio-route picker. No control to switch output route (e.g. speaker vs. the default route). No entry in Recents. Completed calls don't appear in the watch's call history. The system call UI is full-screen and in front, so I also can't present my own keypad or route control on top of it. What I've already tried (all public API) // Reported call callUpdate.supportsDTMF = true // Provider configuration config.includesCallsInRecents = true config.supportedHandleTypes = [.phoneNumber] config.maximumCallGroups = 1 // Audio session: route changes programmatically, but adds no user-facing picker try session.setCategory(.playAndRecord, mode: .voiceChat) try session.overrideOutputAudioPort(.speaker) // Never invoked — no keypad exists to generate the action func provider(_ provider: CXProvider, perform action: CXPlayDTMFCallAction) { ... } None of these make the keypad, the route picker, or a Recents entry appear. The behavior is identical regardless of these values, which makes me suspect these controls are exposed only for the native telephony/relay call path, not for third-party CXProvider calls on the watch. Questions Are the in-call DTMF keypad, audio-route picker, and Recents entry available to third-party CXProvider calls on standalone watchOS at all, or are they reserved for the system (relayed cellular / FaceTime) call UI? If not, is there a supported way to present my own keypad or route control during an active CallKit call, given the system call UI is in front? Thanks!
1
0
702
3w
Supported way to return the user to the app they chose after a pause screen (App Intent from an "App is Opened" automation)
We're building a Screen Time / mindful-pause app for iOS 26–27. The user adds a Shortcuts personal automation "When is Opened" that runs our App Intent. The intent passes the trigger app's Bundle Identifier (from the trigger output) and shows a short pause screen. When the user taps "Continue", we want to take them back into that app — only the one app they chose, only after they tap. Is there a supported API to open another installed app when the user taps Continue, given its bundle identifier from the Shortcuts trigger? A DTS reply in 2024 said there was no supported way (thread 740707). Has anything changed in iOS 26/27? (Related feedback: FB15500695.) If not, is it acceptable to open the chosen app via a URL scheme it registers in its Info.plist, including a third-party sign-in callback scheme, purely to bring it to the foreground? Many apps register no URL scheme. Is there a recommended pattern — e.g. handing control back to Shortcuts so the automation or the "Open App" action opens the trigger app — without the "App is Opened" automation firing again in a loop? What's the recommended way to avoid that re-fire? We currently ignore it for a short time window. A minimal sample project reproduces this (App Intent, pause screen, Continue using UIApplication.open). Happy to share it. Xcode 27.0 (27A266a), iOS 27.0 (24A446).
0
0
175
3w
Has the iOS system adapted to the time zone policy of British Columbia, Canada?
Has the iOS system adapted to the time zone policy of British Columbia, Canada? If the iPhone's system time zone is set to America/Edmonton, what result should the code below return after adapting? [[NSTimeZone systemTimeZone] isDaylightSavingTime] [[NSTimeZone systemTimeZone] secondsFromGMT] [[NSTimeZone systemTimeZone] daylightSavingTimeOffset]
1
0
200
3w
Connection problems between Xcode and Apple Watch
Hello! As I try to use Xcode (has happened in versions 16 and 26) and my Apple Watch (has happened with Series 6 and 10), the Devices and Simulators window reports problems connecting to the Watch. Messages vary from "Connecting to Apple Watch" to "Waiting to reconnect: Previous preparation error: the tunnel connection failed while the system tried to connect to the device; client unable to receive tunnel handshake response", or "Apple Watch may need to be unlocked to recover from previously reported preparation errors. Ensure the device is unlocked and near this Mac for better connection quality." The Watch was operational, and on my wrist, so it was unlocked. Any suggestions on how to move beyond this? Thank you!
7
2
963
4w
CallKit Call Directory database corruption (sqlite Code 11)
Hi everyone, I’ve filed a Feedback report (FB20986470) for a serious issue affecting the Call Directory database when add phone numbers for call blocking. When adding blocking numbers to a Call Directory extension, the system’s CallKit database (/private/var/mobile/Library/CallDirectory/CallDirectory.db) becomes corrupted. The reload call (reloadExtensionWithIdentifier) fails with error code 11 when the system tries to insert blocking entries, and the Console app on macOS shows the following errors: database corruption page 2265525 of /private/var/mobile/Library/CallDirectory/CallDirectory.db at line 81343 of [f0ca7bba1c] database corruption at line 79387 of [f0ca7bba1c] Error Domain=com.apple.callkit.database.sqlite Code=11 "sqlite3_step for query 'INSERT INTO PhoneNumberBlockingEntry (extension_id, phone_number_id) VALUES (?, (SELECT id FROM PhoneNumber WHERE (number = ?))), (?, (SELECT id FROM PhoneNumber WHERE (number = ?))),...)'" After this happens, CallKit becomes fully corrupted on the device and no further numbers can be added, even after: Disabling and re-enabling the extension Restarting the device (either force or soft restart) Reinstalling the app Waiting for a couple of minutes after this issue happens (that CallKit could possibly self-recovered) I also tested other call-blocking apps, and they all fail with the same error. The only thing that recovers the system is a full “Reset All Settings.” This issue has been reported by many users of my app, across multiple iOS versions and devices. Similar related issue reported by another developer: https://developer.apple.com/forums/thread/806129 Steps to Reproduce: Enable the Call Directory extension from a call-blocking app. Add and reload blocking numbers (a few thousand entries). Perform multiple reloads between additions. Check the Console, the corruption errors appear. From this point, all insert attempts fail system-wide. Expected Result: Entries should be inserted successfully, or the system should self-recover without persistent corruption. Actual Result: sqlite3_step fails with Code=11, and the Call Directory database remains corrupted until the user resets all settings. Additional Notes: All numbers are sorted and deduplicated before insertion. Happens intermittently after multiple reloads. The system log always shows internal database failure. Environment: Device: iPhone 16 Plus iOS 18.2 Beta (23C5027f) Xcode 16.1 (17B55) Attachments (included in Feedback FB20986470): sysdiagnose captured immediately after the failure (with Phone app General Profile) It seems like a system-level corruption affecting all Call Directory extensions once it occurs.
Replies
15
Boosts
4
Views
2.4k
Activity
2w
iOS 27.0.1 child device does not enforce third-party ManagedSettings shields when the parent device runs iOS 18.7.1 (system Screen Time works)
Setup Parent device: FamilyActivityPicker with a selection created as FamilyActivitySelection(includeEntireCategory: true). The parent selects apps for an always-on block list. The selection is encoded with PropertyListEncoder and sent to our server. Child device: authorized with AuthorizationCenter.shared.requestAuthorization(for: .child). It receives the selection, decodes it, and immediately applies its application tokens. The shield stays on all day, with no schedule: let selection = try PropertyListDecoder().decode(FamilyActivitySelection.self, from: data) ManagedSettingsStore(named: .appBlock).shield.applications = selection.applicationTokensObserved Cases A and B use the same two physical devices with the parent and child roles swapped. In all cases, the Family Sharing group uses legacy Screen Time, because not every device is on iOS 27 and the redesigned Screen Time is not available. CaseParentChildOur app's shieldSystem Screen Time (set by parent)AiOS 27.0.1iOS 18.7.1BlocksBlocksBiOS 18.7.1iOS 27.0.1Does not blockBlocksCiOS 18.7.1iOS 18.7.1BlocksBlocksQuestions Is this a known issue in iOS 27.0.x? Could it be related to issue number 175437403 ("Screen Time restrictions might not apply to child accounts despite being configured"), which the iOS 27 release notes list as fixed? Should tokens selected on an iOS 18 parent device be enforced on an iOS 27 child device? Is there a workaround, or a way to detect that a shield was applied but is not being enforced?
Replies
1
Boosts
0
Views
92
Activity
2w
watchOS 26.2/26.3: watch app killed by dyld before main() — getNameSelRefVMAddr assertion (FB25270892)
Our App Store watch app is being terminated by dyld before any app code runs, only on watchOS 26.2 (23S303) and 26.3 (23S620). Only the arm64 slice is affected (Series 9/10, Ultra 2), and almost always on background launches. Termination Reason: DYLD 9 Assertion failed: (0), function getNameSelRefVMAddr, file ObjCVisitor.cpp, line 1319. objc_visitor::Method::getNameSelRefVMAddr (ObjCVisitor.cpp:1319) dyld4::optimizeObjCSelectors (PrebuiltObjC.cpp:530) dyld4::PrebuiltObjC::make (PrebuiltObjC.cpp:1372) dyld4::PrebuiltLoaderSet::makeLaunchSet (PrebuiltLoader.cpp:2309) dyld4::prepare (dyldMain.cpp:960)Our previous app version crashes in the same function with SIGSEGV instead (same frame offsets on the same dyld build). The fault address lies just past a mapped-file region. What we checked: The crashing binary UUID matches our archive. Every ObjC method list in every image is a standard relative list (0x80000000). None has the selector-offset flag (0x40000000), which is what that assertion branch expects according to the open-source dyld. dyld_info -objc parses all images cleanly. Build settings and linker flags are defaults (Xcode 27.1). So it looks like dyld is reading the wrong data while building the launch closure, rather than our binary being malformed. This seems related to https://developer.apple.com/forums/thread/810471: same OS range, same "dyld before main(), ObjC metadata" symptom. That report involves VPP installs, while ours is App Store distribution. Full crash logs, binaries and analysis are in FB25270892. Has anyone else seen this? Is it fixed in watchOS 26.4 or later, and is there any workaround on the app side?
Replies
4
Boosts
0
Views
207
Activity
2w
Supported approach for real-time iPhone fall detection while an occupational lone-worker safety app is backgrounded?
Hi, I'm developing SafeChain, an occupational lone-working safety application for iOS and Android. One of our objectives is to detect a potential fall using the iPhone's accelerometer and notify an assigned responder if the worker doesn't acknowledge a warning. The requirement is for this to work while the iPhone is locked or the app is backgrounded, without requiring an Apple Watch. We've tested several approaches on a physical iPhone: CMMotionManager: Works reliably in the foreground, but we recorded a 254-second interruption during a five-minute locked-screen test. CMSensorRecorder: Successfully recovered 20,635 accelerometer samples from a seven-minute locked-screen recording, with a maximum sampling gap of 0.024 seconds. BGAppRefreshTask: Scheduling requests were accepted, but we could not confirm timely background execution. Our challenge isn't obtaining the accelerometer data. It's ensuring the application can analyse that data and initiate an emergency escalation promptly, even while iOS would ordinarily suspend the app. SafeChain also provides lone-worker check-ins, manual SOS, responder escalation and contact-loss monitoring. My questions are: Is there currently an Apple-supported approach for continuous or event-triggered motion analysis on an iPhone while an occupational safety application is backgrounded? Would a genuine lone-worker location-monitoring feature provide a legitimate basis for background location execution alongside Core Motion processing, assuming location tracking is itself an intended user-facing feature? Is there an entitlement or alternative API specifically available for occupational safety applications requiring timely emergency detection? If none exists, is it correct that dependable, real-time, iPhone-only fall detection is not currently supported by iOS? We want to comply fully with Apple's guidelines and avoid implementing a background-execution workaround that may prove unreliable or fail App Review. Any guidance from Apple engineers would be greatly appreciated. Thank you,
Replies
2
Boosts
0
Views
195
Activity
2w
iOS 27: PDFDocument.dataRepresentation() writes corrupt 16-bpc annotation images (half the data missing)
Since iOS/iPadOS 27.0, saving a PDF with PDFDocument.dataRepresentation() produces a corrupt file when a page contains a PDFAnnotation subclass that overrides draw(with:in:) and draws a 16-bits-per-component image. The same code works correctly on iOS 26.4. Filed as FBxxxxxxxx. What happens: The annotation is written with /AAPL:AKExtras, and its appearance (/AP) references an image XObject declared as /BitsPerComponent 16 (RGB). The image stream contains only half of the required data (8-bpc worth). Example: 1429 x 2021 image. Required: 17,328,054 bytes. Actual: 8,664,027 bytes. Adobe Acrobat reports "Insufficient data for an image". Other viewers read the 8-bpc data as 16-bpc, so the drawing is squeezed into the upper half of the page and the lower half is empty. In PDFKit, colors may turn black. The problem is in the writing step: a PDF written on iOS 27.0 is broken everywhere, while a PDF written on iOS 26.4 opens correctly on iOS 27.0. How to reproduce: Create a 16-bpc image with UIGraphicsImageRenderer (preferredRange = .extended, or the default format on a wide-color device). Add a PDFAnnotation subclass whose draw(with:in:) draws that image with context.draw(cgImage, in: bounds). Call dataRepresentation() and reopen the result. Current workaround: Create the image with an 8-bpc standard-range format before drawing it in the annotation: let format = UIGraphicsImageRendererFormat.preferred() format.preferredRange = .standard // 8 bpc, sRGB let renderer = UIGraphicsImageRenderer(size: size, format: format) With this, the declared bit depth and the data length match, and the PDF is valid on iOS 27.0. However, this gives up 16-bpc / wide-color output, so I would prefer a solution that keeps the original image quality. Possibly related: FB24882188 / FB24843022 (iOS 27 regression in PDFAnnotation subclasses that override draw(with:in:)). Questions: Does anyone know a way to avoid this issue without downgrading the image to 8 bpc? For example, a different way to create or attach the annotation appearance so that PDFKit on iOS 27 writes the 16-bpc data correctly. Has anyone else seen this, or confirmed whether it is fixed in a later iOS 27 release?
Replies
2
Boosts
0
Views
358
Activity
2w
Can an App Clip share an image to Apple Notes through the share sheet?
My App Clip shows an image, and I need that image to end up in Apple Notes as a new note with as few taps as possible. The plan is to present UIActivityViewController with the image, then the user taps Notes, then Save. I know clips can’t use PhotoKit, so “Save Image” is likely out. What I can’t find documented is whether Notes, or any other app’s share extension, still shows up in a clip’s share sheet and actually saves. Has anyone tried this? I don’t have a paid account yet to test it myself. If someone could run a one-file test clip, I can send the code.
Replies
0
Boosts
0
Views
98
Activity
2w
iOS 26.6.2: explicit Call Directory block bypassed after prior outgoing interactions
An explicitly blocked cellular caller continues to ring on iOS 26.6.2 (23G90). The number was previously saved and contacted. After removing it from Contacts and deleting its visible Recents entries, blocking still fails. We reproduced this with a minimal Call Directory extension containing exactly one bundled number. It uses no App Groups, shared storage, ranges or identification entries, and does not read isIncremental. Logs from 19 October 2026, IST: 08:03:01.701 — Apple’s Call Directory service: Added 1 phone number blocking entries 08:03:01.708 — Extension completion: expired=false 08:03:15 — Incoming cellular call from the configured test number communicationtrustd: Outgoing interactions found communicationtrustd: No remaining handles, returning trustScores callservicesd: shouldBlock: NO shouldSilence NO The call rings despite successful loading. Is there a supported API or entitlement allowing an explicit block to override prior-interaction precedence? Which retained interaction source could remain after Contacts/Recents deletion? We have a minimal reproduction project and sysdiagnose. Please advise how to provide them privately for engineering investigation.
Replies
0
Boosts
0
Views
77
Activity
2w
WeatherKit JWT error (WDSJWTAuthenticatorServiceListener Code 2) on a new App ID with capability and app service both enabled
Every WeatherKit request from my app fails within 0.4 to 2.4 seconds on two physical devices (iPhone 15 Pro and iPad Air 11-inch M3, both iOS/iPadOS 27.0.1, Xcode 27.0): Error Domain=WeatherDaemon.WDSJWTAuthenticatorServiceListener.Errors Code=2 "(null)" The call is WeatherService.shared.weather(for: location, including: .hourly(startDate: start, endDate: end)). Team ID 8B44CZ9923, bundle ID io.github.rsutcliffe.nightwatch.phone (an explicit App ID created by Xcode automatic signing on 14 October 2026). What I have checked, following the answer in https://developer.apple.com/forums/thread/835229: WeatherKit is enabled as a capability on the App ID (Capabilities tab) and as an app service (App Services tab). com.apple.developer.weatherkit is in the signed app's entitlements and in the embedded provisioning profile. The Program License Agreement update issued on 13 October was accepted on 14 October. I unticked WeatherKit on the App ID, saved, re-ticked it and saved, deleted the cached provisioning profile so Xcode created a new one, reinstalled and retested. Both devices were restarted. The failure is identical on both. Another App ID on the same team works with WeatherKit. This looks like https://developer.apple.com/forums/thread/786126 and https://developer.apple.com/forums/thread/829512, where the settings were also correct. Can WeatherKit token registration for this App ID be checked or reset on the server side? Is there anything else I should verify?
Replies
1
Boosts
0
Views
106
Activity
3w
How to detect an updated asset pack (and its download size) without triggering a download in Apple-hosted Background Assets?
Hello, I’m using Apple-hosted Background Assets to deliver resources for my app. Our design is to download asset packs on demand at app launch. Scenario: An asset pack has already been downloaded to the device. We then upload a new version of the asset pack with the same identifier to App Store Connect. Question: Is there a way to detect that an updated version of the asset pack is available, without actually starting the download? Our goal is to show the user the download size and ask for confirmation before the download begins. What I’ve tried: checkForUpdatesWithCompletionHandler: This immediately starts downloading the updated asset pack in the background, so we can’t show the size to the user beforehand. getAssetPackWithIdentifier:completionHandler: When an asset pack with the same identifier already exists locally, this returns the local asset pack instead of information about the updated version on the server. Background: I’m concerned about App Review Guideline 4.2.3 (ii): If your app needs to download additional resources in order to function on initial launch, disclose the size of the download and prompt users before doing so. https://developer.apple.com/app-store/review/guidelines/#minimum-functionality If there’s no way to obtain the size of an update before it downloads, I’m worried our implementation might conflict with this guideline. Is there a recommended API or approach for this? Or, if updates to already-downloaded asset packs are handled automatically by the system, does this guideline still apply to them? Any guidance would be greatly appreciated. Thank you.
Replies
0
Boosts
0
Views
71
Activity
3w
Open Parent App From ShieldActionDelegate
Hello, I’m building an app that helps people spend less time on social media apps. For that, I make heavy use of Apple’s Screen Time APIs, such as ManagedSettings and FamilyControls. When an app is locked using a ShieldConfiguration, the user has to open my app in order to unlock it (e.g. enter a code). This is very cumbersome because no documented API exists to open the parent app (=my app) from the ShieldActionDelegate (also part of my app) when the user presses a button of the ShieldConfiguration. The ShieldActionDelegate callback just offers three options in its ShieldActionResponse: .none .defer .close .openParentApp is missing. We are working around this limitation by sending a local push notification that the user has to tap on. This has multiple drawbacks: It has to be ensured that notification permission has been granted. It has to be ensured that notifications can be delivered even while focus is enabled. Features such as Apple Intelligence notification summaries and notification prioritization can heavily delay delivering notifications and thus frustrate the user. Neither my users nor myself do understand why this is not possible in a smoother way, at least according to the documentation. There are 3rd party apps that have such functionality, they can directly open their own app from a button press in the Shield, see here: https://apps.apple.com/us/app/applocker-passcode-lock-apps/id1132845904 It would be great if Apple could level the playfield for all developers and document how this is achievable, because technically it clearly is. Thanks a lot and have a great day!
Replies
7
Boosts
1
Views
1.4k
Activity
3w
Bug: AASA file not fetched on app install
~5% of our users when downloading the iOS application from the Apple Store for the first time are unable to enrol a Passkey and experience an error saying the application is not associated with [DOMAIN]. The error message thrown by the iOS credentials API is "The operation couldn't be completed. Application with identifier [APPID] is not associated with domain [DOMAIN]" We have raised this via the developer support portal with case id: 102315543678 Question: Why does the AASA file fail to fetch on app install and is there anything that can be done to force the app to fetch the file? Can this bug be looked at urgently as it is impacting security critical functionality? Other Debugging Observations We have confirmed that our AASA file is correctly formatted and hosted on the Apple CDN. Under normal circumstances the association is created on install and Passkey enrolment works as intended. We have observed that when customers uninstall/reinstall the app this often, but not always, resolves the issue. We also know this issue can resolve itself overtime without any intervention. We have ruled out network (e.g VPN) issues and have reproduced the issue across a number of different network configurations. We have ruled out the Keychain provider and have reproduced it across a variety of different providers and combinations of. We observed this across multiple versions of the iOS operating system and iPhone hardware including the latest hardware and iOS version.
Replies
15
Boosts
3
Views
4.1k
Activity
3w
Apple CDN not picking up updated apple-app-site-association file (valid, 200, since Oct 2)
Apple's AASA CDN is still serving an old version of our apple-app-site-association file, 10 days after we updated it on our server. Setup App ID: 4572YRV3M6.gr.kathimerini.Kathimerini Entitlement: applinks:www.kathimerini.gr File: https://www.kathimerini.gr/.well-known/apple-app-site-association The site is behind Cloudflare. Change We added this exclude, placed before the /syndromes/* entry: { "/": "/syndromes/gastronomos-prosfora/*", "exclude": true }, { "/": "/syndromes/*" }, What we see Our server returns the new file: HTTP 200, Content-Type: application/json, no redirects, valid JSON. The Last-Modified header is Fri, 02 Oct 2026 07:06:39 GMT. It returns the same response when requested with -A "AASA-Bot/1.0.0". https://app-site-association.cdn-apple.com/a/v1/www.kathimerini.gr still returns the old file without the new rule. A clean install on a test device still uses the old rules. Questions Is there a way to see whether Apple's crawler is failing to fetch our file, and why? Can the CDN copy be refreshed, or is there a typical maximum delay? Is there a Cloudflare or caching configuration known to cause this? Thanks!
Replies
3
Boosts
0
Views
179
Activity
3w
Can a Family Controls app sync a derived daily score to a server?
An app using FamilyControls (.individual) computes a single daily number on device from the user's own DeviceActivity data. Can that number be sent to a server so the user can compare it with friends? No app tokens, bundle IDs, or per-app times would leave the device. Is this allowed under DPLA section 3.3.3(P), which limits sharing usage data "beyond … the individual and their device"?
Replies
0
Boosts
1
Views
208
Activity
3w
Request: Higher-Frequency IMU Access on Apple Watch for Sports Performance Apps
Hi everyone, I’m building a sports performance app for Apple Watch that uses the onboard IMU to analyze swings and impacts in sports like tennis and golf. The goal is to estimate club/racket head speed, ball speed, and shot quality in real time from wrist motion data. With Core Motion, I can currently get deviceMotion updates at ~100 Hz. While this is fine for general movement tracking, the actual ball impact happens much faster — 5–10 ms in tennis and ~0.5 ms in golf. Many of the high-frequency vibration/impact components are missed at 100 Hz, making it hard to directly measure or more accurately estimate certain performance metrics. Questions for Apple / community: 1. Is there a way to access raw accelerometer and gyroscope data at higher sampling rates (e.g., 500–1000 Hz) on Apple Watch? 2. If not, is this due to hardware limitations or an API/software constraint? 3. Are there any research, partner, or beta programs that allow deeper sensor access for sports-science use cases? Even modest increases in IMU sampling could unlock more accurate ball-speed estimates, impact force analysis, and strike-quality detection without needing external sensors — making Apple Watch a best-in-class wearable for precision sports analytics. Happy to share more about the current approach, sample data, and potential use cases if helpful. Thanks, Max
Replies
2
Boosts
0
Views
1.3k
Activity
3w
watchOS CallKit calls: no DTMF keypad, no audio-route picker, no Recents — are these system-gated for third-party providers?
Hi all, I'm building a watchOS VoIP app that places and receives calls through CallKit, with call audio staying on the watch (not routed to the paired iPhone). Calls connect and audio works. But three parts of the system in-call UI that the native Phone app shows never appear for my app, and I'd like to confirm whether this is expected or a misconfiguration on my side. Environment watchOS 26.0, Apple Watch 11 (reproduced on a physical device) Xcode 27.1 Companion watchOS app, calls driven by CXProvider / CXCallController What's missing during an active call No DTMF keypad. The user can't open a keypad from the system call screen, so in-call DTMF (e.g. navigating an IVR) is impossible. No audio-route picker. No control to switch output route (e.g. speaker vs. the default route). No entry in Recents. Completed calls don't appear in the watch's call history. The system call UI is full-screen and in front, so I also can't present my own keypad or route control on top of it. What I've already tried (all public API) // Reported call callUpdate.supportsDTMF = true // Provider configuration config.includesCallsInRecents = true config.supportedHandleTypes = [.phoneNumber] config.maximumCallGroups = 1 // Audio session: route changes programmatically, but adds no user-facing picker try session.setCategory(.playAndRecord, mode: .voiceChat) try session.overrideOutputAudioPort(.speaker) // Never invoked — no keypad exists to generate the action func provider(_ provider: CXProvider, perform action: CXPlayDTMFCallAction) { ... } None of these make the keypad, the route picker, or a Recents entry appear. The behavior is identical regardless of these values, which makes me suspect these controls are exposed only for the native telephony/relay call path, not for third-party CXProvider calls on the watch. Questions Are the in-call DTMF keypad, audio-route picker, and Recents entry available to third-party CXProvider calls on standalone watchOS at all, or are they reserved for the system (relayed cellular / FaceTime) call UI? If not, is there a supported way to present my own keypad or route control during an active CallKit call, given the system call UI is in front? Thanks!
Replies
1
Boosts
0
Views
702
Activity
3w
Supported way to return the user to the app they chose after a pause screen (App Intent from an "App is Opened" automation)
We're building a Screen Time / mindful-pause app for iOS 26–27. The user adds a Shortcuts personal automation "When is Opened" that runs our App Intent. The intent passes the trigger app's Bundle Identifier (from the trigger output) and shows a short pause screen. When the user taps "Continue", we want to take them back into that app — only the one app they chose, only after they tap. Is there a supported API to open another installed app when the user taps Continue, given its bundle identifier from the Shortcuts trigger? A DTS reply in 2024 said there was no supported way (thread 740707). Has anything changed in iOS 26/27? (Related feedback: FB15500695.) If not, is it acceptable to open the chosen app via a URL scheme it registers in its Info.plist, including a third-party sign-in callback scheme, purely to bring it to the foreground? Many apps register no URL scheme. Is there a recommended pattern — e.g. handing control back to Shortcuts so the automation or the "Open App" action opens the trigger app — without the "App is Opened" automation firing again in a loop? What's the recommended way to avoid that re-fire? We currently ignore it for a short time window. A minimal sample project reproduces this (App Intent, pause screen, Continue using UIApplication.open). Happy to share it. Xcode 27.0 (27A266a), iOS 27.0 (24A446).
Replies
0
Boosts
0
Views
175
Activity
3w
Has the iOS system adapted to the time zone policy of British Columbia, Canada?
Has the iOS system adapted to the time zone policy of British Columbia, Canada? If the iPhone's system time zone is set to America/Edmonton, what result should the code below return after adapting? [[NSTimeZone systemTimeZone] isDaylightSavingTime] [[NSTimeZone systemTimeZone] secondsFromGMT] [[NSTimeZone systemTimeZone] daylightSavingTimeOffset]
Replies
1
Boosts
0
Views
200
Activity
3w
Connection problems between Xcode and Apple Watch
Hello! As I try to use Xcode (has happened in versions 16 and 26) and my Apple Watch (has happened with Series 6 and 10), the Devices and Simulators window reports problems connecting to the Watch. Messages vary from "Connecting to Apple Watch" to "Waiting to reconnect: Previous preparation error: the tunnel connection failed while the system tried to connect to the device; client unable to receive tunnel handshake response", or "Apple Watch may need to be unlocked to recover from previously reported preparation errors. Ensure the device is unlocked and near this Mac for better connection quality." The Watch was operational, and on my wrist, so it was unlocked. Any suggestions on how to move beyond this? Thank you!
Replies
7
Boosts
2
Views
963
Activity
4w