Hi there,
We’re using APNs Push delivery metrics, which provide a breakdown including metrics like Received by APNs, Delivered to Device, and Discarded - Token Unregistered.
To track unregistered tokens on our end, we also monitor the 410 error responses from APNs, which typically indicate that a token is no longer valid. However, we’ve noticed a discrepancy: the number of 410 errors we receive is much lower than the Discarded - Token Unregistered count shown in the APNs console.
Is this difference expected? Specifically, does APNs sometimes know that a token is unregistered but still return a success status to us when we attempt to send a push to that token?
Thank you for any insights you can provide!
Notifications
RSS for tagLearn about the technical aspects of notification delivery on device, including notification types, priorities, and notification center management.
Post
Replies
Boosts
Views
Activity
After adding a pass to the wallet and setting the relevantDate, it doesn't show a notification on the screen after the relevantDate has passed.
How do we test the wallet notification for a pass?
Using the native email ios mail app iPhone 16 pro. When an email arrives the phone will ding or vibrate, but the message notification doesn't appear on lock screen. If you touch the screen from dim to wake then scroll up, the email notification does appear. If the phone is open the notification also appears at the top of screen as it's meant to do. This started yesterday with iOS 18.2 beta 1. It was not resolved with the new update.
System Information: iPhone 13, iOS 17.6.1
Steps to reproduce:
Open my app, causing it to register for an APNS token
Kill my app to make sure it is not in the foreground
Send a push notification with a payload similar to this:
{"aps":{"alert":{"title":"My App Name","body":"10:24am 🚀🚀🚀"}},"price":19,"clock":175846989,"time":1731001868.379526}
And the following attributes:
Expiry: (Date that is 7 days from now)
Type: Alert
Priority: High (10)
Payload Size: 141 bytes
The notification appears in the Notification Center, as expected
Turn on Airplane Mode (WiFi=off)
Wait between 60 seconds - 8 hours (varies)
Send the same notification payload/attributes again
Wait between 60 seconds - 8 hours (varies)
Turn on WiFi
Wait 1-30 minutes (varies)
Expected behavior:
The notification appears in the Notification Center
Actual behavior:
Push notifications from other apps immediately appear in the Notification Center
Roughly 30% of the time: The push notification(s) from my app never arrive, even after waiting 30 minutes
Roughly 70% of the time: The notification appears in the notification center, and everything works fine
Thoughts:
Expiry must be set correctly because I've seen my notifications get queued and then delivered (correctly) in the CloudKit Push Notification tool.
Identical notifications (payload, APNS headers, etc.) are also sent to other devices at the same time. They receive the notifications just fine.
It must not be my iPhone's notification Settings, because notifications appear correctly when online
I've tried restarting the iPhone, it did not fix this issue
So it seems it must be an unexpected behavior in APNS or something broken with my specific phone? Not sure what else I could possibly do to make sure the notifications arrive.
This breaks the entire experience of my app. I need to be able to notify users of incoming messages so they do not miss them.
I am developing the iOS application using PushKit and APNS. Some users didn't get any notifications after some events, such as updated iOS 18 or a new version from the App Store. After the event had changed device tokens (PushKit, APNS).
When the app has launched, register the iOS system with PushKit and APN tokens and upload it to our server. Most of the time, the tokens didn't change.
I was investigating the console log when making a call from another device or sending APN. But I didn't get any logs from it. Normally it is looking following apsd, callserviced, Springboard, delivering or launching the app when getting a voip push.
The issue was solved after reinstalling the app. But it still occurred with users—about 1% of total.
How do I solve the issue without reinstalling the app?
I am considering an implementation to provide OS Contacts information in real-time using data from push notifications.
Through a TSI (Technical Support Incident), Apple Support recommended combining ContactProviderExtension and NotificationServiceExtension. However, the following threads indicate that this combination is not supported, as confirmed by Apple DTS (Thread 1, Thread 2).
Question 1: Latest Support Status for Using ContactProviderExtension with NotificationServiceExtension
Additionally, there is limited documentation on implementing ContactProviderExtension, and I am specifically struggling with the following points:
Question 2: Specific Implementation Guidance for ContactProviderExtension
The method to call when providing Contacts information to the OS
How to add and delete Contacts information provided to the OS
How to verify the Contacts information currently provided to the OS
Any insights on the latest support status or specific implementation methods for these extensions would be greatly appreciated.
Our team had previously encountered deprecation warnings for applicationIconBadgeNumber, but while working with iOS 18.0.1 and Xcode version 16.1, I no longer see these warnings. Has the deprecation been reversed, or do we need to address it on our end? Please provide insights on whether the deprecation still applies, as there are no warnings in Xcode for that API and action items on the integrators.
Hello, I would like to check with you on a possible APNS issue. We saw a huge spike in the number of failed requests towards APNS (both api.push.apple.com and api.development.push.apple.com). On October 31st, at 13:39 (during 1 or 2 minutes), more than 700k requests failed. Which means more than 10% of all requests made by our service to api.push.apple.com. Our service is sending notification requests for more applications, different AppIds, in high amounts.
Even more concerning is the fact that it happens more or less regularly now. 2-3 times a week. Still, just for short time, but I would like to check with APNS, whether it is something you know about.
Checking graphs in CloudKit did not help me much. They don't allow good enough granularity. Not more precise than 1 day.
Please, let me know if you are aware of some very short transient issues in APNS. Happening more or less regularly, with noticeable impact.
Apple Push Notification service server certificate update
https://developer.apple.com/news/?id=09za8wzy
All developers using APNs will need to update their application’s Trust Store to include the new server certificate
What exactly should developers do?
Please tell me the specific method.
Please make sure that both old and new server certificates are included in the Trust Store before the cut-off date for each of your application servers that connect to sandbox and production.
How do I make sure that both the old and new server certificates are in the Trust Store?
Thank you for your understanding.
Hello,
We’re working on a connected watch that displays notifications and handles calls using the ANCS (Apple Notification Center Service) on a Nordic Semiconductor platform. We can manage a single call by monitoring notifications with Category ID: Incoming Call and Category ID 12: Active Call, which lets us display the call status on the watch. However, we’re facing challenges with handling multiple calls, especially around holding and resuming calls.
Our key issues are:
Tracking Call on Hold: When the first call is put on hold to answer a second call, ANCS removes the first call notification. This leaves us unable to track if there’s a call on hold until it’s resumed and reappears as an Active Call. Is there any ANCS flag, category ID, or other mechanism to indicate a call is on hold?
Tracking Total Call Duration: When resuming a held call, ANCS assigns a new Active Call category ID with a new timestamp, which reflects the resumption time rather than the original call start time. This complicates tracking the total elapsed time. Is there a way to identify that this resumed call is the same as the original one to retain the initial timestamp?
Any insights or workarounds would be greatly appreciated!
Thank you.
Hello,
I am developing an application using VoIP Push and CallKit. I have a question: Starting with iOS 13, I understand that under the VoIP Push policy, if reportNewIncomingCall is not called continuously, the VoIP Push may be blocked. Is there a way to determine if the device has been blocked?
I am curious whether PKPushRegistry itself is unable to receive pushes or if reportNewIncomingCall returns an error when it is blocked. If push notifications are not being received, what should I do to resume receiving them?
Thank you.
I'm trying to call the Test Notification endpoint: https://developer.apple.com/documentation/appstoreserverapi/request_a_test_notification?language=objc
I'm creating a JWT bearer token using a script I run on the console with these 2 commands: npm install jsonwebtoken fs and node generate_jwt.js
Keys are taken from App Store Connect -> User and Access -> Integrations -> Keys -> In-App Purchase.
generate_jwt.js script:
const jwt = require('jsonwebtoken');
const fs = require('fs');
const keyId = 'MY_KEY_ID';
const issuerId = 'MY_ISSUER_ID';
const privateKey = `-----BEGIN PRIVATE KEY-----
MY_SECRET_KEY
-----END PRIVATE KEY-----`;
// Define JWT headers and claims
const token = jwt.sign({}, privateKey, {
algorithm: 'ES256',
expiresIn: '1h',
issuer: issuerId,
header: {
alg: 'ES256',
kid: keyId,
},
audience: 'appstoreconnect-v1'
});
console.log('JWT Token:', token);
When I run a POST https://api.storekit.itunes.apple.com/inApps/v1/notifications/test request on postman with Bearer token authentication, I get a 401 Unauthorized error.
I hav the 16 Pro Max running 18.1. My facebook, TikTok and other apps seem to not have sound when I get their notification, my phone settings is always anable with sound, apps also enable with sound, please any suggestions
Hello,
I am building a swift macOS app and have noticed issues today with delivering APN's to both development and production devices. Similar to this thread the only way I can get them to deliver temporarily is to do one of:
Change the bundle ID of my app to a new bundle ID, then start it up. I will usually get the first notification.
Reset my network (either wired ethernet or wifi, typically both)
Using the push notifications console for development sends, I see the message "discarded as device was offline" in the delivery log even though the device is still online and was just registered when I got back the deviceToken.
If I set an expiration on development notifications then the delivery log says "stored for device power considerations" and the notification will then send once I do one of the above steps (new bundle or reset network).
Previous to today the notifications were sending immediately and I had no issues getting them. Is there something I can do to fix this problem, is it a problem with the APN provider, or is it something else I haven't thought of?
A unique ID for an expiration-based notification is 1755def8-1a44-cbcf-c64b-64e435c30f81, and a non-expiry is d7a72b46-0c64-4500-0abc-3734f9efbd90.
frequentPushEnablementUpdates asynchronous sequence is never called even if 'More Frequent Updates' is toggled ON or OFF.
for await frequentPushEnabled in ActivityAuthorizationInfo().frequentPushEnablementUpdates {
// never called
}
Though we are able to get the 'More Frequent Updates' value once by the following:
var isEnabled = ActivityAuthorizationInfo().frequentPushesEnabled //true if ON, false if OFF
This only gives the result once as it is not async observation sequence.
But the 'frequentPushEnablementUpdates' async sequence is never called. As per the doc - 'frequentPushEnablementUpdates' is an asynchronous sequence you use to observe whether a person permitted you to update Live Activities with frequent ActivityKit push notifications.
Hi everyone.
Can anyone who has had experience tell me how long it takes to get a response to the approval to use critical alerts?
Thanks.
Good afternoon)
Could you please advise, I need to issue a Wallet-a card with a description of the bonus program for a certain store. I also need to organize sending a unique push to the user's devices if the user's points are burned. Can you please tell me how I can send a unique message to the customer in such a case?
Will it be a card update?
Java Server
Card generation via server
token:1ac0f5ef2d37a0593f09e88be0f87daca27f23d4f7637fbc7a8102413d673bc3
msgId: 37d28693-16fe-0746-733e-a49d5879becc
send time: 2024-11-04 22:04:18.0(UTC+08:00)
response result: InternalServerError
这是什么原因呢?
token:1ac0f5ef2d37a0593f09e88be0f87daca27f23d4f7637fbc7a8102413d673bc3
msgId: 37d28693-16fe-0746-733e-a49d5879becc
send time: 2024-11-04 22:04:18.0(UTC+08:00)
response result: InternalServerError
这个是什么原因呢?
Hello!
I am working on an app that requires to send a local push notification to the user from an app extension (from the ShieldActionDelegate to be precise).
This is suggested by DTS as a workaround for this issue: https://forums.developer.apple.com/forums/thread/766644
But now, on the iOS 18.2 beta, local push notifications are delayed by up to 10 seconds, even though the push notification is classified as .timeSensitive, leading to a very bad user experience (where to user has to sit and wait for the notification to arrive without knowing how long it will take).
This only happens when Apple Intelligence is turned on.
This had happened previously on the iOS 18.1 beta but was fixed for the final release: https://forums.developer.apple.com/forums/thread/764848
But now the issue came back on the latest iOS 18.2 beta.
I have documented the new behavior in FB15668616
Any help is appreciated!