Hello folks,
Request for testing: The next ntfy server release will contain a progressive web app (PWA) with Web Push support, which means you’ll be able to install the ntfy web app on your desktop or phone similar to a native app (even on iOS! 🥳), and get basic push notification support (without any battery drain).
Installing the PWA gives ntfy web its own launcher (e.g. shortcut on Windows, app on macOS, launcher shortcut on Linux, home screen icon on iOS, and launcher icon on Android), a standalone window, push notifications, and an app badge with the unread notification count.
Testing instructions: The (hopefully) production ready version of the PWA is currently deployed on https://staging.ntfy.sh/app – Install instructions with screenshots can be found in the docs (https://docs.ntfy.sh/subscribe/pwa/).
Please report bugs or issues on Discord, Matrix, or Lemmy (!ntfy@discuss.ntfy.sh). PLEASE HELP TEST
Huuuuge thanks goes to @nimbleghost for developing this entire feature top to bottom. If you throw donations (GitHub Sponsors or Liberapay) my way, I’ll share them with him. He certainly deserves it for all this great work. 👏
– If you don’t know what ntfy is: ntfy (pronounce: notify) is a simple HTTP-based pub-sub notification service. You can use it to send push notifications to your phone via HTTP PUT/POST. You can selfhost it or use the hosted version on ntfy.sh
Hmm. It doesn’t seem to work on iOS 15.7.7 with SE first gen. After adding app to desktop it behaves just as standard browser window with address bar visible constantly on the screen etc. Other app that uses PWA works well ex. miniflux, snappymail. I know that push notifications won’t work below iOS 16 however there are some tweaks with changing safari variables but doesn’t work either.
It only works with 16.4 afaik.
On iOS it says
Notifications not supported Notifications are not supported in your browser
This is cool! Do PWA push notifications bypass the need for the centralised Apple/Android services?
No. Web Push is a spec implemented by all browsers that allows servers to push notifications to the browser via their own push service. Each browser ships with its own hardcoded web push endpoints. Chrome uses FCM under the hood, Firefox uses some Mozilla servers, and so on.
However, all messages are encrypted with a key that the push servers do not know. Only your server and your browser do.
Thanks for the reply. I was hoping this might be a way to allow servers without an internet connection to still deliver push notifications to clients.
Sadly no. I must admit I was incredibly disappointed by the webpush spec. ntfy could easily be a push service, but the spec does not allow that. You cannot override your own server.
dammit. thanks for the info!
Can’t you have the same mechanism to avoid battery drain on the native app with our own server? I mean server pushing notifications? Why should it drain more battery than using the ‘external’ server with push?
As far as I’ve understood, the only way to reliably push to Android devices in sleep is via Google’s Firebase Cloud Messaging service. Google controls access to this service and only the main
ntfy.sh
host uses this (can use this?).EDIT: Oh wow, the docs for this tool are really good! Apparently, you can also add FCM to your own instance.