Как интегрировать push-уведомления в PWA
Опубликовано: 2021-04-28Оглавление
В нашем сегодняшнем руководстве мы будем интегрировать push-уведомления в PWA с помощью Firebase или, точнее, с помощью функции облачных сообщений внутри него, которая позволяет отправлять сообщения с использованием HTTPS-запросов.
Прогрессивные веб-приложения и push-уведомления
Поскольку прогрессивное веб-приложение представляет собой постоянно меняющееся движение, неудивительно, что сама технология стала наравне (по функциям) со своим родным приложением.
Рекомендуемая литература: PWA vs Native: что вам больше подходит?
Триггеры уведомлений дают разработчикам возможность планировать уведомления, даже если устройство пользователя находится в режиме полета.
Джон Крафчик, Chrome Dev Summit 2019

Со всеми этими радикальными изменениями было бы расточительством не воспользоваться ими для увеличения дохода вашего PWA. И это даже не что-то слишком сложное, так как вы можете легко настроить собственную функцию push-уведомлений, используя этот учебник.
Рекомендуемая литература: 9 обязательных функций прогрессивного веб-приложения (PWA) для электронной коммерции
Как интегрировать Push-уведомления в PWA
В нашем сегодняшнем руководстве мы будем интегрировать push-уведомления в PWA с помощью Firebase , в частности, функцию облачных сообщений , которая позволяет отправлять сообщения с использованием HTTPS-запросов.
Предпосылки
- Учетная запись Firebase (поскольку вы будете создавать проект в Firebase)
- Прогрессивное веб-приложение. Для упрощенной демонстрации мы будем использовать приложение create-react-app, которое представляет собой базовое PWA, которое можно создать с помощью команды

Шаг 1. Создайте базовое PWA
Поскольку мы будем создавать базовое PWA с помощью приложения create-react-app, давайте сначала загрузим NodeJS. После завершения установки NodeJS откройте командную строку NodeJS и выполните следующие команды.
Чтобы создать простое приложение React в указанном вами каталоге:
npx создать-реагировать-приложение ваш-pwa-каталог
Измените текущий рабочий каталог на только что созданное приложение React:
cd ваш-pwa-каталог
Добавьте библиотеку JavaScript Firebase в проект:
npm установить firebase --save

Шаг 2: Создайте свой push-notification.js
Следующим шагом будет создание модуля, который будет отвечать за всю обработку ваших уведомлений. В <your-pwa-directory>\src создайте файл с именем push-notification.js .
Во-первых, давайте создадим функцию, которая инициализирует Firebase и передает ключи вашего проекта. Вы можете найти ключи для своего проекта, перейдя в Firebase > Обзор проекта > Настройки проекта и нажав на этот значок:

Это направит вас на другую страницу, содержащую Firebase SDK для вашего PWA:

Теперь, когда у нас есть ключи для нашего проекта, давайте добавим следующий код в ваш push-notification.js .
импортировать firebase из «firebase»;
экспортировать константу initializeFirebase = () => {
firebase.initializeApp({
APIKey: "ХХХХХХХХХХХ",
authDomain: "ХХХХХХХХХХХ",
URL-адрес базы данных: "ХХХХХХХХХХХ",
ID проекта: "ХХХХХХХХХХХ",
storageBucket: "ХХХХХХХХХХХ",
идентификатор отправителя сообщений: "XXXXXXXXXXXXXXX",
идентификатор приложения: "ХХХХХХХХХХХ"
});
} С этим вы создали функцию, отвечающую за всю вашу обработку уведомлений, теперь вам нужно импортировать и вызывать ее. Отредактируйте свой index.js следующим образом:
импортировать React из «реагировать»;
импортировать ReactDOM из 'react-dom';
импортировать './index.css';
импортировать приложение из './App';
импортировать * как serviceWorkerRegistration из './serviceWorkerRegistration';
импортировать reportWebVitals из './reportWebVitals';
импортировать firebase из «firebase»;
импортировать {initializeFirebase} из './push-notification';
ReactDOM.render(<App/>, document.getElementById('root'));
инициализироватьFirebase();Шаг 3. Создайте сервис-воркера
Service Workers — это название технологии, лежащей в основе прогрессивного веб-приложения, которая поддерживает его автономные возможности, push-уведомления и кэширование ресурсов.
SimiCart, все, что вам нужно знать о прогрессивных веб-приложениях
Service Worker требуется для получения события onMessage и, следовательно, для отправки уведомлений на устройство пользователя. По умолчанию Firebase автоматически ищет файл с именем firebase-messaging-sw.js .

