Hello,
I am working on a project that involves using external device to connect over BLE with users iPhone. I would like to be able to notify users on our device about eg. incoming calls, messages etc. I have been succesfull in using ANCS to achieve that but I am a little worried around consistency of this solution, especially taking into account following line from documentation:
Due to the nature of iOS, the ANCS is not guaranteed to always be present. As a result, the NC should look for and subscribe to the Service Changed characteristic of the GATT service in order to monitor for the potential publishing and unpublishing of the ANCS at any time.
I have not been able (yet?) to find or identify circumstances when ANCS would not be avilable or would be "removed in runtime", hence would it be possible to request some guidance and clarification on the conditions when ANCS can be unavailable or removed?
Thank you!
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
The APP was not awakened by system after start a liveactivity and the liveactivity has showed on lock screen.so the updatetoken wont send to our inner server and the liveactivity can not update,often like this,but sometimes it can work.
it makes me confuse,and i don't know how should i can do,because the liveactivity like a black box,i can not analyse the data link.for example ,inner server send a start liveactivity,but it can not accept a updatetoken unless the user lanuch APP.
i hope the liveactivity can start and update on background. And i have developed it as described in the document.
Hope to get your help,thank you very much.
I am developing a system to send VoIP notifications to terminals with APNs.
I understand that the maximum JSON Payload for VoIP is 5kb.
If I want to send VoIP notifications to 3000 terminals, I am considering sending 3000 requests in parallel from the system to the APNs, will the APNs guarantee that the notifications will be sent to each terminal without a significant time lag when receiving 3000 requests simultaneously?
Hello all 👋
We're developing an app for families with neurodivergent members (primarily autistic children) and have run into a critical reliability issue with silent push notifications that breaks core functionality.
Our current implementation:
When a caretaker updates the person's daily routine/schedule in our system, we send a silent push notification to the user's device. The app wakes, connects to our server, downloads the updated schedule, and creates/updates local notifications for upcoming activities.
The problem:
Because the app is rarely/never directly interacted with by the end user (the child doesn't open the app - caregivers configure it on their behalf), silent push notifications get progressively throttled and eventually stop being delivered entirely. This means schedule changes made by caregivers never reach the device, breaking the app's core value proposition. Uninstalling and reinstalling doesn't reset the throttling state
Questions:
Is there any way to reset or mitigate throttling for devices that legitimately need background updates but have low or no user interaction? This is an accessibility use case where the end user (child) doesn't interact with the app, but the app must reliably receive updates. Would switching to regular (visible) push notifications avoid this throttling even if the app is not interacted with?
We already have Critical Alerts entitlement, but for regular updates we're worried that the "CRITICAL ALERT" banner will be too upsetting for the child. Is there any exception process for accessibility apps to change the way Critical Alerts are presented?
For neurodivergent individuals, predictable routines are essential. When schedule updates don't reach their device, it can cause significant distress. This is a genuine accessibility need, not a "nice-to-have" feature.
Any guidance from Apple engineers or developers who've solved similar challenges would be greatly appreciated.
Thank you!
Topic:
App & System Services
SubTopic:
Notifications
Tags:
APNS
iOS
Accessibility
User Notifications
I have tried setting a 'apns-expiration' to current time + 30 seconds and also a value '0'. But still my voip app receives the voip push notification after 2-3 minutes. Till this time, caller has already hung up the call. But the receivers phone still rings on receiving the push notification as we have to report it to CallKit.
Am I missing something or there is no way and even 'apns-expiration' does not guarantee timely delivery of Voip push notifications or discard if it is expired.
I have set 'apns-priority' to 10 already as recommended.
I want to update my lockscreen LiveActivity via Broadcast Push Notification, but updating always fails - but ending always works.
Payload with "update" is completely ignored:
{"aps":{"timestamp":1685952000,"event":"update","content-state":{"currentSlotName":"Debug1","nextSlotName":"Debug2"}}}
Same payload with "end" works, the view is refreshed with the new content-state:
{"aps":{"timestamp":1685952000,"event":"end","content-state":{"currentSlotName":"Debug1","nextSlotName":"Debug2"}}}
Via the MacOS Console I am able to see that both events happen to end up on the device. I am sending these Broadcast Push Notifications via Apple's Push Notifications Console.
we already got access to com.apple.developer.usernotifications.filtering , we have set up this special permission in our app extension entitlement and provision profile. but we are still unable to filter notification by providing empty UNNotificationContent
Hi Apple engineering team,
I contacted Developer Support regarding the status of our entitlements request, and they recommended that I post here for visibility.
It’s been just over two weeks since we submitted the request, and we haven’t received any updates yet. We understand these requests can take time, but it’s unclear what the typical timeline looks like or if there’s any way to check on the progress.
Is there a way to get an update or better understand where we are in the process? We’re trying to plan our release and would really appreciate any guidance on what to expect.
Thanks in advance for your help.
I’m using Appnotic from my server to send notifications for an emergency service, where it is critical that notifications are delivered immediately.
My payload looks like this:
"aps": {
"alert": "Test alert",
"sound": {
"critical": 1,
"name": "sound.wav",
"volume": 0.5
},
"content-available": 1,
"category": "alert"
},
"topic": "com.fireservicerota.FSR-Primary-Alerting",
"custom_payload": {
"id": "11",
"type": "alert",
"incident_id": 23434,
"incident_response_id": 2652343,
"expiration_time": "2024-06-06T16:59:05+01:00"
}
}
I already have the critical alert entitlement and background processing enabled. Everything seems fine when debugging, but I’m experiencing issues:
• Some notifications never arrive
• Around 60% of notifications arrive with noticeable delay
Since this is an emergency app, delivery speed is crucial. What could be causing this inconsistency?
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?
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
I’m building a standalone Apple Watch smart alarm app that should trigger alarms on the watch in response to Bluetooth or internet events.
This means the app operates in the background and attempts to trigger an alarm when such an event occurs. As far as I know, the appropriate API for this is WKExtendedRuntimeSession.notifyUserWithHaptic:repeatHandler.
However, I can’t seem to start an extended runtime session while the app is in the background. I’m getting the following error:
-[WKExtendedRuntimeSession _invalidationReasonAndDelegateCallbackErrorForError:outCallbackError:]:729:
WKExtendedRuntimeSession hit internal error.
Error Domain=com.apple.CarouselServices.SessionErrorDomain
Code=17 "startSession cannot be called on a scheduled session"
UserInfo={NSLocalizedDescription=startSession cannot be called on a scheduled session}
Calling notifyUserWithHaptic directly also similarly fails.
It seems notifyUserWithHaptic is intended to be scheduled during a foreground session to trigger at a later time, rather than being called ad hoc from a background context.
Is there any way to create a proper alarm view on the Apple Watch from a background execution context?
Hi team,
We've observed that for all background notifications (where content-available set to true, https://developer.apple.com/documentation/usernotifications/pushing-background-updates-to-your-app#Create-a-background-notification),
we never received any response with error string "Unregistered". This
differs from non-background pushes, where expired tokens are regularly
cleared.
Is this the expected behavior (i.e.,
background notifications will not return an "Unregistered" error), or could this indicate an issue on our side?
Thanks in advance for any clarification.
I have multiple app ids that are registered with Push Notification, however they do not hsow up in the Push Notification Console for testing.
以下の問題が発生しています:
特定のデバイスでプッシュ通知が受信されません。
考えられる原因は何でしょうか?
プッシュ通知は自社のサーバーから送信しており、APNs(Apple Push Notification service)からは正常な応答が返ってきています。
ユーザーはデバイスで通知が有効になっていることを確認しており、ネットワークの問題も報告されていません。
この問題は複数のユーザーに発生しています。
I dont want my server to be spammed. Currently I am only in payment-related notifs (eg: user successfully renewed his subscription, user didnt successfully renew his subscriptions, ..)
Where can I set that?
Topic:
App & System Services
SubTopic:
Notifications
My App supports two services that is Push Notification for Alerts and a Voip Call feature whose notification also comes in the same way as of PushNotification but video rendering is done with GoogleWebRTC.
The App was working perfectly fine but from past few months these services are not working.[ Nothing is changed in App and on the server side to push the notifications]
Issues:
VoIP (Video call) not working: I have apns certificate which is valid in today's date and stays with the backend Server. My server sends the payload notification to APNS but on iPhone am unable to receive it. I have checked the App registration part also and is able to receive the token for the same.
Framework used are: PushKit, UserNotifications, GoogleWebRTC .
I don't understand where is the gap, the backend triggers the APNS but there no response.
Ports enabled on server are: 443, 5223, 2197, 2195, 2196.
Similarly Push notification were also not working, So I tried to change it to register on Firebase for device registration token And did some coding at backend to send the notification to that device. It was working perfectly fine from last few weeks, but it suddenly stopped. I checked the JSON Payload and tried to send it through PostMan, in both it says 200 Success. And in Application end am waiting for breakpoint to hit in userNotificationCenter(_: , willPresent, completionHandler).
What all I have checked:
1)My server to APNS server connectivity.
2)Verified the apns certificate. The certificate was created in October 2024, whose expiry is in Nov 2025 and it support both Sandbox and Production environment.
3)Checked required delegates are implemented in App. With the capability enable in it, is also sending registration token to backend.
Kindly guide me where I can check in this flow.
Thanks in Advance!
Hi Apple Support team,
I would like to inform you that we were receiving push notifications to all regions. Recently we were facing push notifications are not receiving to brazil region. For all other regions we are receiving. We are using same APSN certificate. Any region specific permissions do we need to add. Please let me know. Thanks.
How do i add the red bubble badge notification on the app for unread in app messages
Topic:
App & System Services
SubTopic:
Notifications
I am checking if the user taps on the firebase push notification and get the payload.
override func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
os_log("notification tapped %{public}@", log: OSLog.push, type: .info, userInfo)
handleNotificationPayload(userInfo as! [String: AnyObject])
setFlutterLinkClickedVariable()
}
My use case is in app terminated state when push notification is tapped, get the link from payload and navigate to corresponding screen based on the link. This is working when there is only one push notification. When there are multiple push notifications with different links in the payload, only the first notification I tap works. Rest of the notifications just launches the app and does not navigate because the link is not set.
I am getting the link from the payload and invoking flutter code which sets the link in the user defaults (shared preferences) and when the app launches in the home screen it checks for this variable and navigates accordingly.
func handleNotificationPayload(_ payload: [String: AnyObject]) {
if let link = payload["link"] as? String {
setFlutterLinkVariable(link)
}
}
override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
os_log("app did receive remote notification %{public}@", log: OSLog.push, type: .info, userInfo)
handleNotificationPayload(userInfo as! [String : AnyObject])
completionHandler(.newData)
}
Currently when there is only one push notification it works because the link is set from the above method. The click delegate is not calling. I did set the delegate in application(:didFinishLaunchingWithOptions).
UNUserNotificationCenter.current().delegate = self
application.registerForRemoteNotifications()
How to solve this issue? Thanks.