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

CloudKit Subscriptions Not Triggering Push Notifications - No NotificationSend Events
ISSUE: CloudKit subscriptions are not triggering push notifications despite correct configuration. CloudKit logs show RecordSave events but NO NotificationSend events, indicating CloudKit is not attempting to send to APNS. CONTAINER: iCloud.Wunderkind.StrikeForceApp ENVIRONMENT: Tested in both Development and Production iOS 18.6.x Xcode 15.x (update with your version) Device: iPhone (not simulator) EVIDENCE: Subscriptions exist and are visible in CloudKit Dashboard Records are being created successfully (verified in logs) Device token is registered: 60eb962ff189dc5c2c0ef3e9d6643d72b4442a831bae224d2a553588b2e29139 Local notifications work correctly CloudKit logs show RecordSave but NO NotificationSend events STEPS TAKEN: Regenerated push certificates Disabled and re-enabled Push Notifications capability Deleted and recreated subscriptions Tested in both Development and Production environments Verified aps-environment entitlement matches environment Confirmed notification permissions granted SPECIFIC TEST: Creating a Challenge record with recipientRef matching my user triggers: ✅ RecordSave event in CloudKit logs ❌ No NotificationSend event ❌ No push notification received EXPECTED: CloudKit should send NotificationSend events and deliver push notifications when subscriptions match. ACTUAL: No NotificationSend events appear in CloudKit logs, no notifications delivered.
4
0
157
Sep ’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
20
5h
Delivery of expired voip notifications
Hello, We are facing issue that sometimes a voip notification gets delivered after it is expired. The issue can be simply demonstrated we set the device to flight mode, and after 20s we disable flight mode. We still receive the voip notification. We are setting the expiration header as following apns-expiry=0, so from my understanding it should not be delivered if the device was not able to receive the notification in the fist attempt. I have read following thread https://developer.apple.com/forums/thread/778512, from which I understand this is a long standing issue. Hence my question is, is there any way how we can notify the call kit that the call is actually no longer valid, and do not display the call to the user at all? Currently we are forced to always display CallKit call when the notification comes, and some of our users are confused that they see a missed call which they did not have any chance to pick up. Please let me know if you need any more information. Best Regards, Adam Chlupacek
2
0
152
2w
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
What is the point of thread-id/grouping in push notifications if grouping depends upon user preferences?
There's plenty of articles out there about programatically grouping push notifications. However I have tried setting the thread-id in the push payload when sending a push, or setting the threadIdentifier for a received push in a notification service extension to be the same for several pushes. But if within the iPhone Settings / Notifications the user selects to display pushes as List and turns off Notification Grouping, then each notification resulting from the push appears on its own separately. Is there something other than thread-id/threadidentifier that is used to programmatically group them? If not then whats the point of these as grouping and display is actually under the control of user.
1
0
99
Mar ’25
APNS Connection Timed out
This error has been continuously occurring for about 9 hours. We have not replaced the certificate, modified the server code, or changed the firewall policy. Some requests succeed, but many are timing out, with several timeouts occurring every minute. We are unable to find the cause. Please help. APNS Exception io netty channel ConnecttimeException: Connection timed out
APNSOutboundHandler api.push.apple.com/17.188.169.28:443 api.push.apple.com/(other ip):443 api.push.apple.com/(other ip):443 api.push.apple.com/(other ip):443 api.push.apple.com/(other ip):443 ...
2
0
714
Apr ’25
VoIP / PushKit notification failure on versions of iOS 18
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
1
0
196
Nov ’25
api.push.apple.com always return 400 bad devicetoken
everytime i get my devicetoken from mdm certification,send to apns (api.push.apple.com 443),always return 400,please help me confirm if the devicetoken is expired or somethine wrong else here is the request and response device_token:79c3aec2b2c2b672c3b756c3910977c3a936c3aae280985ac380e280a6091cc2bfc3a132192b14c392c2be7a2ee280a229c3aa push_magic:AAFDAB81-0E63-4B72-A60A-1F8085325870 status_code: 400 headers: {'apns-id': '14BDD477-7D76-A2FB-582C-140BBD95A420'} resp: {'reason': 'BadDeviceToken'}
1
0
136
Jun ’25
Voice control puts three icons in the menu bar
Having voice control enabled now puts three menu bar items. The blue icon it has always had, supplemented with an orange microphone and an orange dot next to control center. I know this orange icon is there to notify me that a third-party application is accessing the microphone, but this is a first-party system service that is always running. If another app starts accessing the microphone I won't know, since the orange icon is always there anyway. It's like a California prop 65 warning. Maybe it was a good idea in principal but with it being ubiquitous everyone just ignores it. Siri is also always accessing the microphone, but doesn't trigger this orange eyesore because it's a system service. Both Siri and voice control are always on in the background, are first-party system services that must be specifically enabled, and both have their own menu bar icon that can be removed if not wanted. This orange icon with voice control potentially introduces MORE risk by training me to ignore the orange icon. Please return to the pre-26.3 behaviour of using this orange icon for third-party apps and not first-party system services. FB22036182 -- "Voice control causes extra menu bar icon"
0
0
28
1w
iOS 26 stops receiving push notifications
I a using the current RC version of iOS on both my iPhone and iPad. I and developing an iCloud based app and it works correctly on iOS 18. When I upgraded to iOS 26 the iCloud functions work correctly but the push notifications do not work. The issue appears to be creating subscriptions. The following code should create a subscription and does not get an error, but it did to create a subscription under iOS 26. func subscribeToNotifications(recordType: String, subscriptionID: String, notification: CKSubscription.NotificationInfo) { let subscriptionIDForType = "\(subscriptionID)-\(recordType)" let predicate = NSPredicate(value: true) let subscription = CKQuerySubscription(recordType: recordType, predicate: predicate, subscriptionID: subscriptionIDForType, options: [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion]) let notification = CKSubscription.NotificationInfo() subscription.notificationInfo = notification CKContainer.default().publicCloudDatabase.save(subscription) { (returnedSubscription, error) in if let error = error { print("Error saving subscription: \(error)") } else { print("Successfully saved subscription: recordType: " + recordType + " subscriptionID: " + subscriptionIDForType) } } } Print results: Successfully saved subscription: recordType: folder subscriptionID: folderName-folder
0
0
246
Oct ’25
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
121
2w
Can I enable push notifications in an iOS app built from a web app URL using PWA Builder?
Hi all, I have a React web app that we use as a Progressive Web App (PWA). We currently: Use PWA Builder to package it for Android and iOS Host the app on a secure HTTPS URL Use Firebase Cloud Messaging (FCM) for push notifications (working on Android) However, on iOS, we are unable to get push notifications to work. I understand that PWAs on iOS have limited push support (Safari only, and not through WebView). So I explored using Capacitor, but: Capacitor can load a server.url pointing to our hosted app (great for reuse), but push notifications don’t work If we build the web app locally (npm run build) and embed it in the native iOS shell via Capacitor, push works We would prefer not to fully merge our authentication and main app UIs if avoidable Questions: Is there any approved way to enable push notifications in an iOS .ipa built from a hosted web app (URL) using PWA Builder? If not, is embedding the web assets locally the only Apple-approved way to get push support? Are there any best practices or native plugin recommendations (e.g., APNs or FCM) for handling push notifications in iOS app? Thanks in advance for any guidance. 🙏 Let me know if more technical details would help.
1
0
128
Jun ’25
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
91
5d
APNs returning successful response for a token from an app that was uninstalled more than a month ago
We are observing an weird behaviour where a user uninstalled the app back in February (more than a month ago) but APNs is still accepting push notifications are returning success responses. We know that using APNs response codes for uninstall tracking is not reliable and that Apple will use fuzzy schedule to invalidate tokens. However, showing successful responses for month+ old tokens seems a bit misleading and results in wasted token processing for both us and Apple. Could you please confirm that invalidation (or fuzzy schedule) could take more than months to invalidate tokens on the APNs side? Is that expected or is this a bug somewhere?
3
0
278
Nov ’25