Давайте добавим firebase-messaging-sw.js в каталог, где обслуживаются ваши файлы. Поскольку наш проект create-react-app , этот firebase-messaging-sw.js будет находиться в нашей общей папке:
importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-messaging.js');
firebase.initializeApp({
APIKey: "ХХХХХХХХХХХ",
authDomain: "ХХХХХХХХХХХ",
URL-адрес базы данных: "ХХХХХХХХХХХ",
ID проекта: "ХХХХХХХХХХХ",
storageBucket: "ХХХХХХХХХХХ",
идентификатор отправителя сообщений: "XXXXXXXXXXXXXXX",
идентификатор приложения: "ХХХХХХХХХХХ"
});
постоянный обмен сообщениями = firebase.messaging();Если вы еще не слышали об PWA Service Worker, у нас есть эксклюзивная статья, в которой вы узнаете все об этой удивительной технологии.
Шаг 4. Запросите разрешения пользователя на отправку уведомлений
Это век конфиденциальности, и вы не хотите раздражать своих пользователей, отправляя нежелательные и несанкционированные уведомления!
Чтобы запросить разрешение вашего пользователя, просто добавьте это в свой push-notification.js :
импортировать firebase из «firebase»;
экспортировать константу initializeFirebase = () => {
firebase.initializeApp({
APIKey: "ХХХХХХХХХХХ",
authDomain: "ХХХХХХХХХХХ",
URL-адрес базы данных: "ХХХХХХХХХХХ",
ID проекта: "ХХХХХХХХХХХ",
storageBucket: "ХХХХХХХХХХХ",
идентификатор отправителя сообщений: "XXXXXXXXXXXXXXX",
идентификатор приложения: "ХХХХХХХХХХХ"
});
}
export const askForPermissionToReceiveNotifications = async () => {
пытаться {
постоянный обмен сообщениями = firebase.messaging();
ждать сообщения.requestPermission();
константный токен = ожидание сообщений.getToken();
console.log('Ваш токен:', токен);
токен возврата;
} поймать (ошибка) {
консоль.ошибка(ошибка);
}
} А так как эту функцию нужно будет откуда-то вызывать, то добавим ее по нажатию кнопки. Отредактируйте файл app.js в вашем каталоге /src/ следующим образом:
импортировать логотип из './logo.svg';
импортировать './App.css';
import { askForPermissionToReceiveNotifications } из './push-notification';
приложение функции () {
возвращаться (
<div className="Приложение">
<header className="Заголовок приложения">
<img src={logo} className="App-logo" alt="logo" />
<p>
Отредактируйте <code>src/App.js</code> и сохраните для перезагрузки.
</p>
<а
className="Ссылка на приложение"
href="https://reactjs.org"
цель = "_ пусто"
rel="noopener noreferrer"
>
Изучите реакцию
</a>
<button onClick={askForPermissionToReceiveNotifications} >
Нажмите, чтобы получать уведомления
</кнопка>
</заголовок>
</div>
);
}
экспортировать приложение по умолчанию;Теперь давайте запустим наш проект, и вы должны увидеть кнопку « Нажмите, чтобы получать уведомления », например:

Нажмите на кнопку, и вы должны увидеть всплывающее окно с запросом вашего разрешения:

Нажмите « Разрешить » и проверьте консоль браузера. Вы должны увидеть сообщение, уведомляющее вас о вашем токене:

Теперь сохраните этот токен в другом месте, потому что он понадобится вам на следующем шаге.
Шаг 5: Отправляйте push-уведомления с помощью Postman
В следующих шагах мы будем использовать Postman для отправки уведомлений с помощью службы облачных сообщений Firebase.
В Postman создайте запрос POST со следующей информацией:
- URL-адрес запроса : https://fcm.googleapis.com/fcm/send
- Заголовки : в заголовках вашего запроса POST вам понадобятся следующие ключи:
Авторизация: ключ= SERVER_KEY
Тип содержимого : приложение/json

Примечания : SERVER_KEY можно найти на вкладке Cloud Messaging в настройках Firebase.
- Body : заполните тело вашего POST-запроса следующим кодом:
{
"уведомление": {
"title": "СимиКарт",
"body": "Тестовое push-уведомление",
"click_action": "http://localhost:3000/",
"значок": "https://i.imgur.com/5zO5cce.png"
}
"кому": "USER_TOKEN"
} Замените USER_TOKEN токеном, который вы получили (нажав кнопку « Нажмите для получения уведомлений ») на шаге 4. Не забудьте выбрать «Тип тела» как « сырой » и « JSON ».

Теперь нажмите « Отправить », и вы должны увидеть всплывающее уведомление в правом нижнем углу:

Примечания . Эти уведомления появляются только тогда, когда приложение находится в фоновом режиме или свернуто.
Поздравляем! Теперь ваше PWA может отправлять уведомления!
Вывод
Мы надеемся, что после этого руководства вы теперь сможете уверенно настроить собственную функцию push-уведомлений. Будучи новой технологией, прогрессивные веб-приложения, безусловно, сложны для пользователей, не разбирающихся в технологиях, поэтому существуют легкодоступные поставщики решений, такие как SimiCart, которые могут позаботиться обо всех ваших потребностях благодаря нашему многолетнему опыту работы с PWA.
