Why can I use background delivery to realize background notifications when I run the app for the first time, but when I delete the app running in the background, and then reopen the app to run it in the background, there will be no background notification when the data changes?
User Notifications
RSS for tagPush user-facing notifications to the user's device from a server or generate them locally from your app using User Notifications.
Posts under User Notifications tag
142 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I'm having a reproducible problem receiving push notifications on macOS 26.2.
The pattern is that the push is received and then discarded almost immediately (there is a 60s expiration date) when on battery power and then when I plug in pushes start working and even if I unplug again it works for hours until breaking again.
These are alert notifications with priority 10.
Other team members have had similar problems but less reliably broken and even get a "stored for device power considerations" message followed by discarded (see apns-unique-id c29250a3-abbf-008a-96f9-a5384e32d1df).
An example from my machine with the apns-unique-id 6b2dfe3d-af99-182a-0e1e-6b811d3ec486 which fails immediately.
iOS is working fine however so this seems to be confined to macOS only.
I'm sending local push notifications and want to show specific content based on the id of any notification the user opens. I'm able to do this with no issues when the app is already running in the background using the code below.
final class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCenterDelegate {
let container = AppContainer()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
let center = UNUserNotificationCenter.current()
center.delegate = self
return true
}
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: () -> Void) {
container.notifications.handleResponse(response)
completionHandler()
}
}
However, the delegate never fires if the app was terminated before the user taps the notification. I'm looking for a way to fix this without switching my app lifecycle to UIKit.
This is a SwiftUI lifecycle app using UIApplicationDelegateAdaptor.
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
I’m aware notification responses may be delivered via launchOptions on cold start, but I’m unsure how to bridge that cleanly into a SwiftUI lifecycle app without reverting to UIKit.
Hi, happy new year, I'm a Product Manager for a communications app that's currently in testflight. We requested the com.apple.developer.usernotifications.filtering entitlement on December 3rd, and have yet to receive a response from Apple. I understand that the holiday break may have gotten in the way, however it feels like we were lost in the queue as it's been 6 weeks with no response. Our app owner has checked-in inside appstoreconnect but has not received anything back.
Is this common? Is there any process for getting a status update?
Are we doing something wrong?
Without this entitlement we cannot make the device ring in the background. The app is a voice and video messaging platform.
Hi, I’m having issues with push notifications on my phone across multiple apps. When someone sends me a message, I only receive the notification 10 to 15 minutes later. For example, on WhatsApp, people say that my chat only shows one checkmark when they send me a message.
I don’t know what else to do. I’ve already contacted Apple Support, visited an Apple-affiliated physical store, and followed all the recommended procedures. This is my first time using an iPhone—I bought it for professional use, but it’s practically useless if I don’t receive notifications instantly.
They even told me that if I send it in for warranty service, there’s a 90% chance they won’t detect the issue, and the iPhone will come back with the same problem.
Hello everyone,
I have been working on a macOS app that utilizes push notifications for the past year. Up until recently, everything was functioning correctly. However, now I'm experiencing issues where push notifications are either not being delivered at all or are experiencing significant delays, sometimes up to 10 minutes. Setting the priority header to 10 hasn't made any difference. I am currently using development push notifications, but the issue persists when switching to the production environment.
I'm curious if anyone else has encountered similar problems. When checking the push console, it frequently reports that the device is offline, even though it's actually online ("discarded as device was offline"). Occasionally, notifications are delivered promptly, but this is becoming increasingly infrequent.
This issue has been consistently reported by our testers, particularly after they updated to macOS Sonoma. Any insights or assistance you can provide would be greatly appreciated.
I am experiencing an issue with push notifications on my iOS application. The issue is as follows:
On Android devices, push notifications are received immediately without any problems.
On iOS devices, the behavior is inconsistent:
When the app is in the foreground, notifications are received immediately.
When the app is in the background or in recent apps with a significant delay of 5–10 hours, push notifications are not received at all.
This behavior creates a major challenge for us, as timely notifications are critical for our app’s functionality. We have already verified the following points on our side:
Push notification certificates and APNs setup are correct.
Payload and server configurations are valid, as notifications are working fine on Android.
No restrictions from the server-side, since Android users receive notifications instantly.
It seems the issue is specifically related to iOS devices or APNs delivery. Could you please help us identify the cause and provide guidance on how to resolve this?
Hi, I'm experiencing an issue with my app. I use Firebase as my server, and it is great. Still, there is one issue: when I send push notifications from my app to users, the users will get the notification if the app is open, but not when it is closed. I have tried many solutions to fix it, even asking AI, but the issue is still there. I would be happy to give you access to Firebase and the Xcode workspace, as I have no clue how to fix it.
Hello guys,
We have updated our app icon, and it is correctly reflected in our app build and assets. However, the push notification icon is still displaying the old version for some users.
✅ We have verified that:
All icon assets in Assets.xcassets match the new icon.
The app icon has been updated in Info.plist.
The app has been resubmitted and approved on the App Store.
❌ However, some users still see the old notification icon, even after reinstalling the app. Restarting the device does not always resolve the issue.
Could you provide insights into how iOS caches notification icons and how we can force a refresh for all users?
Hi,
We recently updated our app icon, but the push notification icon has not been updated on some devices. It still shows the old icon on:
• iPhone 16 Pro — iOS 26
• iPhone 14 — iOS 26
• iPad Pro 11” (M4) — iOS 18.6.2
• iPhone 16 Plus — iOS 18.5
After restarting these devices, the push notification icon is refreshed and displays the new version correctly.
Could you advise how we can ensure the push notification icon updates properly on all affected devices without requiring users to restart?
Thank you.
Topic:
App & System Services
SubTopic:
Notifications
Tags:
APNS
Developer Tools
iOS
User Notifications
Hi,
We have a simple calendar reminder app that uses UNNotificationRequest to schedule local notifications for user events.
I’m wondering whether UNNotificationRequest has a system-imposed limit of 64 upcoming scheduled notifications, similar to the deprecated UILocalNotification.
We’re asking because one of our users is not receiving recently scheduled reminders.
Our current workflow is:
We schedule notifications on app launch and when the app is about to quit.
Before scheduling, we call removeAllPendingNotificationRequests().
We then fetch the 64 nearest upcoming events and schedule them using
UNUserNotificationCenter.current().add(...).
This approach works fine during our testing, but we’re unsure what might be causing the issue for some users.
Any insights would be appreciated. Thanks!
I have two apps - say A and B in my AppStore account, deployed in the AppStore.
App A has obtained the com.apple.developer.usernotifications.filtering entitlement and this is added to my AppStore account by Apple after approval. Note that this is added for the account, and not for the specific app.
Now, my app B also wants this functionality.
Followed all the steps as done for app A - adding the already approved entitlement to my app B's identifier, regenerating the profiles, adding the key in the entitlements file, calling the completion handler with empty content like - contentHandler(UNNotificationContent())
Still the notifications show, the filtering is not working.
Do I have to request the entitlement for App B separately?
Even if I do request again, I am not sure if there is going to be any difference in the steps already done. The difference can only be if Apple has a mapping with the app id internally in their system, for the filtering to work?
If I have white-labelled versions of apps A or B, do I have to request again then?
Or does Apple restrict only one app to have this entitlement from one AppStore account?
Please guide on the next steps here.
Currently, I have implemented local cache update with server data when app is killed using Push Notification and Notification Service Extension. So it works even the app is killed by the user, but I wanted to know whether this is app review safe work around or not as I am not finding any documentation for this.
After the update to iOS 17, tapping on message notification shown on CarPlay Dashboard is navigating to the CarPlay app instead of announcing the message notification.
Announce Notifications turned ON
Announce Messages turned ON
Announce New Messages option is selected
Other apps message notifications are announced as expected when tapping on the notification implying that the settings are set as required.
Enabled com.apple.developer.carplay-communication
Class CustomCarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate {
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene,
didConnect interfaceController: CPInterfaceController)
func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene,
didDisconnectInterfaceController interfaceController: CPInterfaceController)
func scene(_ scene: UIScene, willContinueUserActivityWithType userActivityType: String)
}
Question based on the https://developer.apple.com/forums/thread/649172
What is the mechanics of using this entitlement?
What should be done in the UNNotificationServiceExtension in order to prevent the display of a notification for the user?
Just pass an empty UNNotificationContent object to contentHandler or something else?
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:
Topic:
App & System Services
SubTopic:
General
Tags:
Notification Center
User Notifications
Screen Time
Dear App Store Engineering Team,
I am writing to request official confirmation regarding the behavior of App Store Server Notifications when migrating a live application from V1 to V2.
Context: Our application has been live since 2008 and currently utilizes App Store Server Notifications V1. We have a large database of existing legacy subscribers. We are preparing to switch our Production environment setting in App Store Connect from "Version 1" to "Version 2".
Our Questions: When we change the setting in App Store Connect to Version 2:
Global Format Switch: Does this setting apply immediately to ALL notifications, including those triggered by subscriptions that originated years ago (legacy users)?
Payload Consistency: Will renewals for existing legacy subscriptions continue to arrive in the JSON V1 format, or will they immediately start arriving in the V2 JWS (signedPayload) format?
Our expectation is that the switch is global and all future notifications (regardless of subscription age) will be sent as V2 JWS payloads, but we require official confirmation to ensure our backend handles the migration without service interruption.
Thank you for your assistance.
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
APNS
App Store Server Notifications
Notification Center
User Notifications
In macOS, how can I use UnmutableNotificationContent notifications to prevent the main window from activating when clicking the notification?
code:
import Cocoa
import UserNotifications // Mandatory import for notification functionality
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Automatically request permissions and send a test notification when the view loads
sendLocalNotification()
}
/// Core method to send a local notification
func sendLocalNotification() {
let notificationCenter = UNUserNotificationCenter.current()
// 1. Request notification permissions (Mandatory step; user approval required)
notificationCenter.requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] isGranted, error in
guard let self = self else { return }
// Handle permission request errors
if let error = error {
print("Permission request failed: \(error.localizedDescription)")
return
}
// Exit if user denies permission
if !isGranted {
print("User denied notification permissions; cannot send notifications")
return
}
// 2. Construct notification content using UNMutableNotificationContent
let notificationContent = UNMutableNotificationContent()
notificationContent.title = "Swift Notification Test" // Notification title
notificationContent.subtitle = "macOS Local Notification" // Optional subtitle
notificationContent.body = "This is a notification created with UNMutableNotificationContent" // Main content
notificationContent.sound = .default // Optional notification sound (set to nil for no sound)
notificationContent.badge = 1 // Optional app icon badge (set to nil for no badge)
// 3. Set trigger condition (here: "trigger after 3 seconds"; can also use time/calendar triggers)
let notificationTrigger = UNTimeIntervalNotificationTrigger(
timeInterval: 3, // Delay in seconds
repeats: false // Whether to repeat (false = one-time only)
)
// 4. Create a notification request (requires a unique ID for later cancellation if needed)
let notificationRequest = UNNotificationRequest(
identifier: "SwiftMacNotification_001", // Unique identifier
content: notificationContent,
trigger: notificationTrigger
)
// 5. Add the request to the notification center and wait for triggering
notificationCenter.add(notificationRequest) { error in
if let error = error {
print("Notification delivery failed: \(error.localizedDescription)")
} else {
print("Notification added to queue; will trigger in 3 seconds")
}
}
}
}
}
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)?"
Hi everyone,
I’m having trouble getting remote push notifications working on iOS for a production Flutter app, and it looks like it’s related to the provisioning profile / entitlements used during signing.
Context
Platform: Flutter
Push provider: OneSignal (backend is Supabase; Android push works fine)
CI: Codemagic
Target: iOS TestFlight / App Store builds
I’m on Windows, so I cannot open Xcode locally. All iOS builds happen via Codemagic.
Capabilities / entitlements
In the Apple Developer portal, my App ID for com.zachspizza.app has:
Push Notifications capability enabled
A separate Broadcast capability is listed but currently not checked.
In my repo,
ios/Runner/Runner.entitlements
contains:
xml
aps-environment
production
So the project is clearly requesting the push entitlement.
Codemagic signing setup
For my App Store workflow (ios_appstore_release in
codemagic.yaml
):
I use a combination of manual and automatic signing:
Environment variables can provide:
P12_BASE64 + P12_PASSWORD (distribution certificate)
MOBILEPROVISION_BASE64 (a .mobileprovision file)
A script in the workflow:
Creates a temporary keychain.
Imports the .p12 and installs the .mobileprovision into ~/Library/MobileDevice/Provisioning Profiles.
For the final export, I generate an exportOptions.plist that does:
If a profile name/UUID is provided via env (PROV_PROFILE_SPEC, PROV_PROFILE_UUID, PROVISIONING_PROFILE_SPECIFIER, PROVISIONING_PROFILE):
xml
signingStylemanual
provisioningProfiles
com.zachspizza.app[profile name or UUID]
Otherwise, it falls back to:
xml
signingStyleautomatic
After archiving and exporting, my script runs:
bash
codesign -d --entitlements :- "$ARCHIVE_PATH/Products/Applications/Runner.app"
...
and again on the signed Runner.app inside the exported IPA
codesign -d --entitlements :- "$SIGNED_APP"
In both cases, the effective entitlements output does not show aps-environment, even though:
The App ID has push enabled.
Runner.entitlements
includes aps-environment = production.
Observed behavior
iOS devices (TestFlight build) do not receive remote push notifications at all.
Android devices receive notifications as expected with the same backend payloads.
OneSignal configuration and backend are verified; this appears to be an APNs / signing / entitlements problem.
The Codemagic logs strongly suggest that the provisioning profile being used for signing does not carry aps-environment.
Questions
Under what conditions would a distribution provisioning profile (for an App ID with Push Notifications enabled) result in a signed app without aps-environment, even when:
The entitlements file in the project includes aps-environment, and
The App ID in the Developer portal has Push Notifications enabled?
Does using a CI flow like the above (custom .p12 + .mobileprovision installed via script, exportOptions with signingStyle=manual) increase the chances of:
Xcode ignoring the requested entitlements, or
Selecting a provisioning profile variant that does not include the push entitlement?
Is there a recommended way, from the Apple side, to verify that a given .mobileprovision (the one I’m base64-encoding and installing in CI) definitely includes the aps-environment entitlement for my bundle ID?
i.e., a canonical method to inspect the profile and confirm that APNs is included before using it in CI?
Are there any known edge cases where:
The project entitlements include aps-environment,
The App ID has Push Notifications enabled,
But the final signed app still has no aps-environment, due to profile mismatch or signing configuration?
Given that I’m on Windows and can’t open Xcode to manage signing directly, I’d really appreciate guidance on how to ensure that the correct push-enabled provisioning profile is being used in this CI/manual-signing setup, and how to debug why aps-environment is being stripped or not applied.
CodeMagic Signing/Export Step:
Signing / entitlements output from Codemagic
Dumping effective entitlements for Runner.app in archive...
/Users/builder/clone/build/ios/archive/Runner.xcarchive/Products/Applications/Runner.app: code object is not signed at all
Failed to dump entitlements
Exporting IPA with exportOptions.plist...
2025-11-20 22:25:00.111 xcodebuild[4627:42054] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path "/var/folders/w2/rrf5p87d1bbfyphxc7jdnyvh0000gn/T/Runner_2025-11-20_22-25-00.110.xcdistributionlogs".
2025-11-20 22:25:00.222 xcodebuild[4627:42054] [MT] IDEDistribution: Command line name "app-store" is deprecated. Use "app-store-connect" instead.
▸ Export Succeeded
Dumping entitlements from signed Runner.app inside exported IPA...
Executable=/private/var/folders/w2/rrf5p87d1bbfyphxc7jdnyvh0000gn/T/tmp.LHkTK7Zar0/Payload/Runner.app/Runner
warning: Specifying ':' in the path is deprecated and will not work in a future release
application-identifier.com.zachspizza.app
beta-reports-active
com.apple.developer.team-identifier
get-task-allow
As you can see, the signed app’s entitlements do not contain aps-environment at all, even though
Runner.entitlements
in the project has aps-environmentproduction and the App ID has Push Notifications enabled.
Thanks in advance for any help and pointers.