Notifications

RSS for tag

Learn about the technical aspects of notification delivery on device, including notification types, priorities, and notification center management.

Notifications Documentation

Posts under Notifications subtopic

Post

Replies

Boosts

Views

Activity

Weather Notifications
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 ?
1
0
99
Mar ’25
After uninstalling the app, ManagedSettingsStore.shield is still active — seems to be an Apple system behavior
I’m using the shielding API, my code: let store = ManagedSettingsStore() let whitelist = SharedDefaults.whitelistApplications store.shield.applicationCategories = .all(except: whitelist) And to clear the shield, my code is: store.shield.applications = nil store.shield.applicationCategories = nil The issue: Some users report that after uninstalling my app, the shield is still active, and the UI changes to the default iOS system interface. Even after restarting the device, the apps on the phone remains locked, so the user has no way to remove the shield. Recently I’ve received several complaints on social media and App Store comments, accusing my app of being malicious software. This is not a 100% reproducible bug, but it happens frequently enough. I was also able to reproduce it myself by uninstalling the app during an active lock session. Could Apple engineers please look into this issue and advise how to ensure that once the user uninstalls the app, the device is no longer locked?
1
0
211
Oct ’25
Push notifications don't deliver when device is idle on iOS 18.7 and 26.0
There's a list of bug reports: FB19778882 FB19813796 FB19852724 FB19767262 FB20378888 FB20379383 FB20394663 Me and many other users have issue with push notifications. To reproduce this you should do this steps: Lock iPhone and make it idle for 10+ minutes; Send any message from other device via third-party app that uses push notifications (WhatsApp, Telegram and etc.); After few attempts you can see, that messages don't deliver. They delivers immediately when I unlock iPhone or go to the app. This bug reproduces on iOS 18.7 and 27. As I think iPhone goes to deep sleep after 10+ minutes after it locked and don't get push notifications. I've tried everything: many of settings, DFU without backup, but nothing helps to resolve this issue. Pay attention, please, cause this bug is very annoying and present on iOS 18.7 (that is the last for many devices) and latest iOS 26. Thanks!
1
0
476
Sep ’25
Inconsistent grouping of notifications
I'm sending push notifications to a notification extension, and within the extension setting the threadIdentifier to be the same. But I'm observing inconsistent grouping behaviour, and behaviour that changes over time. The general iPhone settings are to display notifications as a Stack, and the app settings are to show on lock screen, notification center and banners and the notification grouping is set to by app (changing it to automatic doesn't affect the behaviour below). Pushes are displayed on the lock screen grouped together, then if the device is roused and the screen swiped down to reveal the notification center then they are still grouped. So far so good. If the iphone is active then the notifications appear at the top of the screen, one by one, but in this case if there is a swipe down to reveal the notification center then the notifications are not grouped when displayed, but shown individually. But then if one waits a few minutes and then displays the notification center for a 2nd time, sometimes now they will be grouped, but sometimes not. Why are they not (always) being displayed as grouped in the notification center?
1
0
92
Mar ’25
Enabling voip in react native
Currently working on a dating app which needs voip for audio and video calls for ios. the voip notifications only comes to the app in active and inactive mode but doesnt wake the device in background or terminated mode. After debugging i noticed that com.apple.developer.voip entitlement wasnt included which i later added, trying to create a build i get the eas error that the entitlement wasnt added to the identifier capabilities. My issue now is that i can't seem to find the voip capability to check in the identifiers capabilities list for the bundle id.d
1
0
118
Jun ’25
How does AccessoryNotifications forward notifications to BLE accessories? What Service/Characteristic should the accessory implement?
Environment: iOS 26.4 beta Xcode 26.4 beta Framework: AccessoryNotifications, AccessorySetupKit, AccessoryTransportExtension Description: I'm implementing notification forwarding to a custom BLE accessory using the new AccessoryNotifications framework in iOS 26.4. I've set up an AccessoryDataProvider extension following the documentation, but I'm unclear about how the data is actually transmitted to the BLE accessory. Current Implementation: Main App - Uses AccessorySetupKit to discover and pair accessories: let descriptor = ASDiscoveryDescriptor() descriptor.bluetoothServiceUUID = CBUUID(string: "FEE0") let displayItem = ASPickerDisplayItem( name: "Notification Accessory", productImage: UIImage(systemName: "applewatch")!, descriptor: descriptor ) accessorySession.showPicker(for: [displayItem]) { error in // Handle error } AccessoryDataProvider Extension - Implements NotificationsForwarding.AccessoryNotificationsHandler: @main struct AccessoryDataProvider: AccessoryTransportExtension.AccessoryDataProvider { @AppExtensionPoint.Bind static var boundExtensionPoint: AppExtensionPoint { Identifier("com.apple.accessory-data-provider") Implementing { AccessoryNotifications.NotificationsForwarding { NotificationHandler() } } } } // NotificationHandler sends messages via: let message = AccessoryMessage { AccessoryMessage.Payload(transport: .bluetooth, data: data) } try await session?.sendMessage(message) Info.plist Configuration: EXExtensionPointIdentifier com.apple.accessory-data-provider NSAccessorySetupBluetoothServices FEE0 Questions: What BLE Service and Characteristic should the accessory advertise? - The documentation mentions specifying transport: .bluetooth, but doesn't explain what Service/Characteristic the accessory needs to implement to receive the notification data. 2. How does AccessoryMessage with transport: .bluetooth actually transmit data? - Is there a specific Apple-defined BLE protocol? - Does the accessory need to run specific firmware or support a particular protocol stack? 3. Is there any documentation about the accessory-side implementation? - The iOS-side documentation is clear, but I couldn't find information about what the BLE peripheral needs to implement. 4. Is MFi certification required for the accessory? - The documentation doesn't explicitly mention MFi, but it's unclear if custom third-party accessories can use this framework. Any guidance on how the BLE communication works under the hood would be greatly appreciated.
1
0
35
2d
Backgrounded app - Local Notifications
I'm working on an app that syncs with Apple Health events. Every time an event occurs, the app should send a notification. The problem occurs when the app is backgrounded or force-closed; it can no longer send local notifications, and because these events can occur at any time, scheduled notifications can't be used. I'm just wondering if anyone's found a creative way around this. I know we can't override system behaviour, I'm just thinking of other alternative solutions for the matter.
1
0
93
5d
Notifications scheduled but never delivered at scheduled time
Device: iPhone (real device) iOS: 17.x Permission: Granted Notifications are scheduled using UNCalendarNotificationTrigger. The function runs and prints "SCHEDULING STARTED". However, notifications never appear at 8:00 AM, even the next day. Here is my DailyNotifications file code: import Foundation import UserNotifications enum DailyNotifications { // CHANGE THESE TWO FOR TESTING / PRODUCTION // For testing set to a few minutes ahead static let hour: Int = 8 static let minute: Int = 0 // For production use: // static let hour: Int = 9 // static let minute: Int = 0 static let daysToSchedule: Int = 30 private static let idPrefix = "daily-thought-" private static let categoryId = "DAILY_THOUGHT" // MARK: - Permission static func requestPermission(completion: @escaping (Bool) -> Void) { let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert, .sound]) { granted, _ in DispatchQueue.main.async { completion(granted) } } } // MARK: - Schedule static func scheduleNext30Days(isPro: Bool) { print("SCHEDULING STARTED") let center = UNUserNotificationCenter.current() center.getNotificationSettings { settings in guard settings.authorizationStatus == .authorized else { requestPermission { granted in if granted { scheduleNext30Days(isPro: isPro) } } return } // Remove old scheduled notifications center.getPendingNotificationRequests { pending in let idsToRemove = pending .map { $0.identifier } .filter { $0.hasPrefix(idPrefix) } center.removePendingNotificationRequests(withIdentifiers: idsToRemove) let calendar = Calendar.current let now = Date() for offset in 0..<daysToSchedule { guard let date = calendar.date(byAdding: .day, value: offset, to: now) else { continue } var comps = calendar.dateComponents([.year, .month, .day], from: date) comps.hour = hour comps.minute = minute guard let scheduleDate = calendar.date(from: comps) else { continue } if scheduleDate <= now { continue } let content = UNMutableNotificationContent() content.title = "Just One Thought" content.sound = .default content.categoryIdentifier = categoryId if isPro { content.body = thoughtForDate(scheduleDate) } else { content.body = "Your new thought is ready. Go Pro to reveal it." } let triggerComps = calendar.dateComponents( [.year, .month, .day, .hour, .minute], from: scheduleDate ) let trigger = UNCalendarNotificationTrigger( dateMatching: triggerComps, repeats: false ) let identifier = idPrefix + isoDay(scheduleDate) let request = UNNotificationRequest( identifier: identifier, content: content, trigger: trigger ) center.add(request) } } } } // MARK: - Cancel static func cancelAllScheduledDailyThoughts() { let center = UNUserNotificationCenter.current() center.getPendingNotificationRequests { pending in let idsToRemove = pending .map { $0.identifier } .filter { $0.hasPrefix(idPrefix) } center.removePendingNotificationRequests(withIdentifiers: idsToRemove) } } // MARK: - Helpers private static func isoDay(_ date: Date) -> String { let formatter = DateFormatter() formatter.locale = Locale(identifier: "en_US_POSIX") formatter.dateFormat = "yyyy-MM-dd" return formatter.string(from: date) } private static func thoughtForDate(_ date: Date) -> String { guard let url = Bundle.main.url(forResource: "thoughts", withExtension: "json"), let data = try? Data(contentsOf: url), let quotes = try? JSONDecoder().decode([String].self, from: data), !quotes.isEmpty else { return "Stay steady. Your growth is happening." } let calendar = Calendar.current let comps = calendar.dateComponents([.year, .month, .day], from: date) let seed = (comps.year ?? 0) * 10000 + (comps.month ?? 0) * 100 + (comps.day ?? 0) let index = abs(seed) % quotes.count return quotes[index] } } Then here is my Justonethoughtapp code: import SwiftUI import UserNotifications @main struct JustOneThoughtApp: App { @StateObject private var thoughtStore = ThoughtStore() // MUST match App Store Connect EXACTLY @StateObject private var subManager = SubscriptionManager(productIDs: ["Justonethought.monthly"]) var body: some Scene { WindowGroup { ContentView() .environmentObject(thoughtStore) .environmentObject(subManager) .onAppear { // Ask for notification permission NotificationManager.shared.requestPermission() // Schedule notifications using PRO status DailyNotifications.scheduleNext30Days( isPro: subManager.isPro ) } } } } final class NotificationManager { static let shared = NotificationManager() private init() {} func requestPermission() { UNUserNotificationCenter.current().requestAuthorization( options: [.alert, .sound, .badge] ) { _, _ in } } }
1
0
106
3w
Getting null data from App Store Server Notification
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
1
0
115
Jun ’25
Notification Sound Not Routing to Bluetooth / External Speakers Consistently
Hello Apple Developer Support, We are observing inconsistent behavior with push notification sounds routing to Bluetooth / external speakers. Our app sends push notifications with a custom sound file using the sound parameter in the APNs payload. When an iPhone is connected to a Bluetooth speaker or headphones: On some devices, the notification sound plays through the connected Bluetooth/external speaker. On other devices, the notification sound plays only through the iPhone’s built-in speaker. We also tested with native apps like iMessage and noticed similar behavior — in some cases, notification sounds still play through the phone speaker even when Bluetooth is connected. Media playback (e.g., YouTube or Music) routes correctly to Bluetooth, so the connection itself is functioning properly. We would like clarification on the following: Is this routing behavior expected for push notification sounds? Are notification sounds intentionally restricted from routing to Bluetooth in certain conditions (e.g., device locked, system policy, audio session state)? Is there any supported way to ensure notification sounds consistently route through connected Bluetooth/external speakers? The inconsistent behavior across devices makes it difficult to determine whether this is by design or a configuration issue. Thank you for your guidance.
1
0
124
2w
Only the last notification is being delivered
Good morning all! We are facing a specific case dealing with push notifications to iOS devices. In my scenario: I turn off my device's internet Send multiple push notifications via server using Firebase. I turned ON my device's internet again. I only see the last push notification I sent. This is an expected scenario? There is any documentation that supports this statement? Thank you all!
1
0
378
Mar ’25
Provisioning Profile Missing com.apple.developer.push-notifications Entitlement Despite Correct Setup
Hi all, I’m running into an issue with provisioning profiles not including the com.apple.developer.push-notifications entitlement — even though everything seems to be configured correctly. Here's what I’ve done: Checked the App ID has Push Notifications enabled. I’ve clicked “Configure” and created a Production APNs certificate under the App ID. I’ve regenerated the provisioning profiles (Ad Hoc and App Store). I can see within the profiles within App Store Connect that the push notifications capability is listed I’ve downloaded and decoded the profiles using: security cms -D -i profile.mobileprovision &gt; decoded.plist But com.apple.developer.push-notifications is still missing under the &lt;key&gt;Entitlements&lt;/key&gt; block. This is causing issues because: When I submit the build to eas I receive this error from XCode: - Provisioning profile "*** Adhoc" doesn't include the com.apple.developer.push-notifications entitlement. Profile qualification is using entitlement definitions that may be out of date. Connect to network to update. (in target '***' from project '***') Refer to "Xcode Logs" below for additional, more detailed logs. To isolate the issue further I: Created a completely new App ID, enabling Push Notifications from the start. Created new APNs certificate. Generated new provisioning profiles with a valid distribution certificate. Still no push entitlement embedded in the profile. Question: Has anyone else encountered this issue where Push Notifications are enabled and configured, but the entitlement still fails to embed in the profile? Thanks in advance.
1
1
163
Jun ’25
Persistent iOS Signing & UIBackgroundModes Entitlement Issue
Problem Statement We are experiencing a critical and persistent issue preventing the successful signing and building of our iOS application. The core problem is that provisioning profiles, whether automatically generated by Xcode or manually created in the Apple Developer Portal, consistently fail to include the UIBackgroundModes entitlement, leading to a build failure. Specific Question Why are provisioning profiles generated via the Apple Developer Portal and/or Xcode's automatic signing process consistently omitting the UIBackgroundModes entitlement for our App ID, even when this capability is explicitly configured in Xcode? We seek guidance or backend intervention to ensure our provisioning profiles include the necessary entitlement. Expected Outcome We expect to be able to successfully build and sign our iOS application, with provisioning profiles that correctly include the UIBackgroundModes entitlement, allowing for proper implementation of remote notifications. Observed Symptoms Primary Build Error: Consistent build failure with the exact error message: "Automatic signing failed: Provisioning profile 'iOS Team Provisioning Profile: com.scott.ultimatefix' doesn't include the UIBackgroundModes entitlement." Missing Entitlement in Profile (Confirmed by Inspection): Direct inspection of downloaded .mobileprovision files (including those manually generated in the Developer Portal for com.scott.ultimatefix) consistently shows the absence of the UIBackgroundModes entry within the section of the Entitlements dictionary. The aps-environment key for Push Notifications is present, indicating Push Notifications are enabled, but Background Modes are not. Certificates Correctly Recognized in Xcode: Our "Apple Development: Stephen Criscell Scott" and "Apple Distribution: Stephen Criscell Scott" certificates are correctly displayed and recognized in both Keychain Access and Xcode's Preferences &gt; Accounts &gt; Manage Certificates window (without "Not in Keychain" status). Furthermore, the Signing &amp; Capabilities tab for the target in Xcode now correctly shows Signing Certificate: Apple Development: Stephen Criscell Scott. Persistent Issue Across Resets: The problem persists despite extensive local cache invalidation, Xcode reinstallation, and even testing in a fresh macOS user account (which confirmed the issue was not user-specific).
1
0
136
Jun ’25
Regarding Delay/timed out issue of IOS push notifications
Dear Team, Hope You are dong good! Problem Description:- We are facing a huge delay in receiving IOS Push notifications on concerned devices. Found System.Timeout.Exception Error in IOS Logs(Screenshot & Recent Logs attached) Found a network delay between service installed servers & APNS(Apple Push Notification Service) Destination URL & Ports using in Push Notification service:- api.push.apple.com api.development.push.apple.com Destination Port-443 Also Found the error(TCP reset From server) between source(service installed server) & Destination (Apple Push Notification Service)-Screenshot attached Please have a look around the above  points & requesting advice regarding the below:- How to resolve this delay in reaching IOS push Notifications in concerned devices? Should we call more URL’s from services? If yes please provide URL’s/Ports to be opened from services ? Awaiting your Replies, Thanks,
1
1
1.5k
Jun ’25
NSUserNotificationsUsageDescription only works for certain locales
I'm trying to provide custom localized descriptions for the iOS notification permission popup in my app, which supports multiple locales. To achieve this, I'm using InfoPlist.strings files per locale with the following keys: NSUserNotificationsUsageDescription NSUserTrackingUsageDescription The issue I'm facing is that NSUserTrackingUsageDescription is working correctly across all tested locales, but NSUserNotificationsUsageDescription only works for some locales. Locales tested: Working: ja, tr, fr-CA Not working: fr-BE, nl-BE In each case, the correct localized NSUserTrackingUsageDescription appears, but the NSUserNotificationsUsageDescription falls back to the default or does not appear as expected in fr-BE and nl-BE. I'm using Xcode 16 and testing on both iOS 18 simulator and physical devices, and the issue is consistent across both. Any insights on whether this is a known issue in iOS or if there are additional steps needed for NSUserNotificationsUsageDescription to localize properly would be greatly appreciated.
1
0
217
Jun ’25
UNNotificationRequest set timestamp to a relative time
The system calendar when showing a calendar event shows a relative timestamp on the notification versus all other apps which have a timestamp of when the notification was sent. Is there a way to set the timestamp to be relative? I am currently working on a calendar app and we should be able to use the same system that apple uses for its own calendar. Post about this on stack overflow from someone else a few years ago
1
0
325
Mar ’25
Questions about VoIP Push compliance rules and CallKit handling
Hello everyone, I’m an iOS developer working on a real-time communication app that supports VoIP calls using CallKit. The app has been in production for more than 5 years. Over the years, some users have occasionally reported that they do not receive incoming call pushes. We have tried multiple optimizations on both the client and server side, but the improvement has been limited. From Apple documentation and discussions online, I understand that iOS may restrict VoIP pushes if the system detects violations of VoIP push usage rules (for example, not presenting a CallKit call after receiving a VoIP push). However, the exact rules and thresholds for these violations are not clearly documented, so I’d like to ask a few questions to better understand the expected behavior. Below is a simplified description of our current call flow. Call Flow Caller When the user initiates a call: We do not use CallKit The call is handled entirely using a custom in-app call UI Callee When the user receives a call: Device locked or app in background A VoIP push wakes the app The app presents the CallKit incoming call UI App in foreground The server still sends a VoIP push The app first reports the call to CallKit After a very short delay, the app programmatically ends the CallKit call Then a custom in-app call UI is presented via the app's long connection The reason we always send a VoIP push (even when the app is in the foreground) is that we want to maximize call delivery reliability.
1
0
22
12h
Time-Sensitive Trip Offer UI (Lock Screen + Persistent Until Action) – iOS 14 Best Practice?
Hello, I am developing a driver-based application targeting iOS 14+, where users receive time-sensitive trip offers (approximately 10–15 seconds to respond). We would like to implement behavior similar to approval-based apps (e.g., MyGate-style interaction), with the following requirements: When the device is locked: A highly visible notification that allows quick Accept / Decline action. When the device is unlocked (foreground or background): A notification that remains prominently visible (sticky-style) at the top of the screen until the user takes action (Accept / Decline) or the offer expires. Our goal is to ensure the offer remains noticeable and actionable within the short response window. I would appreciate clarification on the following: On iOS 14, is there any supported mechanism to present a true full-screen blocking interface while the device is locked (without using CallKit or Critical Alerts entitlement)? Is there a supported way to make a notification persistent or non-dismissible until the user takes action or the offer expires? Are there any App Review concerns with presenting a blocking modal immediately after the user interacts with a notification? We want to ensure full compliance with Apple’s platform guidelines and avoid unsupported or discouraged patterns. Thank you for your guidance.
1
0
123
2w