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

EKReminder semantics: startDateComponents vs dueDateComponents vs alarms
Hi everyone, I'm building a task management app that layers on top of EventKit/Reminders. I'm also moderating /r/AppleReminders. I see a confusion around the semantics of dates on both the developer side and on the user side. I'm trying to map the standard productivity mental model to the EKReminder implementation and hitting some walls. In productivity contexts, a task tends to have three distinct dates: Start Date: When the task becomes actionable — Don’t alert the user before this date. Notification: When the device should buzz/ping the user — Meaning that they can get started on the task. Due Date: Hard deadline — If the system works well, tasks are meant to rarely be past-deadline; productivity systems are about meeting deadlines rather than about missing them. The EventKit Reality Here is what I’m seeing in practice, and I’m hoping someone can correct me if I’m wrong: Field Description In Practice (Reminders App) startDateComponents Docs say "start date of the task" Seemingly unused? I can set it via API, but the Reminders app UI ignores it. It doesn't seem to trigger visibility in "Today" or Smart Lists. dueDateComponents Docs say "date by which reminder should be completed" Conflated. Acts as the "Date" you see in the list. It functions as the Start Date (shows in Today), Due Date (turns red tomorrow), AND Notification time (unless early alerts are set). alarms Inherited from EKCalendarItem seems to be used for the actual notifications, including "Early Reminders," but tightly coupled to the due date in the UI. My Questions: Is startDateComponents effectively a dead field? Is there any native behavior (Smart List filtering, sorting, visibility) that respects this field, or is it purely for metadata storage for third-party apps? Smart List Logic: I was hoping to create a Smart List that shows "Actionable" items (i.e., Start Date <= Today). However, the Smart List filters only offer a generic "Date" field, which maps to dueDateComponents. Has anyone successfully filtered by startDateComponents in a native Smart List? Conflation: Is there any "blessed" way to set a Due Date that is distinct from the Notification time without fighting the system? (e.g. Due Friday, but remind me Wednesday). Any insight into the intended semantics here would be huge. I'm trying to avoid fighting the framework, but the "One Date to Rule Them All" approach in the Reminders app is making it tricky to support separate Start/Due dates. Thanks!
1
0
203
Dec ’25
WeatherKit attribution for watch app
I have a watch only app that display an open/close park status and the current temperature with a current condition icon. That's it. On second submission the watch app was rejected due to no WeatherKit attribution. I have a lack of clarity of what's needed. With my single view that display my content I don't want WeatherKit attribution to overwhelm what's being presented to the user. I've tried looking for watch apps in the store that provide attribution and I'm not finding any. Looking for advice on how to meet this requirement without attribution overpowering my content.
0
0
120
Dec ’25
How to display a full-screen light based (sunrise) alarm notification at specific time (like Clock app)? Can Critical Alerts help with visuals too?
I'm building a light-based(sunrise) alarm iOS app using SwiftUI , the idea is to wake users not with sound, but with a full-screen bright light UI (mimicking sunrise or a light alarm clock). I'd like to replicate behavior similar to the native Clock app: My goal: When the scheduled time is reached, forcefully display a full-screen "light" screen, even if the device is: locked running another app or the app is backgrounded The problem: So far, I can: Show a full-screen AlarmView only if the app is opening But I cannot: Automatically wake the screen when app is closed My confusion: I've read that Critical Alerts allow bypassing Do Not Disturb and Silent Mode but that's only for sound right? Can Critical Alerts also help with waking the screen or displaying visuals like full-screen UI automatically? If not, is there any way to simulate this kind of alarm: light-based screen effect ( sunrise alarm clock) triggered automatically at a specific time without needing the user to manually tap the notification? Do I need to consider: PushKit + VoIP? CallKit (but it's meant for calls)? Background tasks + silent push? Or is it simply impossible without special entitlements? Thanks in advance for any insights. This seems like a simple use case (light-based alarm), but I’m surprised how limited the options is.
1
0
127
Aug ’25
Forecasts missing in WeatherKit
I am using the WeatherKit REST API with hourlyStart/hourlyEnd parameters to request up to 240 hours of forecast data. However, when requesting later in the day, the API returns fewer than 240 hourly forecasts — e.g., 239 at 08:00, 238 at 09:00, etc. and goes up to 224 for 23:00 It appears the returned list is contiguous but truncated at the end compared to the full 240-hour window. I have also tried getting the data after sometime, like 09:00 data at 09:45 but still was missing the same data at the end. Is this expected WeatherKit behavior or a bug? If it’s expected, is there documentation explaining how the “forecast horizon” is determined and when it is updated? Thank you.
0
0
248
Dec ’25
Message Filter Extension (F-Secre) Branding Not Displaying in iOS 18 → iOS 26
Hello, I am developing a messaging filtering app (F-Secre) that includes a Message Filter Extension. The extension correctly identifies and filters spam SMS/iMessage. In iOS 18, when a message was filtered into the Junk folder, the Messages app would correctly display a label beneath it indicating it was filtered by our product, e.g., “Junk filtered by F-Secre”. After updating to the iOS 26 beta (26.0 (23A5330a)), the filtering functionality itself still works—messages are correctly moved to the Junk folder. However, the branding attribution ("filtered by F-Secre") is now missing. The message appears in the Junk folder with no indication of which extension filtered it. This is a regression in user experience, as it removes visibility and credit for our app's work and might confuse users about whether the filtering system is active.
2
0
178
Sep ’25
How does ageGates actually affect the returned age range?
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.
0
0
122
Dec ’25
How to stop today's instance of repeating alarms in AlarmKit without affecting future days?
I'm using the new AlarmKit framework to build a Swift app that lets users schedule multiple repeating alarms. The goal is to allow users to stop all alarms for today if they wake up early, but the alarms should still ring on their scheduled days in the future (for example, every Monday). What I tried: When the user chooses to stop alarms for today, I delete all alarms and re-add them. However, this doesn't work as expected. If today is Monday and I delete and re-add the alarm with .weekday = .monday, it still rings today. That means re-adding the alarm doesn't skip today's instance, even though it's repeating. What I want to achieve: Skip or suppress today's alarms when the user stops them manually Keep the same alarms active for their scheduled days in the future Questions: Is there a way in AlarmKit to prevent a repeating alarm from ringing today if it was just re-added or there are better alternatives to this problem? Is the only workaround to delay re-adding until after today’s alarms would have fired? What is the best approach to achieve this?
0
0
100
Aug ’25
Notification Permission Issue in Device Activity Report Extension (iOS 26)
I'm facing a problem where notification permissions are working fine in the main app, but failing in the Device Activity Report Extension on iOS 26. This issue wasn’t present in earlier iOS versions. Despite having notification permissions granted in the main app, the extension fails to get authorization. iOS 26: " Before iOS 26:
1
0
159
Dec ’25
Issue with beta Declared Age Range
I'm trying to work with the beta version of the Declared Age Range framework based on an article's tutorial but am getting the following error: [C:1-3] Error received: Invalidated by remote connection. and AgeRangeService.Error.notAvailable is being thrown on the call to requestAgeRange. I'm using Xcode 26 beta 5 and my simulator is running the 26.0 beta. The iCloud account that I have signed into the simulator has a DOB set as well. This is my full ContentView where I'm trying to accomplish this. struct ContentView: View { @Environment(\.requestAgeRange) var requestAgeRange @State var advancedFeaturesEnabled = false var body: some View { VStack { Button("Advanced Features") {} .disabled(!advancedFeaturesEnabled) } .task { await requestAgeRangeHelper() } } func requestAgeRangeHelper() async { do { let ageRangeResponse = try await requestAgeRange(ageGates: 16) switch ageRangeResponse { case let .sharing(range): if let lowerBound = range.lowerBound, lowerBound >= 16 { advancedFeaturesEnabled = true } case .declinedSharing: break // Handle declined sharing default: break } } catch AgeRangeService.Error.invalidRequest { print("Invalid request") // Handle invalid request (e.g., age range < 2 years) } catch AgeRangeService.Error.notAvailable { print("Not available") // Handle device configuration issues } catch { print("Other") } } }
1
0
287
Aug ’25
Screen Time can be bypassed by manually changing the date and time
My son uses an iPhone XS running iOS 18.7.2. He is able to bypass all Screen Time app limits by manually changing the date under Settings → General → Date & Time. When he sets the date/time forward or backward, the configured Screen Time restrictions no longer apply. Please make it possible on iOS 18.7.2 (and future versions) to prevent manual date and time changes when Screen Time is enabled, so that children cannot use this method to circumvent app limits.
1
0
87
Dec ’25
How can I calculate distance and vertical velocity?
Can't I just add up all of the accelerations of the accelerometer and then use this physics equation to get distance? d = v(i) x t + (1/2) x a x t ^2 In this: v(i) would be 0 t = 1 second a = all accelerometer speeds added together for.1 second t = 1 second Can't I just use this equation to get vertical velocity? A lot of people have said it is impossible but It has been done with variometer apps. I can’t figure out the code. Can anyone guide me in the right direction? v(f) = v(i) + a x t v(i) = 0 a = y-axis acceleration for 1 second t = 1 second Please let me know if this is possible. Thank you so much for your help.
2
0
272
Aug ’25
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
1
0
341
Aug ’25
blockedApplications api to HIDE app categories?
Is there any way to use blockedApplications to hide all apps in a category? Currently, I use blockedApplications to hide individual apps, but it doesn’t work when I select an entire category. I thought the only solution would be to use shield, which doesn’t hide the apps but creates a blocking shield. However, I found an app on the App Store called Fokus, and it’s able to select a category and block all the apps in it. Does anyone know how this could be possible?
0
0
137
Nov ’25
How do I launch the Outlook Mail app from my development app?
I want to start the mail application from the development application, but the mail application made by Apple starts. It doesn't work even if I change the default email application to Outlook. When you delete the Apple Mail app, Outlook starts. I want to automatically attach the generated pdf file to the email, but that doesn't work either. Please tell me how to code.
0
0
108
Sep ’25
Universal Link always shows “Open App A?” banner instead of redirecting automatically
We have a login flow where the user authenticates in Safari, and at the end of the process the authentication server redirects back to our app using a Universal Link. On most devices, the app opens automatically without any confirmation banner. However, on several iPads, Safari always shows the “Open App A?” banner after the redirect. The user must tap Open every time. Other devices running the same iOS version do not show this issue. Expected Flow (working devices): Start authentication Safari login Authentication server redirects using a Universal Link App A opens automatically Problematic Flow (several iPads): Start authentication Safari login Authentication server redirects using a Universal Link Safari shows “Open App A?” confirmation banner User must tap Open App A starts Questions: Is this a known issue in iOS? Or is this expected behavior under certain conditions (i.e., is there a specific Safari/iOS specification that causes this banner to appear)? Is there any way to prevent Safari from showing the “Open App A?” banner and allow automatic redirection? *This issue did not occur on iOS 16, but it started appearing after updating to iOS 17. Devices : iPad 9th Gen/iPad 10th Gen
0
0
259
Nov ’25
Stopping a non-repeating alarm does not cancel it
I'm currently experimenting with AlarmKit and, when configuring an alarm with a Relative schedule, but that never repeats, I find that it is still scheduled in the AlarmManager, but the documentation says that an alarm that has no repeat schedule will be removed from the AlarmManager after firing. This behavior is experienced both in my project and with the sample code AlarmKit-ScheduleAndAlert To reproduce, create a non-repeating alarm, and, after firing, it will still be on the list marked as Scheduled Am I doing something wrong or is this a bug?
0
0
106
Aug ’25
Screen Time shield not hiding after “Access App” custom button on Shield on TestFlight (works in local debug)
Hi, I am building an iOS app that uses FamilyControls / ManagedSettings to restrict apps. Flow of my app: In my main app, the user chooses which apps to restrict using FamilyActivityPicker (for example, they select Instagram). I save the selection in an App Group. I then use ManagedSettingsStore in the main app to add those app tokens into store.shield.applications, so a Screen Time shield appears when the user opens Instagram. In my ShieldConfigurationExtension, I show a shield UI with a primary button called “Access App”. In my ShieldActionExtension, when the user taps “Access App”, I want to immediately hide the shield and allow Instagram. To hide the shield, I am using this code in my ShieldActionExtension: final class ShieldActionExtension: ShieldActionDelegate { // ... override func handle( action: ShieldAction, for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void ) { switch action { case .primaryButtonPressed: handlePrimaryButton(for: application, completionHandler: completionHandler) case .secondaryButtonPressed: completionHandler(.close) @unknown default: completionHandler(.defer) } } private func handlePrimaryButton( for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void ) { // (I update some app-group state here, lives, history, etc.) // This is the important part: I try to unshield the app let store = ManagedSettingsStore() var apps = store.shield.applications ?? Set<ApplicationToken>() apps.remove(application) store.shield.applications = apps // I then tell the system to re-evaluate completionHandler(.defer) } } (When testing another approach, I also tried completionHandler(.close) after removing the app from the shield applications.) Behavior I see: Local / Xcode debug build (installed by cable): Open Instagram → Slofy shield appears. Tap “Access App” → the above code runs. Shield disappears immediately and Instagram is usable. ✅ TestFlight build: Open Instagram → Slofy shield appears. Tap “Access App” → the above code runs, and I see in logs: Removed app from shield set (apps now: 0) But the shield does not hide. It stays on the screen. ❌ Only if I then open my main app (Slofy) and close it again, and then return to Instagram, the shield disappears and Instagram is unlocked. So the same code works as expected in local debug builds, but in TestFlight builds the Screen Time shield does not refresh / disappear immediately after I remove the app from store.shield.applications inside the ShieldActionExtension. My questions: Is it supported to unshield an app directly from inside a ShieldActionExtension (by removing it from ManagedSettingsStore().shield.applications) and expect the shield to disappear immediately? Is there any difference in how ManagedSettingsStore changes are applied between debug and TestFlight / release builds for Screen Time shields? Is the main app required to be in the foreground for the shield to update, or is there a recommended pattern to make the shield hide right after the user taps the primary button in the shield? I would like the behavior to be: User opens restricted app → shield shows → taps “Access App” → shield hides immediately and the app becomes usable, without needing to open the main app. Any guidance on the correct way to implement this with Screen Time extensions would be greatly appreciated. Thank you.
1
0
607
Nov ’25
BadDeviceToken Error in Live Activities
Hello everyone, I’m currently receiving feedback from clients in a production environment who are encountering a BadDeviceToken error with Live Activities, which is preventing their states from updating. However, for other clients, the token is working fine and everything functions as expected. I’m collaborating with the back-end developers to gather more information about this issue, but the only log message we’re seeing is: Failed to send a push, APNS reported an error: BadDeviceToken I would greatly appreciate it if anyone could provide some insight or information on how to resolve this issue.
3
0
618
Nov ’25
EKReminder semantics: startDateComponents vs dueDateComponents vs alarms
Hi everyone, I'm building a task management app that layers on top of EventKit/Reminders. I'm also moderating /r/AppleReminders. I see a confusion around the semantics of dates on both the developer side and on the user side. I'm trying to map the standard productivity mental model to the EKReminder implementation and hitting some walls. In productivity contexts, a task tends to have three distinct dates: Start Date: When the task becomes actionable — Don’t alert the user before this date. Notification: When the device should buzz/ping the user — Meaning that they can get started on the task. Due Date: Hard deadline — If the system works well, tasks are meant to rarely be past-deadline; productivity systems are about meeting deadlines rather than about missing them. The EventKit Reality Here is what I’m seeing in practice, and I’m hoping someone can correct me if I’m wrong: Field Description In Practice (Reminders App) startDateComponents Docs say "start date of the task" Seemingly unused? I can set it via API, but the Reminders app UI ignores it. It doesn't seem to trigger visibility in "Today" or Smart Lists. dueDateComponents Docs say "date by which reminder should be completed" Conflated. Acts as the "Date" you see in the list. It functions as the Start Date (shows in Today), Due Date (turns red tomorrow), AND Notification time (unless early alerts are set). alarms Inherited from EKCalendarItem seems to be used for the actual notifications, including "Early Reminders," but tightly coupled to the due date in the UI. My Questions: Is startDateComponents effectively a dead field? Is there any native behavior (Smart List filtering, sorting, visibility) that respects this field, or is it purely for metadata storage for third-party apps? Smart List Logic: I was hoping to create a Smart List that shows "Actionable" items (i.e., Start Date <= Today). However, the Smart List filters only offer a generic "Date" field, which maps to dueDateComponents. Has anyone successfully filtered by startDateComponents in a native Smart List? Conflation: Is there any "blessed" way to set a Due Date that is distinct from the Notification time without fighting the system? (e.g. Due Friday, but remind me Wednesday). Any insight into the intended semantics here would be huge. I'm trying to avoid fighting the framework, but the "One Date to Rule Them All" approach in the Reminders app is making it tricky to support separate Start/Due dates. Thanks!
Replies
1
Boosts
0
Views
203
Activity
Dec ’25
WeatherKit attribution for watch app
I have a watch only app that display an open/close park status and the current temperature with a current condition icon. That's it. On second submission the watch app was rejected due to no WeatherKit attribution. I have a lack of clarity of what's needed. With my single view that display my content I don't want WeatherKit attribution to overwhelm what's being presented to the user. I've tried looking for watch apps in the store that provide attribution and I'm not finding any. Looking for advice on how to meet this requirement without attribution overpowering my content.
Replies
0
Boosts
0
Views
120
Activity
Dec ’25
How to display a full-screen light based (sunrise) alarm notification at specific time (like Clock app)? Can Critical Alerts help with visuals too?
I'm building a light-based(sunrise) alarm iOS app using SwiftUI , the idea is to wake users not with sound, but with a full-screen bright light UI (mimicking sunrise or a light alarm clock). I'd like to replicate behavior similar to the native Clock app: My goal: When the scheduled time is reached, forcefully display a full-screen "light" screen, even if the device is: locked running another app or the app is backgrounded The problem: So far, I can: Show a full-screen AlarmView only if the app is opening But I cannot: Automatically wake the screen when app is closed My confusion: I've read that Critical Alerts allow bypassing Do Not Disturb and Silent Mode but that's only for sound right? Can Critical Alerts also help with waking the screen or displaying visuals like full-screen UI automatically? If not, is there any way to simulate this kind of alarm: light-based screen effect ( sunrise alarm clock) triggered automatically at a specific time without needing the user to manually tap the notification? Do I need to consider: PushKit + VoIP? CallKit (but it's meant for calls)? Background tasks + silent push? Or is it simply impossible without special entitlements? Thanks in advance for any insights. This seems like a simple use case (light-based alarm), but I’m surprised how limited the options is.
Replies
1
Boosts
0
Views
127
Activity
Aug ’25
Forecasts missing in WeatherKit
I am using the WeatherKit REST API with hourlyStart/hourlyEnd parameters to request up to 240 hours of forecast data. However, when requesting later in the day, the API returns fewer than 240 hourly forecasts — e.g., 239 at 08:00, 238 at 09:00, etc. and goes up to 224 for 23:00 It appears the returned list is contiguous but truncated at the end compared to the full 240-hour window. I have also tried getting the data after sometime, like 09:00 data at 09:45 but still was missing the same data at the end. Is this expected WeatherKit behavior or a bug? If it’s expected, is there documentation explaining how the “forecast horizon” is determined and when it is updated? Thank you.
Replies
0
Boosts
0
Views
248
Activity
Dec ’25
Message Filter Extension (F-Secre) Branding Not Displaying in iOS 18 → iOS 26
Hello, I am developing a messaging filtering app (F-Secre) that includes a Message Filter Extension. The extension correctly identifies and filters spam SMS/iMessage. In iOS 18, when a message was filtered into the Junk folder, the Messages app would correctly display a label beneath it indicating it was filtered by our product, e.g., “Junk filtered by F-Secre”. After updating to the iOS 26 beta (26.0 (23A5330a)), the filtering functionality itself still works—messages are correctly moved to the Junk folder. However, the branding attribution ("filtered by F-Secre") is now missing. The message appears in the Junk folder with no indication of which extension filtered it. This is a regression in user experience, as it removes visibility and credit for our app's work and might confuse users about whether the filtering system is active.
Replies
2
Boosts
0
Views
178
Activity
Sep ’25
How does ageGates actually affect the returned age range?
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.
Replies
0
Boosts
0
Views
122
Activity
Dec ’25
How to stop today's instance of repeating alarms in AlarmKit without affecting future days?
I'm using the new AlarmKit framework to build a Swift app that lets users schedule multiple repeating alarms. The goal is to allow users to stop all alarms for today if they wake up early, but the alarms should still ring on their scheduled days in the future (for example, every Monday). What I tried: When the user chooses to stop alarms for today, I delete all alarms and re-add them. However, this doesn't work as expected. If today is Monday and I delete and re-add the alarm with .weekday = .monday, it still rings today. That means re-adding the alarm doesn't skip today's instance, even though it's repeating. What I want to achieve: Skip or suppress today's alarms when the user stops them manually Keep the same alarms active for their scheduled days in the future Questions: Is there a way in AlarmKit to prevent a repeating alarm from ringing today if it was just re-added or there are better alternatives to this problem? Is the only workaround to delay re-adding until after today’s alarms would have fired? What is the best approach to achieve this?
Replies
0
Boosts
0
Views
100
Activity
Aug ’25
Notification Permission Issue in Device Activity Report Extension (iOS 26)
I'm facing a problem where notification permissions are working fine in the main app, but failing in the Device Activity Report Extension on iOS 26. This issue wasn’t present in earlier iOS versions. Despite having notification permissions granted in the main app, the extension fails to get authorization. iOS 26: " Before iOS 26:
Replies
1
Boosts
0
Views
159
Activity
Dec ’25
Issue with beta Declared Age Range
I'm trying to work with the beta version of the Declared Age Range framework based on an article's tutorial but am getting the following error: [C:1-3] Error received: Invalidated by remote connection. and AgeRangeService.Error.notAvailable is being thrown on the call to requestAgeRange. I'm using Xcode 26 beta 5 and my simulator is running the 26.0 beta. The iCloud account that I have signed into the simulator has a DOB set as well. This is my full ContentView where I'm trying to accomplish this. struct ContentView: View { @Environment(\.requestAgeRange) var requestAgeRange @State var advancedFeaturesEnabled = false var body: some View { VStack { Button("Advanced Features") {} .disabled(!advancedFeaturesEnabled) } .task { await requestAgeRangeHelper() } } func requestAgeRangeHelper() async { do { let ageRangeResponse = try await requestAgeRange(ageGates: 16) switch ageRangeResponse { case let .sharing(range): if let lowerBound = range.lowerBound, lowerBound >= 16 { advancedFeaturesEnabled = true } case .declinedSharing: break // Handle declined sharing default: break } } catch AgeRangeService.Error.invalidRequest { print("Invalid request") // Handle invalid request (e.g., age range < 2 years) } catch AgeRangeService.Error.notAvailable { print("Not available") // Handle device configuration issues } catch { print("Other") } } }
Replies
1
Boosts
0
Views
287
Activity
Aug ’25
Screen Time can be bypassed by manually changing the date and time
My son uses an iPhone XS running iOS 18.7.2. He is able to bypass all Screen Time app limits by manually changing the date under Settings → General → Date & Time. When he sets the date/time forward or backward, the configured Screen Time restrictions no longer apply. Please make it possible on iOS 18.7.2 (and future versions) to prevent manual date and time changes when Screen Time is enabled, so that children cannot use this method to circumvent app limits.
Replies
1
Boosts
0
Views
87
Activity
Dec ’25
How can I calculate distance and vertical velocity?
Can't I just add up all of the accelerations of the accelerometer and then use this physics equation to get distance? d = v(i) x t + (1/2) x a x t ^2 In this: v(i) would be 0 t = 1 second a = all accelerometer speeds added together for.1 second t = 1 second Can't I just use this equation to get vertical velocity? A lot of people have said it is impossible but It has been done with variometer apps. I can’t figure out the code. Can anyone guide me in the right direction? v(f) = v(i) + a x t v(i) = 0 a = y-axis acceleration for 1 second t = 1 second Please let me know if this is possible. Thank you so much for your help.
Replies
2
Boosts
0
Views
272
Activity
Aug ’25
Detecting iPhone absence via UWB on macOS
I'm developing a proximity tool on macOS Tahoe 26.2 (M4 MacBook Pro) to detect when my iPhone leaves the immediate vicinity of my macbook. Does NearbyInteraction on macOS support persistent background sessions for detecting peer absence (didInvalidate/timeout), or is CoreBluetooth still required as the keep-alive trigger?
Replies
0
Boosts
0
Views
136
Activity
Jan ’26
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
1
Boosts
0
Views
341
Activity
Aug ’25
blockedApplications api to HIDE app categories?
Is there any way to use blockedApplications to hide all apps in a category? Currently, I use blockedApplications to hide individual apps, but it doesn’t work when I select an entire category. I thought the only solution would be to use shield, which doesn’t hide the apps but creates a blocking shield. However, I found an app on the App Store called Fokus, and it’s able to select a category and block all the apps in it. Does anyone know how this could be possible?
Replies
0
Boosts
0
Views
137
Activity
Nov ’25
How do I launch the Outlook Mail app from my development app?
I want to start the mail application from the development application, but the mail application made by Apple starts. It doesn't work even if I change the default email application to Outlook. When you delete the Apple Mail app, Outlook starts. I want to automatically attach the generated pdf file to the email, but that doesn't work either. Please tell me how to code.
Replies
0
Boosts
0
Views
108
Activity
Sep ’25
Universal Link always shows “Open App A?” banner instead of redirecting automatically
We have a login flow where the user authenticates in Safari, and at the end of the process the authentication server redirects back to our app using a Universal Link. On most devices, the app opens automatically without any confirmation banner. However, on several iPads, Safari always shows the “Open App A?” banner after the redirect. The user must tap Open every time. Other devices running the same iOS version do not show this issue. Expected Flow (working devices): Start authentication Safari login Authentication server redirects using a Universal Link App A opens automatically Problematic Flow (several iPads): Start authentication Safari login Authentication server redirects using a Universal Link Safari shows “Open App A?” confirmation banner User must tap Open App A starts Questions: Is this a known issue in iOS? Or is this expected behavior under certain conditions (i.e., is there a specific Safari/iOS specification that causes this banner to appear)? Is there any way to prevent Safari from showing the “Open App A?” banner and allow automatic redirection? *This issue did not occur on iOS 16, but it started appearing after updating to iOS 17. Devices : iPad 9th Gen/iPad 10th Gen
Replies
0
Boosts
0
Views
259
Activity
Nov ’25
Stopping a non-repeating alarm does not cancel it
I'm currently experimenting with AlarmKit and, when configuring an alarm with a Relative schedule, but that never repeats, I find that it is still scheduled in the AlarmManager, but the documentation says that an alarm that has no repeat schedule will be removed from the AlarmManager after firing. This behavior is experienced both in my project and with the sample code AlarmKit-ScheduleAndAlert To reproduce, create a non-repeating alarm, and, after firing, it will still be on the list marked as Scheduled Am I doing something wrong or is this a bug?
Replies
0
Boosts
0
Views
106
Activity
Aug ’25
Screen Time shield not hiding after “Access App” custom button on Shield on TestFlight (works in local debug)
Hi, I am building an iOS app that uses FamilyControls / ManagedSettings to restrict apps. Flow of my app: In my main app, the user chooses which apps to restrict using FamilyActivityPicker (for example, they select Instagram). I save the selection in an App Group. I then use ManagedSettingsStore in the main app to add those app tokens into store.shield.applications, so a Screen Time shield appears when the user opens Instagram. In my ShieldConfigurationExtension, I show a shield UI with a primary button called “Access App”. In my ShieldActionExtension, when the user taps “Access App”, I want to immediately hide the shield and allow Instagram. To hide the shield, I am using this code in my ShieldActionExtension: final class ShieldActionExtension: ShieldActionDelegate { // ... override func handle( action: ShieldAction, for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void ) { switch action { case .primaryButtonPressed: handlePrimaryButton(for: application, completionHandler: completionHandler) case .secondaryButtonPressed: completionHandler(.close) @unknown default: completionHandler(.defer) } } private func handlePrimaryButton( for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void ) { // (I update some app-group state here, lives, history, etc.) // This is the important part: I try to unshield the app let store = ManagedSettingsStore() var apps = store.shield.applications ?? Set<ApplicationToken>() apps.remove(application) store.shield.applications = apps // I then tell the system to re-evaluate completionHandler(.defer) } } (When testing another approach, I also tried completionHandler(.close) after removing the app from the shield applications.) Behavior I see: Local / Xcode debug build (installed by cable): Open Instagram → Slofy shield appears. Tap “Access App” → the above code runs. Shield disappears immediately and Instagram is usable. ✅ TestFlight build: Open Instagram → Slofy shield appears. Tap “Access App” → the above code runs, and I see in logs: Removed app from shield set (apps now: 0) But the shield does not hide. It stays on the screen. ❌ Only if I then open my main app (Slofy) and close it again, and then return to Instagram, the shield disappears and Instagram is unlocked. So the same code works as expected in local debug builds, but in TestFlight builds the Screen Time shield does not refresh / disappear immediately after I remove the app from store.shield.applications inside the ShieldActionExtension. My questions: Is it supported to unshield an app directly from inside a ShieldActionExtension (by removing it from ManagedSettingsStore().shield.applications) and expect the shield to disappear immediately? Is there any difference in how ManagedSettingsStore changes are applied between debug and TestFlight / release builds for Screen Time shields? Is the main app required to be in the foreground for the shield to update, or is there a recommended pattern to make the shield hide right after the user taps the primary button in the shield? I would like the behavior to be: User opens restricted app → shield shows → taps “Access App” → shield hides immediately and the app becomes usable, without needing to open the main app. Any guidance on the correct way to implement this with Screen Time extensions would be greatly appreciated. Thank you.
Replies
1
Boosts
0
Views
607
Activity
Nov ’25
NSUserDefault In release mode, the values are missing
In release mode, the values are missing. I don't know what's wrong with it. If I install the debug version first and then overwrite it with the release build, I can retrieve the values stored in debug mode. But if I uninstall completely and install the release version directly, it's empty
Replies
2
Boosts
0
Views
139
Activity
Aug ’25
BadDeviceToken Error in Live Activities
Hello everyone, I’m currently receiving feedback from clients in a production environment who are encountering a BadDeviceToken error with Live Activities, which is preventing their states from updating. However, for other clients, the token is working fine and everything functions as expected. I’m collaborating with the back-end developers to gather more information about this issue, but the only log message we’re seeing is: Failed to send a push, APNS reported an error: BadDeviceToken I would greatly appreciate it if anyone could provide some insight or information on how to resolve this issue.
Replies
3
Boosts
0
Views
618
Activity
Nov ’25