I've discovered a bug in the Phone app on iOS related to how long verdicts are displayed.
When a call is identified by a third-party Caller ID app, long verdicts display correctly during the call (they auto-scroll) and in the call log (with an ellipsis at the end). However, on the call details screen, the text is strangely truncated - showing only the beginning of the string and the last word.
For testing, I used this verdict: "Musclemen grow on trees. They can tense their muscles and look good in a mirror. So what? I'm interested in practical strength that's going to help me run, jump, twist, punch."
I'll attach a screenshots demonstrating the problem:
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
So I'm seeing a 'Pending User Info' for the paid apps agreement, and I'm not sure why as I just signed it. Why am I getting this message?
For context, I'm currently working on my app and the IAP product(using sandbox to test it). So I can't test my product until the this is active. Not sure what to do.
Topic:
App & System Services
SubTopic:
General
I just purchased a new 2025 Honda Civic Hybrid sedan with the highest trim package. The staff at the dealership set CarPlay up to my iPhone 16 Pro, and all was operating perfectly. Then, last week, I started noticing random connectivity problems with it (ie: no sound from my audio apps, “not connected” being displayed on the dashboard displa, etc.) I tried to think of what had changed with my setup, and the only change was that I updated to the latest iOS update 18.2
I scheduled a service appointment with the Honda dealer in hopes that Apple and Honda can confirm a fix for this issue. I’ll try to attach an image from my car’s dashboard display as an example of an error message that isn’t resolved.
Topic:
App & System Services
SubTopic:
General
I am trying to port my sandboxed macOS app completely over to iOS using a Catalyst target. In my macOS app, I use 'SwiftySandboxFileAccess' package to add a symlink to '~/Library/PDF Services' so that the 'share to my app' menuItem shows up in the macOS Print Panel (in the PDF menu). It is critical for the function of my app to have this work on macOS.
In the Catalyst target, I am having problems gaining access to '~/Library'. I have tried having the user select the folder, but the picker always returns 'canceled'. I have a test app that illustrates this.
The test app tries to coax the user into selecting the library folder and then it is supposed to bookmark the location, but I am unable to get this far.
As an aside, macOS should probably automatically add an entry to the Print Panel when the app includes PDF as a document type in XCode; it would save a lot of hassle and avoid having to go outside of the sandbox. However, I cannot wait for that. Hopefully someone can help.
Download Test App from iCloud
(If you have problems downloading the file, it might be because of some iCloud share setting that I am not aware of. Just tell me and I'll figure something out.)
Topic:
App & System Services
SubTopic:
General
Is there any way I can get updates when I change CarPlay style settings?
I've tried CPSessionConfigurationDelegate.contentStyleChanged and CPTemplateApplicationSceneDelegate.contentStyleDidChange, but they always produce the same result.
When I choose:
Automatic -> I receive light in case of daylight;
Always Dark and Always Show Dark Map toggle on -> dark
Always Dark and Always Show Dark Map toggle off -> light.
But it seems to be wrong, b/c CarPlay's toolbar is still dark, and I receive light.
Is there a way to get a dark style when choosing Always Dark and Always Show Dark Map toggle off? Or at least get updates when the Always Show Dark Map toggle changes?
When updating an existing advanced app clip experience, the change doesn't actually apply. It shows the correct image in the UI, but when you use the app clip it shows the old image. Looking into it more, the status has "UPDATE_SUBMITTED". Seems related to this issue (https://developer.apple.com/forums/thread/810544) and this issue (https://developer.apple.com/forums/thread/810351).
Hello! What is the TTL for evaluation key(s) used in Live Caller ID feature on iOS client side? We would like to align our server-side key storage TTL with the iOS client implementation to optimize memory usage.
Would really appreciate your help on this.
I am trying to port my sandboxed macOS app completely over to iOS using a Catalyst target and SwiftUI.
There appears to be an issue when trying to drag to the Finder in Catalyst (and in SwiftUI in General). For some reason, the Finder will not accept multiple file drops, only a single file.
On my macOS (non-Catalyst AppKit target), I overcame this by dropping multiple files to a UTType of .folder, and the OS accepted the folder. This workaround is not available for iOS because .folder is a macOS-only option.
I have a test app to illustrate the issue. Hopefully someone can help.
Download Test App
Topic:
App & System Services
SubTopic:
General
My application is from a bank that provides payment passes, and when I try to retrieve passes already enrolled in the wallet, it always returns empty. Is there something I need to configure for it to work? This is what I've tried, and it hasn't worked
Topic:
App & System Services
SubTopic:
General
From the document https://developer.apple.com/documentation/sensorkit/srfetchrequest we know that "SensorKit places a 24-hour holding period on newly recorded data before an app can access it. This gives the user an opportunity to delete any data they don’t want to share with the app. A fetch request doesn’t return any results if its time range overlaps this holding period."
Will this holding period reset each time when I called startRecording() ?
Let's say I upgrade my app to a new version, do I need to call startRecording again to init the data collection process? will it be able to query the data collected from previous version's app ?
Topic:
App & System Services
SubTopic:
General
Hey all,
Running into an issue with a WeatherKit.
Whenever I make a WeatherKit API call, I get this error:
Details: { domain: WeatherDaemon.WDSClientErrors, localizedDescription: invalidAuthorization: 401, underlyingError: Unknown, code: 3 }
This only happens when calling via the Swift package:
swift
WeatherService.shared.weather(for: location).currentWeather
When I was calling the WeatherKit REST API directly from Dart, everything worked fine.
So far I’ve:
Enabled WeatherKit in the Apple Developer account
Added the WeatherKit capability to the app
Refreshed provisioning profiles
Installed the app fresh on device/simulator
Has anyone seen this specific invalidAuthorization: 401 from WeatherDaemon.WDSClientErrors when using WeatherService in Swift, and know what might be missing or misconfigured?
Greetings my fellow engineers,
I use SwiftData in my iOS app. The schema is unversioned and consists of a single model. I've been modifying the model for almost two years now and relying on automatic database migrations. I had no problems for all that time, but now trying to add a property to the model or even remove a property from the model results in an error which seems like SwiftData is no longer capable of performing an automatic migration.
The log console has things like the following:
CoreData: error: NSUnderlyingError : Error Domain=NSCocoaErrorDomain Code=134190 "(null)" UserInfo={reason=Each property must have a unique renaming identifier}
CoreData: error: reason : Can't find or automatically infer mapping model for migration
CoreData: error: storeType: SQLite
CoreData: error: configuration: default
CoreData: annotation: options:
CoreData: annotation: NSMigratePersistentStoresAutomaticallyOption : 1
CoreData: annotation: NSInferMappingModelAutomaticallyOption : 1
CoreData: annotation: NSPersistentStoreRemoteChangeNotificationOptionKey : 1
CoreData: annotation: NSPersistentHistoryTrackingKey : 1
CoreData: error: <NSPersistentStoreCoordinator: 0x7547b5480>: Attempting recovery from error encountered during addPersistentStore: 0x753f8d800 Error Domain=NSCocoaErrorDomain Code=134140 "Persistent store migration failed, missing mapping model."
Have you ever encountered such an issue? What are my options?
Share Age Range Permission is set to 'Ask First'.
Application requested for AgeRange via requestAgeRange API.
System presented a consent window where user has to make a choice.
User did not acted.
Application was pushed to background.
Our Application supports PushToTalk Framework and we have successfully joined the channel already.
User tapped on the blue-pill , SystemUI will get presented.
User tapped on the SystemUI, A New Full Screen SystemUI will get presented.
User chosen 'Leave' option and our application left the active channel.
10 User brought the application to foreground and the previous "Share Age Range" system window disappeared.
11. After Step 10, We need to terminate and launch our application in order to get the "Share Age Range" system window.
Is "Share Age Range" system window getting disappear is expected here or a BUG
Hello,
I’m currently reviewing and implementing age assurance and parental approval flows using AgeRangeService and PermissionKit (AskCenter) in the context of Texas regulatory compliance requirements.
While the high-level APIs are clear, there are several technical aspects where the intended usage patterns are not fully explicit in the documentation. Clarification on these points would help ensure our implementation aligns with system expectations and regulatory obligations.
⸻
Querying the current approval state for SignificantAppUpdateTopic
AskCenter.ask(...) returns Void, and AskCenter.responses(for:) provides an AsyncSequence of approval events.
Is there an official or recommended way to determine whether a SignificantAppUpdateTopic has already been approved when the app launches, or is listening for future responses events the only supported mechanism?
⸻
Behavior of AskCenter.responses(for:) regarding past approvals
When subscribing to AskCenter.responses(for:):
• Does the stream replay previously recorded approval or decline decisions?
• Or does it only emit events that occur after subscription?
This affects whether the listener must be registered early in the app lifecycle.
⸻
Recommended lifecycle timing for registering a responses(for:) listener
What is the intended or recommended time to register a responses(for:) listener?
• At application launch
• Immediately before calling ask(...)
• When entering a specific gated feature
Clarification on the expected lifecycle usage would be helpful.
⸻
Repeated calls to ask(...) after approval
If AskCenter.ask(...) is called again for the same SignificantAppUpdateTopic after parental approval has already been granted:
• Is the request ignored?
• Is a new approval request sent to the parent?
• Or is the call handled idempotently by the system?
⸻
Delivery of approval results when the child app is not running
If a parent approves or declines a SignificantAppUpdateTopic while the child app is not running:
• Will the approval decision be delivered as a responses(for:) event on the next app launch?
• Or is the app expected to persist approval state locally?
⸻
Persistence of approval state
Is the approval decision for SignificantAppUpdateTopic persisted by the system at the OS level, or is the app responsible for storing approval state?
Additionally, does the approval persist across:
• app restarts?
• app deletion and reinstallation?
⸻
Meaning of activeParentalControls.significantAppChangeApprovalRequired
How is activeParentalControls.significantAppChangeApprovalRequired determined?
• Is this value explicitly configured by a parent (for example via Screen Time)?
• Or is it automatically determined by the system based on region, age, or regulatory requirements?
⸻
Relationship between significantAppChangeApprovalRequired and AgeRangeService
When activeParentalControls contains significantAppChangeApprovalRequired, is it still expected that apps call AgeRangeService.requestAgeRange(...)?
Or can the presence of this flag be treated as sufficient indication that the user is a minor for gating purposes?
⸻
Recommended interpretation of AgeRangeDeclaration
Is the intended usage of AgeRangeDeclaration to handle each case individually, or is it acceptable and recommended to interpret the values as different trust levels (for example, self-declared vs. government ID or payment verified)?
Clarification on these points would help ensure that implementations of age assurance and parental approval flows are consistent with system behavior while meeting regulatory compliance requirements.
Thank you for your guidance.
Hi everyone,
I have a question regarding the intended privacy limits of the DeviceActivityReportExtension.
According to the documentation and the WWDC21 session "Meet the Screen Time API", this extension was created specifically to prevent the host application from accessing the user's underlying activity data (websites visited, app usage, screen time, etc).
But I have found that my host app is actually able to reconstruct this raw activity data from the activity report. I am able to extract specific visited websites and app usage durations back into the main app.
I reported this to Apple Security (Case ID: OE1100504480881 ), assuming it was a sandbox bypass. However, they closed the ticket stating that this is "expected behavior" and requires no fix.
My question for Screen Time Engineers: Is the documentation incorrect? If my host app is expected to be able to read this data, is there a formal API we should be using instead of extracting it from the report extension?
The current behavior contradicts the privacy limits described in the documentation, so I am confused if I should rely on this data access for my app features or if it will be patched later.
Thanks.
Hi all,
I'm trying to set up universal links for my app but it's not working.
What I want:
cogover.com → Safari (website) - NOT my app
*.cogover.com (any subdomain like abc.cogover.com) → My app
What I did:
Added applinks:*.cogover.com in Xcode
Put AASA files on all subdomains
They work fine (checked with curl)
Problem:
All links still open in Safari, not my app.
I do not put AASA on my root domain cogover.com because I don't want open my app with root domain.
I have checked TN3155: Debugging universal links | Apple Developer Documentation but it only say about universal link works with both root domain and subdomains.
Weird thing I found:
I checked how Salesforce does it - their *.force.com subdomains work perfectly. But when I tried to check their setup, (https://force.com/.well-known/apple-app-site-association) doesn't seem to exist either! So how does theirs work?
Even stranger - Apple's CDN has their file cached at (https://app-site-association.cdn-apple.com/a/v1/force.com) but the actual domain doesn't serve it. Can Apple's CDN have a file cached even if it's not on the website anymore?
Thanks for any help!
So what's the point of being able to block unto 50 apps per ManagedSettingStore via store.application.blockedApplications (which works fine) until removing the blocked apps or clearing the store. Where the following occurs
if you have a social networking group with more than 9 apps only 9 apps will go back into the group and all the others will go onto the springboard all jumbled
if you end up with an empty group then tap into the group, it is removed then during the reset all apps are placed back on to the springboard
I followed the method outlined in Apple's documentation to test "Revocation of Consent." Our server received the notification sent by Apple, but the parsed data only contains the following content (some data has been modified for privacy, but the fields remain unchanged):
{
"receiptType": "Sandbox",
"bundleId": "com.xxx.xxxxx",
"receiptCreationDate": 1764932591296,
"requestDate": 1764932591296,
"originalPurchaseDate": 1375340400000,
"originalApplicationVersion": "1.0",
"appTransactionId": "705020051250081000",
"originalPlatform": "iOS"
}
How can we identify that "a parent/guardian has revoked authorization for a specific user"? We are unable to determine which minor user should be restricted from using certain features of our app.
I hope to receive a prompt response from Apple's technical experts!
Thanks A Lot !
Topic:
App & System Services
SubTopic:
General
Hi All,
I have created a Push Notification certificate from my Apple Developer account. After downloading the aps.cer file and adding it to my Keychain, the certificate was added successfully, but the private key is missing.
Has anyone encountered a similar issue in the past? What could be causing this problem?
I’m trying to fully understand the purpose of the ageGates parameter in the AgeRangeService.requestAgeRange API.
The official documentation includes the following statement:
“The system may return geo-specific age ranges that override your provided age gates based on the person’s location and applicable regulations.
When geo-specific ranges are required, the returned age range reflects regulatory requirements rather than the bounds of your age gates.”
Based on this, it seems that even if my app provides specific age thresholds through the ageGates parameter,
the system may override those boundaries depending on regional laws or regulations, and return a completely different lowerBound / upperBound than what my age gates would suggest.
My current understanding is:
ageGates indicates the thresholds my app uses to define its internal feature tiers,
but the actual age range returned by the OS is determined by legal or regional requirements (e.g., COPPA, GDPR-K, AADC, SB2420),
meaning the returned age range may not align with the age ranges implied by my ageGates values.
I’d like to confirm whether this interpretation is correct.
Additionally, if different regions may produce different lowerBound / upperBound values due to regulatory requirements,
then it seems that:
developers shouldn’t rely on fixed age buckets, and
instead must implement feature gating logic dynamically based on whatever age range the OS returns.
So my questions are:
Is my understanding correct that ageGates is simply a hint that describes my app’s tier thresholds, and the OS may override those boundaries to comply with local regulations?
If lowerBound / upperBound can vary across regions, what is the recommended way for developers to design their feature-gating logic?
Should we avoid hardcoded age buckets and instead build flexible logic that adapts to whatever range the OS returns?
I’d appreciate clarification so I can design our age-based policies appropriately and in a regulation-compliant way.