API JavaScript FCM позволяет получать уведомления в веб-приложениях, работающих в браузерах, которые поддерживают API Push . Это включает версии браузеров, перечисленные в этой матрице поддержки , и расширения Chrome через API Push.
FCM SDK поддерживается только на страницах, обслуживаемых через HTTPS. Это связано с использованием service worker, которые доступны только на сайтах 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 использует веб-учетные данные, называемые «Voluntary Application Server Identification» или ключами «VAPID», для авторизации отправки запросов на поддерживаемые веб-службы push-уведомлений. Чтобы подписать приложение на push-уведомления, вам необходимо связать пару ключей с вашим проектом Firebase. Вы можете либо сгенерировать новую пару ключей, либо импортировать существующую пару ключей через Firebase Console.
Сгенерировать новую пару ключей
- Откройте вкладку «Cloud Messaging» на панели настроек консоли Firebase и прокрутите до раздела «Web-конфигурация» .
- На вкладке Web Push certificates нажмите Generate Key Pair . Консоль отобразит уведомление о том, что пара ключей была сгенерирована, а также отобразит строку открытого ключа и дату добавления.
Импортировать существующую пару ключей
Если у вас есть существующая пара ключей, которую вы уже используете с вашим веб-приложением, вы можете импортировать ее в FCM , чтобы иметь доступ к существующим экземплярам веб-приложения через API FCM . Для импорта ключей у вас должен быть доступ на уровне владельца к проекту Firebase. Импортируйте ваш существующий открытый и закрытый ключ в безопасной для URL-адресов форме base64:
- Откройте вкладку «Cloud Messaging» на панели настроек консоли Firebase и прокрутите до раздела «Web-конфигурация» .
- На вкладке «Сертификаты 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 для Web (JavaScript):
- Добавьте в свое приложение функцию получения сообщений .
- Попробуйте одно из наших руководств: Отправка первого сообщения в фоновое приложение или Отправка сообщений на несколько устройств .
- Ознакомьтесь с полным примером на GitHub .
- Просмотрите справочник по JavaScript .
- Посмотрите видеоинструкцию по внедрению API.