You have only three main options to get push notifications working on iOS for a PWA. In both cases, you must register an App ID on Apple Developer portal, with permission to the appropriate service. For Option 1, your registered App ID must have permission to Apple Wallet. For options 2 and 3, you must have permission to Push Notifications. In both cases, you should record your Bundle ID and Team ID in case you need it later.

  • Option 1 (Easier): Use PassKit to set up a generic Apple Wallet pass, which can broker notifications that are very similar to native ones. Here's some documentation, and here's a working demo of how this can send push notifications to registered devices.

  • Option 2 (Harder): Use Firebase Cloud Messaging or a package like Node-APN to send push notifications the "proper" way, signed with a P12 or P8 key from the Apple Developer Portal. This gets tricky mainly because you need the iOS device identifier, which is only exposed to applications installed natively. I'm afraid I don't have an answer on how to get this device ID from within a PWA, and without it, this method doesn't work.

  • Option 3 (not a PWA): You can use an App ID with a provisioning profile and either a P12 or P8 key, similar to the previous option, but you wrap your application in Apache Cordova, and distribute it (either through the public app store, or using MDM software and via the private Apple Business Manager).

Those are your options. I have exhausted every possible avenue researching this, and I am confident that these will remain your only options through at least the next several months. It's possible we may see further support for Web Push or perhaps just a way to get the device ID from the web in the future, but until that time, this is it. There aren't any other ways to go about this presently.

Source: I architect and develop apps for major brands like Subway, Gartner, Morgan Stanley and PwC (among many others). My research is very recent, and includes direct communication with the head of WebKit at Apple, and also with one of the world's foremost PWA and iOS experts.

Answer from Crates on Stack Overflow
🌐
Mobiloud
mobiloud.com › blog › how to set up push notifications for your pwa (ios and android)
How to Set Up Push Notifications for Your PWA (iOS and Android)
So you may want to set up a prompt just for iPhone users that asks them to install your PWA (as iOS also doesn’t have an automatic install prompt for PWAs, as Android does). Once your service worker is installed, and you’ve logged permission from users to send push notifications, your service worker will need to “listen” for incoming push notifications.
Top answer
1 of 6
159

You have only three main options to get push notifications working on iOS for a PWA. In both cases, you must register an App ID on Apple Developer portal, with permission to the appropriate service. For Option 1, your registered App ID must have permission to Apple Wallet. For options 2 and 3, you must have permission to Push Notifications. In both cases, you should record your Bundle ID and Team ID in case you need it later.

  • Option 1 (Easier): Use PassKit to set up a generic Apple Wallet pass, which can broker notifications that are very similar to native ones. Here's some documentation, and here's a working demo of how this can send push notifications to registered devices.

  • Option 2 (Harder): Use Firebase Cloud Messaging or a package like Node-APN to send push notifications the "proper" way, signed with a P12 or P8 key from the Apple Developer Portal. This gets tricky mainly because you need the iOS device identifier, which is only exposed to applications installed natively. I'm afraid I don't have an answer on how to get this device ID from within a PWA, and without it, this method doesn't work.

  • Option 3 (not a PWA): You can use an App ID with a provisioning profile and either a P12 or P8 key, similar to the previous option, but you wrap your application in Apache Cordova, and distribute it (either through the public app store, or using MDM software and via the private Apple Business Manager).

Those are your options. I have exhausted every possible avenue researching this, and I am confident that these will remain your only options through at least the next several months. It's possible we may see further support for Web Push or perhaps just a way to get the device ID from the web in the future, but until that time, this is it. There aren't any other ways to go about this presently.

Source: I architect and develop apps for major brands like Subway, Gartner, Morgan Stanley and PwC (among many others). My research is very recent, and includes direct communication with the head of WebKit at Apple, and also with one of the world's foremost PWA and iOS experts.

2 of 6
39

I just want to let you all know: Apple will support push notifications for web apps! This news was published at the WWDC2022. Apple will release Web Push with Safari 16 on macOS (Ventura) in a few months (2022) and for iOS and iPadOS in 2023.

See: https://webkit.org/blog/12945/meet-web-push/

