Send push notifications to Mac, iOS, iPadOS, tvOS devices through your app using the Apple Push Notifications service (APNs).

Posts under APNS tag

200 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

New delivery metrics now available in the Push Notifications Console
The Push Notifications Console now includes metrics for notifications sent in production through the Apple Push Notification service (APNs). With the console’s intuitive interface, you’ll get an aggregated view of delivery statuses and insights into various statistics for notifications, including a detailed breakdown based on push type and priority. Introduced at WWDC23, the Push Notifications Console makes it easy to send test notifications to Apple devices through APNs. Learn more.
0
0
747
Oct ’23
Apple Push Notification service server certificate update
The Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January 20, 2025, and in production on February 24, 2025. All developers using APNs will need to update their application’s Trust Store to include the new server certificate: SHA-2 Root : USERTrust RSA Certification Authority certificate. To ensure a smooth transition and avoid push notification delivery failures, 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. At this time, you don’t need to update the APNs SSL provider certificates issued to you by Apple.
0
0
1k
Oct ’24
Apple account credential failure
% eas build --profile development --platform ios To upgrade, run npm install -g eas-cli. Proceeding with outdated version. Found eas-cli in your project dependencies. It's recommended to use the "cli.version" field in eas.json to enforce the eas-cli version for your project. Learn more Found eas-cli in your project dependencies. It's recommended to use the "cli.version" field in eas.json to enforce the eas-cli version for your project. Learn more Found eas-cli in your project dependencies. It's recommended to use the "cli.version" field in eas.json to enforce the eas-cli version for your project. Learn more Found eas-cli in your project dependencies. It's recommended to use the "cli.version" field in eas.json to enforce the eas-cli version for your project. Learn more Loaded "env" configuration for the "development" profile: no environment variables specified. Learn more Specified value for "ios.bundleIdentifier" in app.json is ignored because an ios directory was detected in the project. EAS Build will use the value found in the native code. ✔ Using remote iOS credentials (Expo server) If you provide your Apple account credentials we will be able to generate all necessary build credentials and fully validate them. This is optional, but without Apple account access you will need to provide all the missing values manually and we can only run minimal validation on them. ✔ Do you want to log in to your Apple account? … yes › Log in to your Apple Developer account to continue ✔ Apple ID: … XXXXXX@YYYY › The password is only used to authenticate with Apple and never stored on EAS servers Learn more ✔ Password (for XXXXXX@YYYY: … ********************** › Saving Apple ID password to the local Keychain Learn more ✖ Logging in... Invalid username and password combination. Used ' XXXXX@YYYY' as the username. › Removed Apple ID password from the native Keychain ? Would you like to try again? › no / yes
0
1
61
23h
MDM Push Certificates renewal does not work and redirects to a not found page
When clicking Upload for the CSR file, there is no APNS certificate available for download. Instead, the portal redirects to https://www.apple.com/filenotfound MDM Push Certificates are critical for the operation of managed devices, if they expire, all devices will have to be reenrolled creating a catastrophic event for all the customers devices. Please review and given how critical this service for renewing certificates is for your customers, please also make sure it is always available without downtimes. Let me know if you need more details, Thank you, Sergio
1
0
161
5d
Apple Push Notification Service Server Certificate Update
we are currently using an APNs Authentication Key to send notifications and have not generated any Development or Production APNs certificates. Could you please confirm whether using the APNs Authentication Key alone is sufficient under the updated requirements? Alternatively, do we need to generate Development and Production APNs certificates that support SHA-2 for compliance with the changes?
1
0
131
5d
Devices sometimes do not fetch updated Wallet passes
Hello, I'm using Apple Wallet passes with a custom backend for distributing and updating them, as described in the documentation (https://developer.apple.com/documentation/walletpasses). I'm sometimes seeing a behaviour where the device does not download an updated pass even though the push notification for informing about the changes has been successfully sent (I've received a success response from APNs). APNs documentation says that it should retry sending the notification if the device is not reachable, but in the cases I'm describing here, the request from the device to fetch the updated pass never arrives. I don't have the apns-expiration header set. Also, I've checked the load balancer and firewall logs, etc. and there are no traces of the requests. Any thoughts on what might be the issue here? Or how to debug this further?
0
1
101
1w
How can I keep my app up to date with the server without throttling
I am trying to build a chat app. I am using FCM to deliver messages to my app accompanied by some custom data like the new message_data, deleted message_id and so on; each message will need to run the app in the background to do some background processing and local database syncing. This continuous background processing is clearly not acceptable as APNs imposes a per-device limit on background push notifications . I am asking how can I push messages and actions payload without being throttled ?
2
0
117
1w
VoIP call notification is randomly not delivered to a specific user
I'm facing an issue delivering VoIP push notifications to user devices. It's pretty random, sometimes notifications are delivered and sometimes not. I've had a call with the user to understand and narrow down the issue, including testing delivery of pushes to their device token via Push Notification Console as described here: https://developer.apple.com/documentation/usernotifications/testing-notifications-using-the-push-notification-console#4181180. I asked a user to use Wi-Fi first and tried delivering around 10 pushes via console and 2 of them were lost while the rest was delivered. I asked a user to use cellular and tried delivering also around 10 pushes and most of them were lost and only few of them were delivered. Production environment was used to deliver pushes hence I cannot see delivery log and so I have no visibility over a reason why push wasn't delivered. I wanted to file a code-level support ticket to get help however I need to supply a sample xcode project which in this particular case doesn't make any sense as I'm using Apple's Push Notification Console tool and it delivers pushes in some cases while doesn't deliver it in other cases. I'm pretty familiar with all potential reasons why push might not be shown on device, including app early crashes, not reporting a call to CallKit etc. => although you never know, I'm pretty sure it's not our case. How can I get support on investigating specific user device token delivery issues like in the case I described above? I have device token and push console records but it's not clear how to get support on that. Thank you!
2
0
76
1w
Silent push notifications not received
I have a flutter app which receives bot alert and silent notifications. The alert notifications are received properly whilst the silent ones do not trigger any function. My app is based on OneSignal but for the testing i am also trying to directly send the notifications using the APN console. Using either alert or background type notification I am using real device (iPhone XR) The background modes are set to "Background fetch" and "Remote notifications" The token is valid as i am getting alert notifications. The app has notification permissions. The didReceiveRemoteNotification never gets triggered (for alert or silent types) When sending alert notification i do see the printout of "willPresent notification" Here is my AppDelegate.swift code. @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data ) { // Log device token to ensure correct registration let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) } let token = tokenParts.joined() print("Device Token: \(token)") } override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { // Request full notification permissions UNUserNotificationCenter.current().requestAuthorization( options: [.alert, .badge, .sound, .provisional, .criticalAlert] ) { (granted, error) in print("Notification Authorization Granted: \(granted)") if let error = error { print("Notification Authorization Error: \(error.localizedDescription)") } // Always attempt to register for remote notifications DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications() } } // Set notification center delegate UNUserNotificationCenter.current().delegate = self GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } // Add this method to handle foreground notifications override func application( _ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void ) { print("🔔 FULL didReceiveRemoteNotification CALLED") print("Full Payload: \(userInfo)") // Detailed logging of APS dictionary if let aps = userInfo["aps"] as? [String: Any] { print("APS Dictionary: \(aps)") print("Content Available: \(aps["content-available"] ?? "Not Found")") } // Explicit silent notification check if let aps = userInfo["aps"] as? [String: Any], let contentAvailable = aps["content-available"] as? Int, contentAvailable == 1 { print("✅ CONFIRMED SILENT NOTIFICATION") // Perform any background task here completionHandler(.newData) return } print("❌ Not a silent notification") completionHandler(.noData) } override func application( _ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void ) { print("🔄 Background Fetch Initiated") // Perform any background fetch tasks completionHandler(.newData) } override func userNotificationCenter( _ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void ) { let userInfo = notification.request.content.userInfo print("**** willPresent notification ****") print("Full Notification Payload: \(userInfo)") // Explicitly log the aps dictionary if let aps = userInfo["aps"] as? [String: Any] { print("APS Dictionary: \(aps)") print("Content Available: \(aps["content-available"] ?? "Not Found")") } // Check for silent notification if let aps = userInfo["aps"] as? [String: Any], let contentAvailable = aps["content-available"] as? Int, contentAvailable == 1 { print("**** CONFIRMED SILENT NOTIFICATION IN FOREGROUND ****") completionHandler([]) return } // For non-silent notifications if #available(iOS 14.0, *) { completionHandler([.banner, .sound]) } else { completionHandler([.alert, .sound]) } } }
2
0
107
1w
Push Notification Gets Removed From Notification Screen When Setting "badge" to 0
Push message on the lock-screen disappears in one specific instance. In general the situation is as follows: the application, upon starting up, sets the badge counter (i.e. notificationCenter.setBadgeCount(3)) the application is being sent to background the screen is locked (it doesn't matter if it's turned on or not) send a push message to the application and set the badge (in aps) to "0" What happens: the screen lights up (unless it's lit up already), the push is being displayed for a very short time and gets hidden. Happens on iOS 18.1, 18.1.1, 18.2. If not setting badge in the aps keys it works correctly. I've created a feedback report https://feedbackassistant.apple.com/feedback/16095572. I am able to reproduce the issue on a sample app 100% of the time :/
2
0
133
1w
Push Notifications after update to 18+ iOS
Dear Apple Engineer, We have problem in the banking application after update iOS to 18, 18.1 or 18.1.1. No notifications appear on the locked screen, even in the notification center. On lower version push notifications apparently correctly. What have we checked so far is: certificates profiles app with push notifications extension and without it usage of setBadgeCount(_:withCompletionHandler:) instead of applicationIconBadgeNumber Our sample payload with encrypted data: { "aps":{ "alert":"Message from Bank", "badge":0, "sound":"default", "mutable-content":1, "category":"" }, "Type":"", "MessageId":"", "Id":"8ebf0c13-83cf-4029-ac13-91d026c3770a", "Media-url":"", "alternativeTitle":"New message", "priority":5, "EncryptedData":"eyJ0eXAiOiJibTplbmMtdjEiLCJhbGciOiJibTppb3MtZWNkaCIsImVuYyI6ImJtOkExMjhHQ00tSVYxNiIsImVuY19raWQiOiI5OUIyN0E4NC1CQzRFLTRGMzQtQjBGNC0yMTcyMEYxQTFEN0EifQ...BDdxycY-ZWPC7BgI_07efVSgjKyGyGVKlcNtZSslWJePrwJkJyIxFBr07XtayB0I2jv6Vc8AdUpdvMJ-daVzkPYMZ7pQA_X0Pg8RPRS2GnPkhyhK3XNkLRMsjG6CkSafYaqSeLMEpdF2Q-QkajvO3ojnRl1C-Bp9FpNbeaCwJXwqjEMKKhggRsKH8zdk7XcYhZX5_hARbBkIFLrCX1Xzyypp_PfZ23v9Pbd8aHmAf7FQdYN6xbfyoL5XEaDrCjGi-up2n1nlcTeEfkXHBunitUzQulmrjo86GJS0ldhF0mEMZ3_t6ObbjeKijYExMeYHxeCe89Yg10TvZI6kP4xizpJijG9cz75X3VI3I4SgeR8BuZRcb5eTQKWWzGW7u6LD1QtV3PWFCtv942CSz62kPPo-dD0248Fqm5HwxZejQSrZKjYQQ87dkzB0q7p2Q_M0z2Y-bRfNRXJl8VaF5X6-2KwLq47zwrQYUIcEHdag3J05X0SzBiImAdbh2zQz074QqEEpoU1F6C89LHKFxAw", "IsSigned":false } What do you need to analyze the problem? Identifiers, sample application? Best regards, Michał iOS Developer.
1
0
155
1w
Batch push issues for commercial apps
The backend service uses the same copy to push to many users in batches. This year, the following problem began to occur. Using http2 send is normal, but when getting the result through the stream id, it always times out. Restarting the service still times out. I hope Apple development engineers can help me find out what the problem is.
2
0
79
1w
Apple 推送通知服务如何更新证书
“Apple 推送通知服务的服务器证书更新 2024 年 10 月 17 日 Apple 推送通知服务 (APNs) 的证书颁发机构 (CA) 即将改变。APNs 将于 2025 年 1 月 20 日更新沙盒环境的服务器证书,并于 2025 年 2 月 24 日更新生产环境的服务器证书。” 关于这个邮件,请问我应该怎么做,才能把下载的crt证书加到trust store上
1
0
90
1w
App review returned rejected
Hello, I have a problem with the fact that my application requires a login, I provided it to Apple, and after testing it in Test Flight everything worked fine for me, nice, when I gave it to Apple for review and release, they returned the application to me saying that I can't log in, they don't know where it is problem?
1
0
102
1w
delphixe apns Remote Push error:Connection Closed Gracefully
function TFormMain.HttpPost(IdHTTP1: TIdHTTP; sJsonData, sUrl: string): string; var jsonToSend: TStringStream; begin try IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions + [hoKeepOrigProtocol]; //必须有这行才使设置协议版本生效 IdHTTP1.ProtocolVersion := pv1_1; IdHTTP1.Request.CustomHeaders.Values[':method']:='POST'; IdHTTP1.Request.CustomHeaders.Values[':path']:='/3/device/' + EditDeviceToken.Text; IdHTTP1.Request.CustomHeaders.Values[':scheme']:='https'; IdHTTP1.Request.CustomHeaders.Values['apns-push-type']:='background'; IdHTTP1.Request.CustomHeaders.Values['host']:='api.push.apple.com'; IdHTTP1.Request.CustomHeaders.Values['apns-topic']:='com.xxvar.erp'; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile:='d:\WIN\APNS-cert.pem'; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile:='d:\WIN\APNS-key.pem'; IdSSLIOHandlerSocketOpenSSL1.ssloptions.method:= sslVSSLv23; IdSSLIOHandlerSocketOpenSSL1.ssloptions.Mode:= sslmBoth; with IdHTTP1 do begin IOHandler := IdSSLIOHandlerSocketOpenSSL1; HandleRedirects := True; //允许头转向 ReadTimeout := 5*60*1000; //请求超时设置 Request.ContentType := 'application/json'; //x-www-form-urlencoded Request.ContentEncoding := 'utf-8'; try jsonToSend := TStringStream.Create(UTF8Encode(sJsonData)); jsonToSend.Position := 0; //将流位置置为0 Memo1.Lines.Add('发送指令执行结果到集抄平台: ' + sJsonData); Result:= Post(sUrl, jsonToSend); Memo1.Lines.Add(Result);//Result := HTTPDecode(Post(sUrl, jsonToSend)); //接收POST后的数据返回 except on e: Exception do begin Memo1.Lines.Add('接口调用异常: ' + e.Message); jsonToSend.free; end; end; end; finally end; end;
1
0
102
1w
What are the exact conditions for '429 TooManyProviderTokenUpdates' in APNs when managing multiple TEAM_ID and KEY_ID?
Hi, We are building a system that integrates with APNs using the Token-Based Authentication method. While testing, we encountered the 429 TooManyProviderTokenUpdates error and would like clarification on the exact conditions that trigger this response. Our Testing Scenario: Private Key: We keep the same Private Key constant across requests. TEAM_ID and KEY_ID: For testing purposes, we change the TEAM_ID and KEY_ID for every JWT we generate. Requests: Each generated JWT is used to call the /3/device/{token} API endpoint. Observed Behavior: When we test with different TEAM_ID and KEY_ID combinations, we initially receive 403 InvalidProviderToken, which is expected because the TEAM_ID and KEY_ID combinations are invalid. However, if we change the TEAM_ID and KEY_ID and make multiple calls (e.g., more than two within 20 minutes), we start receiving 429 TooManyProviderTokenUpdates. If we switch to a different IP address (via VPN) after receiving the 429 error, we revert to receiving 403 InvalidProviderToken. Our Use Case: We are building a system where multiple server clusters handle multiple apps (some under the same Apple Developer account, others under different accounts). Each server generates JWTs for requests to the APNs /3/device/{token} API. Our Questions: What specific conditions cause the 429 TooManyProviderTokenUpdates error? Does APNs monitor token updates at the level of TEAM_ID and KEY_ID, or does it consider additional factors such as the originating IP address or shared infrastructure? How does APNs handle frequent changes in TEAM_ID and KEY_ID within a single server or cluster? Is there any documentation or guidance on managing JWTs effectively in a distributed system with multiple apps and servers? Does APNs limit JWT updates based on IP address or API endpoint usage across multiple apps sharing the same Apple Developer account? We would greatly appreciate any clarification on these points and guidance on best practices for managing JWTs in a multi-cluster environment. Thank you!
1
0
108
2w
Does Firebase Push Notification Service Need New Certificates Due to APNs Update
Hi, With the upcoming changes to the Apple Push Notification service (APNs) server certificates — including the SHA-2 Root: USERTrust RSA Certification Authority certificate update — I wanted to clarify if we need to take any action with Firebase Cloud Messaging (FCM). Since we’re using FCM to send push notifications to iOS devices, does Firebase also need to update its server certificates in response to these changes, or will Firebase handle the updates automatically? We understand that Apple recommends updating our Trust Store to include the new certificates for APNs, but we’re unsure if any action is needed on our end for FCM specifically. Thanks in advance for the clarification!
1
2
2.2k
2w
Xcode16.1&iOS18.1.1 Debugging App, unable to respond “didRegisterForRemoteNotificationsWithDeviceToken” delegation
I am an iOS development engineer. Recently, I updated the Xcode version to 16.1 (16B40) and updated my debugging device (iPhone 15) to iOS 18.1.1. However, I found that I could not respond to the delegate method. I confirmed that my code, certificate, Xcode settings, and network environment had not changed. Simply executing application.registerForRemoteNotifications() in func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool did not receive a response(didRegisterForRemoteNotificationsWithDeviceToken or didFailToRegisterForRemoteNotificationsWithError ). In the same environment, when I switched to another device for debugging (iOS 17.0.3), the delegate method would respond. I really don't know what to do, I hope someone can help me, I would be very grateful. Please note: Everything is normal when using devices before iOS 18.1.1 version
2
0
182
2w
iOS 18.1.1 didRegisterForRemoteNotificationsWithDeviceToken not called
I have to device, one is iOS 17.0.3, the other is iOS 18.1.1. In iOS 17.0.3, everything just goes fine, but iOS 18.1.1 'didRegisterForRemoteNotificationsWithDeviceToken' and 'didFailToRegisterForRemoteNotificationsWithError' never called. I am sure I already called 'registerForRemoteNotifications' method in Appdelegate, Singning & Capabilities's Remote notification is also checked. I use Firebase, also add FirebaseAppDelegateProxyEnabled = NO in my info.plist. Someone can tell me why? Think u for ur answer.
1
0
144
2w
MDM-DEP Enroll Error
I created a mobileconfig file on our self-developed MDM server and used Apple Configurator with a USB cable to prepare the device. However, the profile installation failed and show the mdm payload is invalid must to be removed. I suspect that the issue might be related to the CA (Certificate Authority) in the configuration, even though I have provided the ROOT SSL CA and the .p12 file. What CA file should I include in the mobileconfig to resolve this issue? using Apple Configurator to edit the mobileconfig file, but the MDM service is no longer displayed. How should I handle this
2
0
249
2w