Hi Team,
We’re encountering a device-specific issue with our SMS Message Filter extension. The extension works as expected on an iPhone 11 running iOS 16.6, but it does not trigger on an iPhone 12 Pro running iOS 16.7.
Key Observations:
The extension is implemented using ILMessageFilterExtension and calls messageFilterOffline(appGroupIdentifier:for:) from our shared library.
The App Group is properly configured and accessible across the app and extension.
The extension is enabled under Settings > Messages > Unknown & Spam.
There are no crashes or error logs reported on the affected device.
The issue is consistently reproducible — it works on one device but not the other.
We’re wondering if this could be a regression or a device-specific behavior change introduced in iOS 16.7.
Has anyone encountered similar inconsistencies in Message Filter extensions across different iOS versions or device models?
Any guidance or suggestions would be greatly appreciated.
Thanks in advance!
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
As the title suggests, I have a class marked with @Observable. Within the class I have multiple var's. When one of my var's changes (formation), I want to run an updateOrCreateContent(). I had thought I could just do this with a bit of combine, but I'm struggling to get it working...
The code below has a compile error at $formation
When I mark formation @Published, it generates a different compile error: "Invalid redeclaration of synthesized property '_formation'"
any help appreciated
thanks
class LayoutModel {
var players: [Player] = []
var formation: Formation = .f433
var cancellables = Set<AnyCancellable>()
init(players: [Player], formation: Formation) {
self.players = players
self.formation = formation
updateOrCreateContent()
$formation.sink(receiveValue: { _ in
self.updateOrCreateContent()
})
.store(in: &cancellables)
}
Dear Apple,
while implementing Declared Age Range API in my app, I've noticed a mistake in documentation: the isEligibleForAgeFeatures property is marked 26.0+ in documentation, but 26.2+ in Xcode, which ultimately leads to inability to use it with OS below 26.2.
Moreover, I'm thoroughly confused by this quote from documentation:
This flag returns true on iOS and iPadOS based on a person’s eligibility and always returns false on macOS.
It leads me to two questions:
Is it possible to use Declared Age Range API for macOS apps? Will it be possible to use it in future?
Will there be any changes regarding this matter in a meantime (especially after Jan 1st)?
If yes - when should we expect these changes?
If no - why this API declares macOS 26+ support alongside iOS/iPadOS, if it simply doesn't work for macOS now?
As of now, my iOS app works flawlessly with given API (on iOS 26.2) while macOS app returns isEligibleForAgeFeatures = false and requestAgeRange request always throws AgeRangeService.Error.notAvailable.
Also, does it mean that one should not use isEligibleForAgeFeatures boolean while implementing Declared Age Range API for apps below iOS 26.2 (I mean 26.0+)? Or implementing given API for iOS 26.2+ is a sufficient way to go? So shouldn't the whole API be marked as 26.2+?
The minimum iOS version in my app is 16.0 and minimum macOS version is 13.0 anyway, so the significant part of users is left out of these updates, but the main goal here is legal compliance.
I'm sitting at my house and trying to sign my test device out of my apple ID so I can sign into a Sandbox user, but now I have an hour to kill because of this terribly broken "security" feature that thinks it's in an unfamiliar location, despite being at the only location it's ever known. Looks like I'll just be disabling this feature all together.
Especially as a device with Developer Mode enabled, which gets reset regularly, there should be additional options here. Come on!
I'm encountering what appears to be a specific precedence behavior with ManagedSettingsStore.shield and would appreciate some further clarification.
My current understanding is that category-level shields take precedence over individual app allowances.
My test involved...
Using FamilyActivityPicker to select
a single target application (e.g., "Calculator," which falls under the "Utilities" category).
Using FamilyActivityPicker again to select
the category of that target application.
I applied shields using ManagedSettingsStore (named .individual):
store.shield.applicationCategories = .specific(Set([utilitiesCategoryToken]))
store.shield.applications = Set([calculatorApplicationToken])
Result:
The calculator app remains shielded, suggesting that the category-level shield on Utilities overrides the attempt to allow the individual app. I also tried this using a single picker, but received only the category token instead of all application tokens in that category.
Is this observed precedence (where store.shield.applicationCategories effectively overrides store.shield.applications for apps within the shielded category) the intended behavior?
If so, are there any mechanisms available within the main app's capabilities (potentially using a Device Activity Report Extension or Shield Extension) to allow a specific ApplicationToken if its corresponding ActivityCategoryToken is part of the store.shield.applicationCategories set?
Essentially, can store.shield.applications be used to create "allow exceptions" for individual apps that fall into an otherwise shielded category?
Additionally, I mentioned that selecting an entire category in the picker only returns the opaque category token, not any application tokens. Is there any way in which I could return both the category and all application tokens by just selecting the category?
Any insights or pointers would be greatly appreciated!
Issue Description:
When an alarm is set for a time earlier than the current system time, and the system time is manually adjusted back to before the alarm time, the alarm does not ring when the scheduled time is reached.
Steps to Reproduce:
Current time is 23:34
Set an alarm for 23:30 (earlier than the current time)
Manually change the system time to 23:28
Wait until the time reaches 23:30
The alarm does not ring
Device:
iPhone 14 Pro / iOS 26.2
Topic:
App & System Services
SubTopic:
General
Hello, I am building an iMessage extension for my app and I am struggling to figure out how to test it. The extension allows users to send their friends an interactive widget and the recipient experience is very important to test.
I tried to do it in the simulators, but simulators do not support iMessage. I have got a second iPhone and created a sandbox account, but I cannot install TestFlight with the sandbox account, as this feature is not supported.
Reddit, Stackoverflow, ChatGPT and Apple Developer support also did not help. Can someone share their experience with testing recipient experience in the iMessage extension?
App is repeatedly rejected under Guideline 2.5.1 for referencing the private API:_SecCertificateIsValid
Reported custom framework CommonLibrary.framework.
The SDK is written in Objective-C and uses only public Security APIs. It does not use any deprecated APIs. We have verified the framework binary using nm, otool, and strings, and _SecCertificateIsValid does not appear in exported or hidden symbols. Bitcode is disabled, dead-code stripping is enabled, and the Release build uses -Os.
Despite this, App Store Connect continues to detect
_SecCertificateIsValid. We have attached herewith screenshots of our analysis for the reference.
Can Apple’s server-side analysis or Security.framework internals still surface _SecCertificateIsValid? Is there a recommended way for SDK authors to prevent this symbol from being flagged?
Hi everyone,
We’re integrating Apple Calendar (iCalendar) into our Codapet app but haven’t found any official Apple APIs for event management and synchronisation.
Currently, we use CalDAV with Apple ID authentication and an app-specific password (ASP), storing the ASP encrypted in our database and decrypting it for each API call. We’re looking for a more secure and recommended approach to this integration.
Does Apple provide dedicated APIs for calendar sync, or is there a better alternative to avoid sending the ASP with every request? Any guidance or best practices would be greatly appreciated!
Thanks!
Hi everyone,
I'm working on an app for parents and kids where parents can define screen time goals or restrict usage of certain app categories (like social media or games). If the kid follows those rules—for example, by using their device less or avoiding restricted categories—they would earn points or rewards in the app.
I’ve been exploring if the Apple Screen Time API allows developers to access this kind of data (like total screen time, app usage by category, etc.) so that I can track the kid’s behavior and reward them accordingly.
Is it possible to programmatically access this data and implement such a reward system within my app? If so, what’s the best way to get started or which APIs should I look into?
Thanks in advance for your help!
I'm using FamilyActivityPicker to get consent for app/category management, which returns a FamilyActivitySelection object.
I serialize this FamilyActivitySelection object (just applicationTokens and categoryTokens) and pass it to my DeviceActivityMonitor extension via App Group UserDefaults. I am using the JSON encoder/decoder over PropertyList (though both seem to exhibit the same behavior).
After inspecting the FamilyActivitySelection object immediately after it's returned by FamilyActivityPicker in the main app, the application.bundleIdentifier property is consistently nil for every Application object within selection.applications. Similarly, category.localizedDisplayName is nil for ActivityCategory objects. This happens whether "Select All Apps" is used or if apps/categories are selected individually.
I understand that this is the intended behavior due to Apple's user privacy policies. I read on another post that my app can be provided with bundle identifiers and app names within Shield Configuration extensions and Device Activity Report extensions - I'm not sure which ones or how exactly to do this.
I am aware that I can use Label(applicationToken) SwiftUI view to display the app name/icon, but this doesn't give programmatic access to the bundleIdentifier string.
My app will not log or export these bundleIdentifiers outside of its sandbox. My goal is to create mappings to the FamilyActivitySelection with the publicly accessible bundleIdentifiers.
Any guidance, examples, or clarification on the intended workflow for this scenario would be greatly appreciated!
Issue Description:
When the snooze alarm and a set alarm share the same time, the behavior differs between locked and unlocked screen states.
The current issue occurs when the screen is unlocked and the device is on the home screen before the alarm goes off:
Alarm A is set for 17:23, and the snooze button is tapped when it rings.
Alarm B is set for 17:25.
At 17:25, Alarm B first vibrates and then rings (no buttons are pressed at this time).
A few seconds later, it vibrates a second time.
After that, the alarm becomes silent.
If dynamic/notification alarms are disabled, the next scheduled alarm rings normally.
Topic:
App & System Services
SubTopic:
General
I'm trying to fade in the sound used in my alarm app but currently there's no way to achieve this since the alarm sound loops and if i add a fade-in at the beginning of my audio, every time the audio loops the fadein happens.
Topic:
App & System Services
SubTopic:
General
Hi!
For some reason my DeviceActivityReport sometimes fails to load. I've tried setting up a very simple mock views and displaying a report with a simple "Hello world" but even that won't work. It prints the following error message in the terminal but doesn't show anything else or any context as to what has gone wrong.
Failed to update the client's configuration: Error Domain=DeviceActivityReportService.ReportViewController.ClientError Code=2 "(null)"
It seems like the "makeConfiguration" method for the report isn't even being invoked. That may though just be an issue with printing messages in the extension.
Any help on what could be the issue, or even just a message that you're being the same thing would be greatly appreciated!
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:
When Live Caller ID first came out I experimented with it and got it working using the Example PIR database.
All my links from that time are now out of date and no longer work, however I seem to have found where the PIR database example and documentation has moved to (https://swiftpackageindex.com/apple/pir-service-example/main/documentation/pirservice/testinginstructionslivecalleridlookup)
But what I can't find is an exact definition of the the logo size/max size/dimensions/format should be.
My memory from that time is that it was very pernickety, and if things weren't exactly right, the logo wasn't displayed.
I can remember the format had to be HEIC to get it to work.
Looking through the documentation however, I can't see exact requirements specified.
My question is - for the Live Caller ID logo what are the exact image requirements, and where are they documented?
reposting this in case it got missed the first time around here
https://developer.apple.com/forums/thread/775900
We had a question that came up when we comparing data from WeatherKit to other sources - WeatherKit visibility was well beyond the boundaries we had historically, even from Darksky. That raises two questions:
is visibility actually in meters like the docs say?
is this visibility at ground level, 500ft, or some other height?
We were seeing visibility numbers of up to 40 miles (after converting the number the API sent to miles), where all of our other sources are usually within 10 miles
Hello,
I am unable to figure out how I tell the FamilyActivityPicker whether it should show apps installed on my personal device (to be used with AuthorizationCenter.shared.requestAuthorization(for: .individual)) or apps installed on my child’s device (authenticated their phone via AuthorizationCenter.shared.requestAuthorization(for: .child)).
Is there any parameter or SwiftUI modifier I need to apply?
Otherwise, how does the user or the app know which token belongs to them and which token belongs to their child’s device?
Radar: FB17020977
Thanks a lot for your help!
Is there any way to use the screen time API on Mac?
I'm building a voice-to-text keyboard extension that needs to open the main app briefly for audio recording (since keyboard extensions can't record audio), then return the user to their original app.
The flow I'm trying to achieve:
User is in WhatsApp (or Messages, Slack, etc.)
User taps "Voice" button in my keyboard
My main app opens via deep link (myapp://keyboard/dictation)
App starts recording
App automatically returns user to WhatsApp
I cannot find a way to detect which app the keyboard is running inside, or which app opened my main app via the deep link.
UIInputViewController.textDocumentProxy - No host app information available
UIApplication.OpenURLOptionsKey.sourceApplication in application(_:open:options:) - When opened from a keyboard extension, does this return the host app bundle ID or the keyboard extension bundle ID?
Private APIs (for research only, not production):
_hostBundleID on UIInputViewController - blocked/returns nil on iOS 18
KVC approaches - all blocked
Hardcoded app support - Works but requires maintaining a list of popular apps and showing multiple buttons instead of a single "Voice" button
My questions:
When a keyboard extension triggers a URL open (via SwiftUI Link or UIApplication.shared.open), what does sourceApplication contain? The host app or the keyboard extension?
Is there any supported way for a main app to know which app it was launched from, specifically when that launch originated from a keyboard extension?
How do apps like "Wispr Flow" achieve seamless return-to-app with a single voice button? They seem to auto-return to whatever app the user was in.
Environment:
iOS 18.0+
Xcode 16
SwiftUI keyboard using KeyboardKit
Any guidance on the recommended approach would be greatly appreciated. I understand there may be privacy reasons for limiting host app detection, but the UX of requiring users to manually swipe back (or tap app-specific buttons) is significantly worse than automatic return.