We are encountering the following issue with our VoIP application for iPhone, published on the App Store, and would appreciate your guidance on possible countermeasures.
The VoIP application (callee side) utilizes a Wi-Fi network. The sequence leading to the issue is as follows:
VoIP App (callee): Launches
iPhone (callee): Locks (e.g., by short-pressing the power button)
VoIP App (callee): Transitions to a suspended state
VoIP App (caller): Initiates a VoIP call
VoIP App (callee): Receives a local push notification
VoIP App (callee): Answers the incoming call
VoIP App (callee): Executes performAnswerCallAction()
After this, the VoIP App (callee) uses "NSTimer scheduledTimerWithTimeInterval" to manage internal processing timing. However, the processing sometimes takes longer than the specified waiting time. Specifically, delays of several seconds can occur.
We understood that if the user is interacting with the screen and both the iPhone and the VoIP app are in an active state, the VoIP app's processing would not be delayed. However, can significant delays (several seconds) in application processing still occur even when the iPhone is in an active state (i.e., the user is interacting with the screen)?"
Notifications
RSS for tagLearn about the technical aspects of notification delivery on device, including notification types, priorities, and notification center management.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hello Apple Support Team,
We are using auto-renew plans in our app
We have set the webhook URL in our App Store Connect account to get the Store server notification to get the auto renew data for an user
The issue is when a user purchases any auto-renew plan at the auto-renew time, we are getting null data from the Apple side.
We have printed the log's data to check what data are coming from the Apple webhook. we have attached our logs data please check it and let me know what can we do to resolve this
Topic:
App & System Services
SubTopic:
Notifications
Tags:
Subscriptions
App Store Server Notifications
App Store Server Library
I'm strugling about the way how to code notifications for my weather aplication. I use data from my server that receives weather changing values from my own weather station and want to notify user of my app when eg strong wind will blow or temperature go under eg 3℃ etc.
The weather station has 8 sensors so there is sometimes a lot of data changing in particular minute that i set to parse data from server and notify user about it. But the notifications only works only when app is on and couple minutes after locking display.
So please what could i use strategy for the app to works even when the app sleeps ?
Topic:
App & System Services
SubTopic:
Notifications
Tags:
APNS
Notification Center
User Notifications
Hi,
We have a use case where our app needs to send repeated push notifications (both normal and critical alerts) to inform the user about a critical device state and grab their attention.
Since iOS doesn’t allow us to schedule local notifications beyond 30 seconds, I need to send multiple pushes from the server side.
My questions are:
Is there any documented limit on how many push notifications can be sent back-to-back before Apple starts throttling or restricting them?
Are critical alerts treated differently from normal notifications in terms of delivery restrictions or frequency limits?
Is there a recommended approach for handling scenarios where repeated urgent notifications are necessary to keep the user informed?
I want to make sure I’m following Apple’s guidelines and not risking rejection during review.
We are trying to figure out a strange issue.
Our app has not changed for at least 10 months but my devices and the QA tester device have all stopped receiving push/call notifications for twilio voip
The twilio credential and apple voip services certificate are in date and valid
It is pointing to the correct bundle id and topic (not changed configuration for years)
token passed in to TwilioVoiceSDK.register() is retrieved from PKPushRegistry as per guide
Running locally the Twilio Voice SDK successfully registers and retrieves APNs token
What is interesting is if I log in with exactly the same client account on an iOS 18.5 device (and an older iPad) call notifications work perfectly (I have made sure all focus modes/dnd are off and notification settings are identical)
The only changes myself and QA have made recently is minor iOS 18 version updates - 18.6.2 and 18.7.1
These now receive Invalid device token from APNs when Twilio attempts to create a call/voip notification for the user identity
Our devices sometimes switch environments test/prod so I installed the app cleanly on a borrowed 18.6.2 device and got the exact same issue
We have tested on these devices most of the year with no issues.
I have been in touch with twilio support and added code to explicitly unregister and re register on an affected device to clear any bindings but it didn't help.
Have apple made any changes in PushKit or token behaviour for later versions of iOS 18?
Thanks
Hello. I'm currently implementing Apple Notification v2 to prepare for refunds for in-app purchases, but I'm not receiving requests from Apple servers to my backend server.
I've applied HTTPS (TLS 1.2) and correctly registered production/sandbox notification URLs on App Store Connect.
After requesting a test notification, when I check the status of testNotificationToken, I receive an UNSUCCESSFUL_HTTP_RESPONSE_CODE as follows:
{"signedPayload":"......":[{"atteptDate":1752128001970,"sendAttemptResult":"UNSUCCESSFUL_HTTP_RESPONSE_CODE"}]}
The endpoint for receiving notifications is set to accept POST requests with application/json format, and it responds with 200 (OK) without any content. However, Apple notifications are not coming through.
Could anyone help me with this issue?
Topic:
App & System Services
SubTopic:
Notifications
Only iOS devices stop receiving notifications after a few days of the app being installed. To resolve this, you need to reinstall the app again.
I'm using Firebase to send messages.
Topic:
App & System Services
SubTopic:
Notifications
I have a “1” above the setting app on my iPhone. However when I open settings there is no notification that shows up. I have tried force restarting and done the beta updates as they release however nothing works to got rid of it. What can I do?
Topic:
App & System Services
SubTopic:
Notifications
I have been fighting this problem for two months and would love any help, advice or tips. Should I file a DTS ticket?
Summary
We attach a JPEG image to a local notification using UNNotificationAttachment. iOS reports the delivered notification as having attachments=1, but intermittently no image preview appears in Notification Center. In correlated cases, the attachment’s UNNotificationAttachment.url (which points into iOS’s attachment store) becomes unreadable (Data(contentsOf:) fails) even though the delivered notification still reports attachments=1.
This document describes the investigation, evidence, and mitigations attempted.
Product / Component
UserNotifications framework
UNNotificationAttachment rendering in Notification UI (Notification Center / banner / expanded preview)
Environment
App: OnThisDay (SwiftUI, Swift 6)
Notifications: local notifications scheduled with UNCalendarNotificationTrigger(repeats: false)
Attachment: JPEG generated from PhotoKit (PHImageManager.requestImage) and written to app temp directory, then passed into UNNotificationAttachment.
Test contexts:
Debug builds (direct Xcode install)
TestFlight builds (production signing)
iOS devices: multiple, reproducible with long runs and user clearing delivered notifications
Expected Result
Delivered notifications with UNNotificationAttachment should consistently show the image preview in Notification Center (thumbnail and expanded preview), as long as the notification reports attachments=1.
If the OS reports attachments=1, the attachment’s store URL should remain valid/readable for the lifetime of the delivered notification still present in Notification Center.
Actual Result
Intermittently:
Notification Center shows no image preview even though the app scheduled the notification with an attachment and iOS reports the delivered notification as having attachments=1.
When we inspect delivered notifications via UNUserNotificationCenter.getDeliveredNotifications, the delivered notification’s request.content.attachments.first?.url exists but is unreadable (attempting Data(contentsOf:) returns nil / throws), i.e. the backing attachment-store file appears missing or inaccessible.
In some scenarios the attachment-store file is readable for hours while the notification is pending, and then becomes unreadable after the notification is delivered.
Reproduction Scenarios (Observed)
Next-day reminders show attachment-store unreadable after delivery
1. Schedule a one-shot daily reminder for next day (07:00 local time) with UNCalendarNotificationTrigger(repeats: false) and a JPEG attachment.
2. During the prior day, periodic background refresh tasks verify the pending notification’s attachment-store URL is readable (pendingReadable=true).
3. After the reminder is delivered the next morning, the delivered snapshot shows the delivered notification’s attachment-store URL is unreadable (readable=false) and Notification Center shows no preview.
Interpretation: the attachment-store blob appears to become inaccessible around/after delivery, despite being readable while pending.
Evidence and Instrumentation
We added non-crashing diagnostic logging (Debug builds) around:
Scheduling time
Logged that we successfully created a UNNotificationAttachment from a unique temp file.
Logged that UNUserNotificationCenter.add(request) succeeded.
Queried pendingNotificationRequests() and logged the scheduled request’s attachment url.lastPathComponent (iOS attachment-store filename).
Delivered time (when app becomes active)
Called UNUserNotificationCenter.getDeliveredNotifications and logged:
delivered count, attachment count
attachment url.lastPathComponent
whether Data(contentsOf: attachment.url) succeeds (readable=true/false)
Content fingerprinting
Fingerprinted the exact JPEG bytes we wrote (SHA-256 prefix + byte count).
Logged the iOS attachment-store filename (url.lastPathComponent) returned post-scheduling.
Decode validation probe (later addition)
When Data(contentsOf:) succeeds, we validate it decodes as an image using CGImageSourceCreateWithData and log:
UTI (e.g. public.jpeg)
pixel width/height
magic header bytes
What we tried / Mitigations
Proactive “self-heal” for pending notifications
Change: during background refresh/foreground refresh, verify the pending daily reminder’s attachment-store URL readability. If it’s unreadable, reschedule with a new attachment (same trigger).
Rationale: if iOS drops the store file before delivery, recreating could repair it.
Result: We observed cases where pending remained readable but delivered became unreadable after delivery, so this doesn’t address all observed failures. It is still valuable hardening.
Increase scheduling frequency / reschedule closer to fire time (proposed/considered)
We discussed adding a debug mode to always recreate the daily reminder during background refresh tasks (or only within N hours of fire time) to reduce the time window between attachment creation and delivery.
Status: experimental; not yet confirmed to resolve the “pendingReadable=true → delivered unreadable after delivery” failure.
Impact
The primary UX value of the daily reminder is the preview photo; missing previews degrade core functionality.
Failures are intermittent and appear dependent on OS attachment-store behavior and Notification Center actions (clearing notifications), making them difficult to mitigate fully app-side.
Notes / Questions for Apple
1. Is iOS allowed to coalesce/deduplicate UNNotificationAttachment storage across notifications? If so, what is the retention model when delivered notifications are removed?
2. If a delivered notification still reports attachments=1, should its attachment-store URL remain valid/readable while the notification is still present in Notification Center?
3. In “next-day” one-shot scheduling scenarios, can the attachment-store blob be purged between scheduling and delivery (or immediately after delivery) even if the notification remains visible?
4. Is there a recommended pattern to ensure attachment previews remain stable for long-lived scheduled notifications (hours to a day), especially when using UNCalendarNotificationTrigger(repeats: false)?
Minimal Code Pattern (simplified)
1. Generate JPEG (PhotoKit → UIImage → JPEG Data).
2. Write to a unique temp URL.
3. Create attachment:
UNNotificationAttachment(identifier: <uuid>, url: <tempURL>, options: [UNNotificationAttachmentOptionsTypeHintKey: "public.jpeg"])
4. Schedule notification with a calendar trigger for the next morning.
Topic:
App & System Services
SubTopic:
Notifications
Hello,
We are trying to implement Actionable Notifications on iOS via Remote Notifications.
According to Apple’s official documentation (Declaring Your Actionable Notification Types),
it is recommended to register notification categories at launch time.
However, in our use case, the number of buttons and their actions in the Actionable Notification are determined at the time of the Remote Notification request.
This means that we cannot predefine the categories at app launch but need to dynamically configure them based on the payload of the Remote Notification.
Our Approach
We are considering setting aps.mutable-content = 1 and using Notification Service Extension to modify the categoryIdentifier dynamically.
Below is the JSON payload we plan to use for Remote Notifications:
{
"aps": {
"alert": {
"title": "New Message Received!",
"body": "Check out the details."
},
"category": "DYNAMIC_CATEGORY",
"mutable-content": 1
},
"categoryData": {
"id": "DYNAMIC_CATEGORY",
"actions": [
{
"id": "REPLY_ACTION",
"title": "Reply",
"options": ["foreground"]
},
{
"id": "DELETE_ACTION",
"title": "Delete",
"options": ["destructive"]
}
]
}
}
Questions:
Can we dynamically configure Actionable Notifications based on the Remote Notification payload?
If we set categoryIdentifier in Notification Service Extension’s didReceive(_:withContentHandler:), will users still see the correct action buttons even if the app is terminated?
What is the recommended approach to dynamically configure Actionable Notifications at the time of receiving the Remote Notification, rather than at app launch?
Is there a way to configure the APNS notification sound volume to be louder?
I am implementing some custom sounds(narrative sentences) for APNS, it does play the custom sound, but the volume of the custom sound is not loud enough even though I had set the device's volume and "RingTone and Alerts" volume to max.
I tried to amplify the custom sound file, it does play louder but the result is minimum if I want to maintain the quality of the sound without it been distorted.
I tried to use Notification Service Extension, AVAudioPlayer and AVAudioSession to play the sound, it does play louder in max volume compare with relying on default sound payload in APNS, but the problem is AVAudioPlayer and AVAudioSession do not seems to be usable when the application is in background or killed state, is there any other alternative I could use?
If a notification: ONE_TIME_CHARGE is used to ship the IAP content, it involves a point where the client might not finish the transaction, yet the item is shipped. Will an unfinished purchase affect refunds?
Topic:
App & System Services
SubTopic:
Notifications
When performing the P12 certificate sending test, there was an error stating that authentication failed due to the remote party closing the transport stream. May I ask how to solve this?
Here are some questions we received and answers:
Q1: Is there a limit to the number of alarms that can be scheduled using AlarmKit?
There is no set number as a limit, but this does not mean you can schedule a limitless number of alarms. Depending on device state, available resources, etc., the device may impose a limit, and restrict an app trying to schedule too many alarms simultaneously.
When you hit a limit and not able to schedule more alarms, you will receive the maximumLimitReached error.
Q2: Will the scheduled alarms persist after system or app events that may terminate an app, for example, a reboot, force quit, or app crash?
Yes, all alarms are expected to persist regardless of app or device state changes, once they are successfully scheduled.
Q3: Will alarms work if scheduled by an app that is hidden, or requires a passcode or Touch ID/Face ID to launch?
Hidden or passcode required apps do not work with AlarmKit. Currently, any scheduled alarms by such apps will silently fail.
Q4: When an alarm is dismissed (either by swiping or pressing the power button), can an app detect this action and execute code in response? What about force closed apps?
When an alarm is dismissed, the stopIntent set in the AlarmConfiguration is called.
Any code in the perform method of this AppIntent would execute.
Q5: Is there a focus mode that AlarmKit cannot break through?
No. AlarmKit alarms can break through all focus modes.
Q6: What is the expected behavior when alarms from multiple apps overlap? Which one gets priority?
Which alarm would get activated when multiple alarms are scheduled for the same time is non-deterministic. There is no way to guarantee which app or which alarm will "win".
Q7: What do pressing the physical buttons do when an AlarmKit alarm is active?
Any physical button that causes a reaction from AlarmKit will stop the currently alerting alarm.
Q8: If there are multiple alarms active at one time, which ones do physical buttons interact with?
Pressing a physical button will dismiss all currently alerting alarms
Argun Tekant /
DTS Engineer /
Core Technologies
Change History:
2025-08-15: First posted
Topic:
App & System Services
SubTopic:
Notifications
After porting code to Swift 6 (Xcode 16.4), I get a consistent crash (on simulator) when using UNUserNotificationServiceConnection
It seems (searching on the web) that others have met the same issue. Is it a known Swift6 bug ? Or am I misusing UNUserNotification ?
I do not have the crash when compiling on Xcode 26 ß5, which hints at an issue in Xcode 16.4.
Crash log:
Thread 10 Queue : com.apple.usernotifications.UNUserNotificationServiceConnection.call-out (serial)
As far as I can tell, it seems error is when calling
nonisolated func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
I had to declare non isolated to solve a compiler error.
Main actor-isolated instance method 'userNotificationCenter(_:didReceive:withCompletionHandler:)' cannot be used to satisfy nonisolated requirement from protocol 'UNUserNotificationCenterDelegate'
I was advised to:
Add 'nonisolated' to 'userNotificationCenter(_:didReceive:withCompletionHandler:)' to make this instance method not isolated to the actor
I filed a bug report: Aug 10, 2025 at 2:43 PM – FB19519575
Topic:
App & System Services
SubTopic:
Notifications
Tags:
Swift
Xcode
Notification Center
User Notifications
I have a working AlarmKit app, but I've noticed that after any iOS update (e.g. the 26.0.1 update from a few days ago), my scheduled alarms seem to lose their UI strings, so instead of the Stop button saying "Stop", it says "alarm_ui_stop_button" (which is my localization key for the button text). If I delete the alarm and re-add it, then it works again... until the next software update.
It seems like OS updates are interfering with the link between scheduled alarms and app localization strings, which I believe are dynamically looked up at alarm time (not at configuration time).
I am settings the strings in the standard way like this:
AlarmManager.AlarmConfiguration(
schedule: .fixed(date),
attributes: AlarmAttributes<SDAlarmMetadata>(
presentation: AlarmPresentation(
alert: AlarmPresentation.Alert(
title: "alarm_ui_title",
stopButton: .init(text: "alarm_ui_stop_button", textColor: .yellow, systemImageName: "xmark")
)
),
metadata: SDAlarmMetadata(title: title, subtitle: subtitle),
tintColor: .yellow
),
sound: .default
)
Has anyone else noticed this or found a workaround? I guess I could use localization keys that are identical to the desired text, but this would only work for one language.
Topic:
App & System Services
SubTopic:
Notifications
I've added a Notification Service Extension as a target to my React Native iOS app following Apple's official documentation. After completing all the setup steps as outlined in the documentation, the notification titles remain unchanged - notifications are arriving without any modifications, suggesting the extension isn't functioning properly.Testing Details:
Sending notifications via Apple Push Notification Console
Tested on iPhone 16 Pro Max (physical device)
Tested on iPhone 15 Pro simulator
Both show the same issue - no title modifications
The extension appears to not be executing at all. Has anyone encountered similar issues with Notification Service Extensions in React Native projects, or can suggest troubleshooting steps to verify the extension is properly configured and running?
We are observing an issue where the iOS Notification Service Extension (NSE) is terminated by the system during startup, before either didReceive(_:withContentHandler:) or serviceExtensionTimeWillExpire(_:) is invoked. When this occurs, the notification is delivered without modification (for example, an encrypted payload is shown to the user). System logs frequently contain the message “Extension will be killed because it used its runtime in starting up”.
During testing, we observed that CPU-intensive operations or heavy initialization performed early in the extension lifecycle — especially inside init() or directly on the main thread in didReceive often cause the system to kill the NSE almost immediately. These terminations happen significantly earlier than the commonly observed ~30-second execution window where the OS normally invokes serviceExtensionTimeWillExpire(_:) before ending the extension. When these early terminations occur, there is no call to the expiry handler, and the process appears to be forcefully shut down.
Moving the same operations to a background thread changes the behavior: the extension eventually expires around the usual 30-second window, after which the OS calls serviceExtensionTimeWillExpire(_:).
We also observed that memory usage plays a role in early termination. During tests involving large memory allocations, the system consistently killed the extension
once memory consumption exceeded a certain threshold (in our measurements, this occurred around 150–180 MB). Again, unlike normal time-based expiration, the system did not call the expiry handler and no crash report was produced.
Since Apple’s documentation does not specify concrete CPU, memory, or startup-cost constraints for Notification Service Extensions or any other extensions beyond the general execution limit, we are seeking clarification and best-practice guidance on expected behaviors, particularly around initialization cost and the differences between startup termination.
NSE Setup:
class NotificationService: UNNotificationServiceExtension {
static var notificationContentHandler: ((UNNotificationContent) -> Void)?
static var notificationContent: UNMutableNotificationContent?
static var shoudLoop = true
override func didReceive(_ request: UNNotificationRequest,
withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
NotificationService.notificationContentHandler = contentHandler
NotificationService.notificationContent =
request.content.mutableCopy() as? UNMutableNotificationContent
NotificationService.notificationContent!.title = "Weekly meeting"
NotificationService.notificationContent!.body = "Updated inside didReceive"
// Failing scenarios
}
override func serviceExtensionTimeWillExpire() {
NotificationService.shoudLoop = false
guard let handler = NotificationService.notificationContentHandler,
let content = NotificationService.notificationContent else { return }
content.body = "Updated inside serviceExtensionTimeWillExpire()"
handler(content)
}
}
Hi all,
May I please ask for an official clarification or documentation reference from Apple regarding this scenario:
Is it possible for an iOS app to automatically launch or open a specific screen when a push notification is received — while the app is in the background or terminated (killed) state?
I understand that for most cases, user interaction (such as tapping the notification) is required before the app can show UI. However, I’d like to confirm whether this is also true for time-sensitive or critical alert notifications, including emergency use cases (e.g. public safety alerts).
Specifically:
Can a critical alert notification directly launch the app or present a view controller?
Or is user interaction always required before the app can present any UI, even with the critical alert entitlement?
I would appreciate if anyone — especially Apple staff or engineers — could share an official Apple document or statement that confirms this behavior.
Thank you very much!
(Use case context: I’m developing an emergency broadcast feature for a property management / tenant app.)
Topic:
App & System Services
SubTopic:
Notifications
Tags:
APNS
User Notifications
PushKit
Background Tasks
i hava a app using Gateway.push.apple.com to push Notifications,but it is not working sine last month, i test the api show push Notifications success but my device can't receive the Notifications ,is this api not working anymore ? but why the api show push Notifications success ?