JS Push Notifications on iOS

Push notifications are a great way to keep users engaged with your web application even when they're not actively using it. In this tutorial, I will guide you on how to use push notifications in JavaScript.

Register for a Push Notification Service

To use push notifications, you need to register for a push notification service. Some popular services include Firebase Cloud Messaging, OneSignal, and Pusher. These services provide APIs for sending and receiving push notifications.

Ask for User Permission

Before you can send push notifications, you need to get the user's permission. This is done using the Notification API in JavaScript. Here's an example of how to ask for permission:

1if (Notification.permission === "default") {
2  Notification.requestPermission().then(function (permission) {
3    if (permission === "granted") {
4      console.log("Permission granted");
5    }
6  });
7}

This code checks the current permission status and, if necessary, prompts the user for permission. If the user grants permission, a message is logged to the console.

Create a Service Worker

To receive push notifications, you need to create a service worker. A service worker is a JavaScript file that runs in the background of your web application, independent of the user interface. Here's an example of how to create a service worker:

 1self.addEventListener("push", function (event) {
 2  if (event.data) {
 3    console.log("Push notification received", event.data.text());
 4    const title = "My Web App";
 5    const options = {
 6      body: event.data.text(),
 7      icon: "/path/to/icon.png",
 8    };
 9    event.waitUntil(self.registration.showNotification(title, options));
10  } else {
11    console.log("Push notification received but no data");
12  }
13});

This code listens for the push event and displays a notification when a push notification is received. The notification includes a title, body, and icon.

Send Push Notifications

To send a push notification, you need to use the API provided by your push notification service. Here's an example of how to send a push notification using Firebase Cloud Messaging:

 1fetch("https://fcm.googleapis.com/fcm/send", {
 2  method: "POST",
 3  headers: {
 4    "Content-Type": "application/json",
 5    Authorization: "key=<YOUR_SERVER_KEY>",
 6  },
 7  body: JSON.stringify({
 8    to: "<DEVICE_REGISTRATION_TOKEN>",
 9    notification: {
10      title: "My Web App",
11      body: "New message received",
12      icon: "/path/to/icon.png",
13    },
14  }),
15})
16  .then(function (response) {
17    console.log("Push notification sent", response);
18  })
19  .catch(function (error) {
20    console.error("Error sending push notification", error);
21  });

This code sends a push notification to the device with the specified registration token. The notification includes a title, body, and icon.

Handle Clicks on Notifications

When the user clicks on a notification, you can handle the event in your service worker. Here's an example of how to handle clicks on notifications:

1self.addEventListener("notificationclick", function (event) {
2  console.log("Notification clicked");
3  event.notification.close();
4  event.waitUntil(clients.openWindow("https://mywebapp.com"));
5});

This code listens for the notificationclick event and closes the notification when it's clicked. It also opens a new window to the specified URL.