What are web push notifications?
You probably know what mobile push notifications are. On your phone, there’s a notification center, which shows things like “Remember to practice French today!” (sent by Duolingo to your Duolingo app instance), or “Could you review the Goat & Boot pub?” (sent Google to your Google Maps app instance). Your app instances can ask you for permission to receive these push notifications. If you authorize it, your phone will display notifications which the app developers send to that app instance.
The same technology exists for browsers! Websites can ask you for permission to receive push notifications. If you authorize it, your browser will display notifications which the website owner sends to your browser.
There are two APIs: the Push API and the Notification API. The Push API enables data to be sent from website operators to your browser. The Notification API lets web apps on your browser to display system-level notifications, outside of any webpage viewport. In mobile push notifications, these two separate pieces of functionality are confused and mixed together.
The mobile OS operators operate central push notification gateways. Apple has one called APNs, and Google has one called FCM. These gateways are central internet services which mobile app instances can subscribe to and app developers can publish to.
With Vidrio
With generic competitor
More by Jim
- Your syntax highlighter is wrong
- Granddad died today
- The Three Ts of Time, Thought and Typing: measuring cost on the web
- I hate telephones
- The sorry state of OpenSSL usability
- The dots do matter: how to scam a Gmail user
- My parents are Flat-Earthers
- How Hacker News stays interesting
- Project C-43: the lost origins of asymmetric crypto
- The hacker hype cycle
- The inception bar: a new phishing method
- Time is running out to catch COVID-19
- A probabilistic pub quiz for nerds
- Smear phishing: a new Android vulnerability
Tagged . All content copyright James Fisher 2017. This post is not associated with my employer. Found an error? Edit this page.