🌐
Firt
firt.dev › ios-15.4b
Push Notifications, WebXR, and better PWA support coming to iOS - firt.dev
New APIs, capabilities, bugs, and challenges for Safari and PWAs running in iOS 15.4 and iPadOS 15.4, including Web Push Notifications, WebXR
🌐
MagicBell
magicbell.com › blog › using-push-notifications-in-pwas
Using Push Notifications in PWAs: The Complete Guide
Manifest file: A PWA needs a manifest file because it gives the browser important application information. The web app manifest is crucial for enabling features such as push notifications, which enhance user engagement and experience. One caveat: iOS users must first install the Progressive Web App (PWA) by adding it to their home screen before they can subscribe to push notifications, so tailored prompts for these users are necessary.
🌐
Pushalert
pushalert.co › blog › pwa-push-notifications-ios-android
How to Add Web Push Notifications to your PWA on iOS and Android (The Easy Way) | PushAlert Blog
Head to Settings > iOS/iPadOS Configuration and use our manifest generator to create your iOS specific manifest and click on Enable. Now, if you already have a manifest created. Copy the fields from the generated manifest which are missing in yours. You can read more about iOS specific manifest ...
🌐
Reddit
reddit.com › r/pwa › ios push notifications?
r/PWA on Reddit: iOS push notifications?
February 17, 2019 -

Hello everyone

I've been reading that it is possible to have push notifications via using Passbook (now called Wallet).

I was wondering if anyone has implemented this and has any tips or learnings about it and the structure of doing it?

Here the best post I've found explaining it: https://stackoverflow.com/questions/63819485/sending-push-notifications-to-ios-from-pwa

Find elsewhere
🌐
GitHub
github.com › andreinwald › webpush-ios-example
GitHub - andreinwald/webpush-ios-example: WebPush for IOS demo and code: VAPID, Home Screen, gcm_sender_id, serviceworker, iPhone, iPad
WebPush is Progressive Web App(PWA) feature so you need to ask user to enable PWA mode first. On iOs devices it can be made with button "Add to Home Screen" in browser. Also don't forget to set display mode in manifest.json!
Starred by 107 users
Forked by 21 users
Languages   JavaScript 74.8% | HTML 25.2%
🌐
Apple Developer
developer.apple.com › forums › thread › 728796
PWA PUSH NOTIFICATION ISSUES IOS 1… | Apple Developer Forums
My pwa push notifications work perfectly using web-push with nodejs on windows and android devices using chrome. On mac's using chrome it doesn't work and it doesn't work on iphones either. Is there anything special I have to do to get it to work on iOS?
🌐
Batch
doc.batch.com › developer › technical-guides › how-to-guides › web › how-to-integrate-batchs-snippet-using-google-tag-manager › how-do-i-enable-ios-web-push-notifications-on-my-pwa-website
How do I enable iOS Web Push notifications on my PWA website? | API & SDK Documentation | Batch Documentation
If configured, Batch Web SDK will show a UI component prompting you to subscribe to notifications. Subscribe, and you should see the iOS permission request. You're done! As the Safari Inspector is not available for installed PWAs, you will need to add a way (hidden button, secret tap sequence, etc...) to call the batchSDK('ui.showPublicIdentifiers') JavaScript method so that Batch displays the Installation ID needed to test your Web Push notification.
🌐
Reddit
reddit.com › r/pwa › pwa on ios 15?
r/PWA on Reddit: PWA on iOS 15?
May 11, 2019 -

Have there been any advancements for PWAs on iOS 15/Safari? I’m assuming we still don’t have push notifications, but each OS update seems to bring at least something. Anyone have a comprehensive list?

🌐
Reddit
reddit.com › r/pwa › solving ios push notifications?
r/PWA on Reddit: Solving iOS Push Notifications?
October 22, 2020 -

I have a client requesting chat functionality in their app. I am yet to start the app, because I want to know my requirements before beginning. I primarily develop in VueJS, and this will be a mobile focused platform. With a chat feature, it makes sense to use push notifications. How should I solve this issue?

I am reluctant to build a Swift/iOS frontend alongside a PWA (for web and Play Store) since I haven't built in Swift before, and that would double my frontend's workload. On top of that, my client can't afford to give Apple their 30% cut. So it seems native for iOS is not an option. Here are the options I can imagine:

In combination with a "conditional delay," where a user has 3 minutes to open a message they've received. The idea is that if they're actively using the PWA, they'll see a notification that they got a message. Whether they're actively on the platform or not, my server will count to 3 (mins) and send them one of the following alerts if the message still hasn't been opened.

  1. Mobile Wallet updates - this stackoverflow answer let me down a helpful path. I could create "MyApp Mobile Pass," and send an update to this pass when a user gets a message, after the conditional delay.

  2. SMS - send a text to that user when they get a message, only if they haven't opened that message 3 minutes after it was sent to them after the conditional delay.

