Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Push Notifications in PWAs

Introduction

Push Notifications are a powerful feature in Progressive Web Apps (PWAs) that allow developers to send real-time messages to users even when the app is not active. This lesson covers the fundamentals of implementing push notifications in PWAs, including key concepts and practical steps.

What are Push Notifications?

Push notifications are messages sent from a server to a client application. They can be used to inform users about updates, promotions, or new content, enhancing user engagement.

Note: Push notifications require user permission and can only be sent when the user has opted in.

How Do They Work?

Push notifications in PWAs operate using the following components:

  1. **Service Worker**: A script that runs in the background and manages the push messages.
  2. **Push API**: Allows the server to send notifications to the service worker.
  3. **Notification API**: Displays the notifications to the user.

Flowchart of Push Notification Workflow


        graph TD;
            A[User visits PWA] --> B{User grants permission?};
            B -- Yes --> C[Register Service Worker];
            B -- No --> D[End];
            C --> E[Subscribe to Push Notifications];
            E --> F[Send Push Message from Server];
            F --> G[Service Worker receives message];
            G --> H[Display Notification to User];
    

Implementing Push Notifications

Step 1: Registering a Service Worker


        if ('serviceWorker' in navigator) {
            navigator.serviceWorker.register('/sw.js')
                .then(function(reg) {
                    console.log('Service Worker registered:', reg);
                })
                .catch(function(error) {
                    console.error('Service Worker registration failed:', error);
                });
        }
    

Step 2: Requesting Permission for Notifications


        Notification.requestPermission().then(function(permission) {
            if (permission === 'granted') {
                console.log('Notification permission granted.');
            }
        });
    

Step 3: Subscribing to Push Notifications


        const applicationServerKey = urlB64ToUint8Array('');
        navigator.serviceWorker.ready.then(function(registration) {
            registration.pushManager.subscribe({
                userVisibleOnly: true,
                applicationServerKey: applicationServerKey
            }).then(function(subscription) {
                console.log('User is subscribed:', subscription);
            }).catch(function(error) {
                console.error('Failed to subscribe user:', error);
            });
        });
    

Best Practices

  • Always ask for user permission before sending notifications.
  • Use concise and clear messaging to enhance user experience.
  • Provide an option to unsubscribe from notifications easily.
  • Consider the timing and frequency of notifications to avoid spamming users.

FAQ

What browsers support push notifications in PWAs?

Most modern browsers, including Chrome, Firefox, and Edge, support push notifications. However, always check for compatibility.

Can I send push notifications without a server?

No, a server is required to send push notifications to the client application.

What is a VAPID key?

VAPID (Voluntary Application Server Identification) keys are used to identify your server to push services.