API JavaScript FCM позволяет получать уведомления в веб-приложениях, работающих в браузерах, поддерживающих Push API . Это относится к версиям браузеров, перечисленным в этой матрице поддержки , и расширениям Chrome, использующим Push API.
FCM SDK поддерживается только на страницах, работающих по протоколу HTTPS. Это связано с использованием сервис-воркеров, которые доступны только на сайтах HTTPS. Если вам нужен провайдер, рекомендуем Firebase Hosting , который предоставляет бесплатный HTTPS-хостинг на вашем домене.
Чтобы начать работу с FCM JavaScript API, вам необходимо добавить Firebase в свое веб-приложение и добавить логику для доступа к токенам регистрации.
Добавьте и инициализируйте FCM SDK
Если вы еще этого не сделали, установите Firebase JS SDK и инициализируйте Firebase .
Добавьте Firebase Cloud Messaging JS SDK и инициализируйте Firebase Cloud Messaging :
Web
import { initializeApp } from "firebase/app"; import { getMessaging } from "firebase/messaging"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Firebase Cloud Messaging and get a reference to the service const messaging = getMessaging(app);
Web
import firebase from "firebase/compat/app"; import "firebase/compat/messaging"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Firebase Cloud Messaging and get a reference to the service const messaging = firebase.messaging();
Если вы используете FCM для веб-приложений и хотите перейти на SDK 6.7.0 или более позднюю версию, необходимо включить API регистрации FCM для вашего проекта в Google Cloud Console. При включении API убедитесь, что вы вошли в Cloud Console с той же учётной записью Google, что и для Firebase, и выбрали правильный проект. В новых проектах, добавляющих FCM SDK, этот API включён по умолчанию.
Настройка веб-учетных данных с помощью FCM
Веб-интерфейс FCM использует веб-учётные данные, называемые ключами «добровольной идентификации сервера приложений» (VAPID), для авторизации отправки запросов к поддерживаемым службам push-уведомлений. Чтобы подписать приложение на push-уведомления, необходимо связать пару ключей с вашим проектом Firebase. Вы можете сгенерировать новую пару ключей или импортировать существующую пару ключей через консоль Firebase.
Сгенерировать новую пару ключей
- Откройте вкладку Cloud Messaging на панели настроек консоли Firebase и прокрутите до раздела Веб-конфигурация .
- На вкладке «Сертификаты Web Push» нажмите «Сгенерировать пару ключей» . В консоли отобразится уведомление о создании пары ключей, а также строка открытого ключа и дата добавления.
Импортировать существующую пару ключей
Если у вас есть пара ключей, которую вы уже используете в своём веб-приложении, вы можете импортировать её в FCM , чтобы получить доступ к существующим экземплярам веб-приложения через API FCM . Для импорта ключей вам необходим доступ на уровне владельца к проекту Firebase. Импортируйте существующие открытый и закрытый ключи в формате, безопасном для URL, закодированном в формате base64:
- Откройте вкладку Cloud Messaging на панели настроек консоли Firebase и прокрутите до раздела Веб-конфигурация .
- На вкладке «Сертификаты Web Push» найдите и выберите текст ссылки «импортировать существующую пару ключей».
- В диалоговом окне «Импорт пары ключей» введите открытый и закрытый ключи в соответствующие поля и нажмите кнопку «Импорт» . В консоли отобразится строка открытого ключа и дата его добавления.
Инструкции по добавлению ключа в приложение см. в разделе Настройка веб-учётных данных в приложении . Дополнительную информацию о формате ключей и их генерации см. в разделе Ключи сервера приложений .
Настройте веб-учетные данные в вашем приложении
Метод getToken(): Promise<string>
позволяет FCM использовать ключ VAPID при отправке запросов сообщений различным push-сервисам. Используя ключ, сгенерированный или импортированный в соответствии с инструкциями из статьи «Настройка веб-учётных данных с помощью FCM , добавьте его в код после получения объекта сообщения:
import { getMessaging, getToken } from "firebase/messaging";
const messaging = getMessaging();
// Add the public key generated from the console here.
getToken(messaging, {vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu"});
Доступ к регистрационному токену
Когда вам нужно получить текущий токен регистрации для экземпляра приложения, сначала запросите у пользователя разрешения на уведомления с помощью Notification.requestPermission()
. При вызове, как показано, этот метод возвращает токен, если разрешение предоставлено, или отклоняет обещание, если оно отклонено:
function requestPermission() { console.log('Requesting permission...'); Notification.requestPermission().then((permission) => { if (permission === 'granted') { console.log('Notification permission granted.');
FCM требуется файл firebase-messaging-sw.js
. Если у вас ещё нет файла firebase-messaging-sw.js
, создайте пустой файл с таким именем и поместите его в корневой каталог домена перед получением токена. Вы можете добавить содержательную информацию в файл позже, в процессе настройки клиента.
Чтобы получить текущий токен:
Web
import { getMessaging, getToken } from "firebase/messaging"; // Get registration token. Initially this makes a network call, once retrieved // subsequent calls to getToken will return from cache. const messaging = getMessaging(); getToken(messaging, { vapidKey: '<YOUR_PUBLIC_VAPID_KEY_HERE>' }).then((currentToken) => { if (currentToken) { // Send the token to your server and update the UI if necessary // ... } else { // Show permission request UI console.log('No registration token available. Request permission to generate one.'); // ... } }).catch((err) => { console.log('An error occurred while retrieving token. ', err); // ... });
Web
// Get registration token. Initially this makes a network call, once retrieved // subsequent calls to getToken will return from cache. messaging.getToken({ vapidKey: '<YOUR_PUBLIC_VAPID_KEY_HERE>' }).then((currentToken) => { if (currentToken) { // Send the token to your server and update the UI if necessary // ... } else { // Show permission request UI console.log('No registration token available. Request permission to generate one.'); // ... } }).catch((err) => { console.log('An error occurred while retrieving token. ', err); // ... });
Получив токен, отправьте его на сервер приложения и сохраните удобным для вас способом.
Следующие шаги
После завершения шагов настройки вот несколько вариантов дальнейшей работы с FCM for Web (JavaScript):
- Добавьте в свое приложение функционал для получения сообщений .
- Попробуйте одно из наших руководств: Отправка первого сообщения в фоновое приложение или Отправка сообщений на несколько устройств .
- Просмотрите полный пример на GitHub .
- Просмотрите справочник по JavaScript .
- Посмотрите видеоинструкцию по внедрению API.