Расширение Firebase выполняет определенную задачу или набор задач в ответ на HTTP-запросы или инициирует события из других продуктов Firebase и Google, таких как Firebase Cloud Messaging, Cloud Firestore или Pub/Sub.
Вы можете создать собственное расширение для личного использования или поделиться им со всем миром в Firebase Extensions Hub. Например, расширение может выполнять определённую задачу, которая регулярно требуется вашему приложению, или упростить доступ к одному из API вашей компании. После создания расширения вы можете поделиться им с другими пользователями. Эти пользователи могут установить и настроить расширение для использования в своих проектах Firebase.
Структура расширения
Расширение можно представить как состоящее из трех основных компонентов:
- Код облачных функций на JavaScript или TypeScript
- Метаданные, описывающие ваше расширение
- Документация, которая поможет вашим пользователям настроить и использовать ваше расширение
Чтобы разработать расширение, вы собираете эти компоненты в следующую структуру:
example-extension
├── functions
│ ├── integration-tests
│ │ ├── extensions
│ │ │ └── example-extension.env
│ │ ├── firebase.json
│ │ └── integration-test.spec.js
│ ├── index.js
│ └── package.json
├── README.md
├── PREINSTALL.md
├── POSTINSTALL.md
├── CHANGELOG.md
├── icon.png
└── extension.yaml
- Каталог
functions
содержит код Cloud Functions на JavaScript или TypeScript. Этот код выполняет задачи расширения в ответ на события, инициируемые Firebase и сервисами Google. - Файл
extension.yaml
содержит метаданные о вашем расширении, такие как его триггеры и роли доступа IAM, а также любые параметры, которые вы хотите сделать настраиваемыми пользователем. - Файлы
PREINSTALL
,POSTINSTALL
иCHANGELOG
— это минимальный набор документации, который должен быть у вашего расширения. Эти файлы помогают пользователям узнать, что делает ваше расширение, как его использовать и какие обновления вы внесли. Также следует предоставить значок, чтобы пользователи могли легко распознать ваше расширение. Консоль Firebase, интерфейс командной строки Firebase и Центр расширений отображают содержимое этих файлов, когда пользователи просматривают, устанавливают и управляют вашим расширением.
После создания расширения вы можете использовать Firebase CLI для его установки в проект или опубликовать его в Extensions Hub, где любой желающий сможет найти его и установить в свои проекты.
С какими продуктами может взаимодействовать мое расширение?
Поскольку расширение Firebase работает с использованием Cloud Functions, можно рассматривать вопрос о возможной интеграции двумя способами: какие продукты могут запускать функции моего расширения? и с какими продуктами могут взаимодействовать функции моего расширения после запуска?
Поддерживаемые функции триггеров
Ручные триггеры
Прежде всего, вы можете вручную запустить функцию. Расширения Firebase и Cloud Functions поддерживают два способа ручного запуска функций:
- HTTP-триггеры: развертывание функции в конечной точке HTTP
- Вызываемые функции: вызывайте облачные функции непосредственно из кода клиента iOS, Android или веб-клиента, используя клиентские SDK Firebase.
Благодаря предоставлению конечных точек HTTP из вашего расширения, оно потенциально может интегрироваться с любым веб-сервисом, поддерживающим веб-перехваты. Благодаря вызываемым функциям пользователи, установившие ваше расширение, могут использовать Firebase SDK в качестве клиентской библиотеки для доступа к API, реализуемому вашим расширением.
Триггеры службы Firebase
Большинство продуктов Firebase генерируют события, которые могут активировать облачные функции расширения.
- Аналитика: активировать функции, когда Analytics регистрирует событие
- App Distribution: активирует функции, когда App Distribution активирует оповещение
- Аутентификация: активация функций при создании и удалении учетных записей пользователями.
- Cloud Firestore: активирует функции при создании, обновлении или удалении страниц
- Облачное хранилище : активирует функции при загрузке, архивации или удалении объектов из контейнеров.
- Crashlytics: активирует функции, когда Crashlytics активирует оповещение
- Мониторинг производительности: активация функций, когда мониторинг производительности выдает оповещение
- База данных в реальном времени: активирует функции при создании, обновлении или удалении данных
- Удаленная настройка: запуск функций при обновлении параметра
- Test Lab: активирует функции, когда Test Lab активирует оповещение
Триггеры сервиса Google Cloud
Расширение также может включать функции, которые запускают несколько не-Firebase-сервисов Google Cloud:
- Cloud Pub/Sub : расширение может включать функции, которые срабатывают при публикации событий в настраиваемой теме Pub/Sub.
- Cloud Scheduler : расширение может включать функции, которые запускаются по заданному расписанию.
- Облачные задачи : расширение может включать функции, которые можно поставить в очередь с помощью облачных задач. Firebase Extensions использует эту возможность, чтобы позволить вам, как автору расширения, писать функции, реагирующие на события жизненного цикла расширения: первую установку в проект, обновление до новой версии и перенастройку.
- Eventarc : расширение может включать функции, которые запускаются при публикации событий в настраиваемом канале Eventarc; и наоборот, расширение может публиковать собственные события в канале Eventarc, чтобы пользователи могли определять собственные функции, которые запускаются из событий расширения .
Поддерживается функциями
После активации облачной функции расширения спектр возможных интеграций, как правило, открыт. Вот некоторые основные возможности облачной функции:
- Читайте, пишите и иным образом взаимодействуйте с любой службой Firebase или Google Cloud , которая использует поддерживаемую роль IAM .
- Работайте с любым сторонним сервисом , предоставляющим веб-API.
- Работайте с вашими пользовательскими сервисами, если вы предоставляете веб-API.
- Запускать большинство библиотек JavaScript, включая TensorFlow.js , Express.js и т. д.
Как построить пристройку
Учебное пособие « Начало работы» проведет вас через процесс создания, тестирования и публикации полноценного расширения и является рекомендуемым способом научиться его создавать.
После того как вы ознакомитесь с руководством по началу работы, вы можете обратиться к отдельным тематическим руководствам, в которых объясняется каждая из задач, связанных с созданием вашего собственного расширения:
- Написать функции для расширения
- Использовать параметры в расширении
- Настройте соответствующий доступ для расширения
- Реагирование на события жизненного цикла расширения
- Добавить пользовательские хуки к расширению
- Создайте пользовательскую документацию для вашего расширения
- Опубликуйте расширение в Extensions Hub
- Полная справка по extension.yaml