Have any of you built PWAs in this fashion, or have any other creative solutions to working around iOS's walled garden?

I'm open to building a hybrid app in Vue/Ionic, but even then the 30% cut Apple takes would cripple my client's business. So I either need a payment or APN work around.

Top answer
1 of 7
5
not advisable. ok wrap your web code using Cordova then leverage native push notifications.
2 of 7
3
So here's what I'm currently doing for my app, which is a PWA developed in Vue that also has a mobile wrapper for iOS and Android. I made an Ionic capacitor project for Android and iOS. Instead of hosting the files in the built app, though, I keep them on my web server and have a staging page in the app redirect the user to the PWA page from my server if there is stable enough internet connection. I can import capacitor plugins into VueJS and so long as I install them properly in the Capacitor app, I can utilize as many as I want at any time by just pushing an update to my server. For payment, I do use IAPs to just get on the stores, but I also have my payment handler switch over to a Stripe hosted payment handler if they are on the web version (I check to see if cordova exists in the window to do this). If you want to completely bypass the 30% apple tax, you're going to have a tough time, but it is doable. So long as you don't promote that there is another option to purchase a subscription in the app, you can do it. I'm not sure if it's a subscription model or a one time purchase, but if you have users download for free, sign up, and require them to register their account via an sms or email link for "security" purposes, and then let them know they can get a discount by paying through the web version but can still use the same account for the mobile version (and it doesn't have to be a true "discount," you could price it at the intended price online and then make the in app purchase price 30% higher), the users will go to purchase online and can still use the app functionality. Or you could have it as a PWA and then once they sign up, let them know they can download the mobile app for advanced functionality, including your push notifications, etc.
🌐
MacRumors
forums.macrumors.com › macrumors community › site and forum feedback
MacRumors PWA Web App with Push Notifications | MacRumors Forums
February 4, 2025 - That has been fixed in iOS 18. So, we've deployed it. Give it a try if you want push notifications from MacRumors on your iOS device. 1. Visit MacRumors.com 2.
🌐
Semicolon
semicolon.dev › ios › pwa › how to send push notifications ios 16
How to send PWA Push Notifications in Safari IOS 16
Starting September 2022 you can add native Push Notifications to your PWA. Until then... The Push Notification API is already available in IOS 15, but only in "experimental mode".
🌐
Medium
medium.com › @gxgemini777 › complete-guide-to-implementing-background-push-notifications-in-pwas-d36340a06817
Complete Guide to Implementing Background Push Notifications in PWAs | by DHoper | Medium
May 21, 2024 - To implement background notifications for a PWA (Progressive Web App), even when the user has not opened the app, we need to use two main interfaces: the Notifications API and the Push API. Below is a brief introduction to these interfaces along with code snippets. Detailed registration and push operations will be explained later. Before starting, please note that iOS fully supports the Push API only from version 16.4 onwards.
🌐
XDA Developers
xda-developers.com › home › apple › safari on ios could soon support web push notifications
Safari on iOS could soon support web push notifications
February 1, 2022 - This makes depending on Progressive ... the case in the near future. iOS 15.4 beta 1 reveals that Apple is working on bringing web push notifications to Safari on iPhone....
🌐
MagicBell
magicbell.com › blog › best-practices-for-ios-pwa-push-notifications
4 Best Practices for iOS PWA Push Notifications
Discover best practices for creating effective iOS PWA push notifications, from messaging to frequency and more.
🌐
Apple Developer
developer.apple.com › forums › thread › 732594
PWA push notifications on iOS | Apple Developer Forums
I have a PWA with notification system working well on any other device including MacBook. But my customers start to complain that they don't receive any notification on their iphone. I checked with a friend iPhone XR with iOS 16.5.1 installed on it. And it seems that web push notifications are still deactivated in the experimental features.
🌐
PushEngage
pushengage.com › home › docs › getting started › setting up web push notifications on ios and ipados
Setting Up Web Push Notifications on iOS and iPadOS - PushEngage
April 16, 2025 - The user needs to install the web app to their Home Screen by tapping the Share button to open the Share menu, and then tapping “Add to Home Screen”. A user gesture, such as a click or tap on a button is required to show the native permission ...