Используйте Firebase Cloud Messaging (FCM) с chrome.gcm

Вы можете отправлять и получать сообщения конечным пользователям с помощью chrome.gcm . Поскольку он построен на базе Firebase Cloud Messaging (FCM), он использует внешнюю службу, которую необходимо настроить. Это руководство проведет вас через все необходимые шаги, чтобы заставить его работать в вашем расширении.

Хотя chrome.gcm все еще поддерживается , он был создан более десяти лет назад, до появления стандарта Push . В общем, всегда лучше использовать веб-стандарт, а не API-интерфейс конкретного расширения. Если у вас нет особой необходимости использовать chrome.gcm , мы рекомендуем использовать Push .

Предварительные условия

Чтобы использовать chrome.gcm , вам необходимо настроить учетную запись Firebase .

Домашняя страница Firebase.com.
Домашняя страница Firebase.com

После создания учетной записи вам нужно будет открыть консоль Firebase и выбрать существующий проект для использования или создать новый для вашего расширения.

Скриншот списка проектов на консоли Firebase.
Списки проектов на консоли Firebase

Перейдите на страницу настроек Cloud Messaging.

Снимок экрана: страница настроек Firebase Cloud Messaging.
Страница настроек Firebase Cloud Messaging

Если у вас уже есть учетная запись облачного обмена сообщениями в этом проекте, вы хотите скопировать указанный числовой идентификатор отправителя.

Если у вас не включен обмен облачными сообщениями, вам необходимо включить API Firebase Cloud Messaging для проекта внутри Google Cloud. На следующем изображении вы можете увидеть, где находится ссылка непосредственно на эту страницу в настройках Firebase.

Снимок экрана: расположение ссылки для включения Firebase Messaging API в Google Cloud.
Открытие ссылки на настройки Google Cloud в Firebase

После включения вернитесь на страницу настроек Cloud Messaging и скопируйте идентификатор отправителя.

Настроить chrome.gcm

Теперь, когда у вас есть идентификатор отправителя из Firebase, вы можете настроить свое расширение для прослушивания сообщений. Для начала убедитесь, что вы добавили разрешение gcm в manifest.json вашего расширения.json.

  {
    "manifest_version": 3,
    ...
    "permissions": ["gcm"]

Теперь у вас есть доступ к API chrome.gcm . Вы можете зарегистрироваться для прослушивания push-сообщений, вызвав chrome.gcm.register

Слушайте сообщения

После того как расширение зарегистрировало ваш идентификатор отправителя, вам необходимо добавить код для обработки входящих сообщений.

Firebase без Firebase

Хотя chrome.gcm всегда проходит через Firebase, Firebase можно настроить в качестве прокси-сервера для внешних поставщиков push-сообщений. Обычно поставщики явно указывают поддержку расширений Chrome, однако подойдет любой поставщик, который поддерживает push-уведомления Firebase Legacy. Если ваш провайдер указывает поддержку push-уведомлений Firebase Legacy, попробуйте это. Если у вас возникнут проблемы, служба поддержки провайдеров сможет разъяснить любые существующие ограничения.

О каналах и темах

chrome.gcm использует устаревшие API-интерфейсы обмена сообщениями Firebase. Это важно, поскольку устаревший API не поддерживает каналы сообщений . Каждое отправленное сообщение будет отправлено каждому клиенту. Если добавочный номер пользователя интересует только часть сообщений, вам придется фильтровать себя.

Хотя Firebase начинается с бесплатной учетной записи, с вас будет взиматься плата, как только вы превысите определенный порог использования. Если вы планируете отправлять сообщения определенным группам, то фильтрация на стороне клиента может стоить дороже, чем оправдано. Эту проблему можно обойти, создав несколько проектов для репликации отдельных каналов (один проект и один идентификатор отправителя для каждого канала). Любое расширение может зарегистрировать несколько идентификаторов отправителей, вплоть до 100.

В качестве альтернативы, если вам нужна поддержка каналов или вы хотите использовать push-уведомления без использования Firebase, вы можете использовать Push API .