扩展程序发布商概览

Firebase Extensions 扩展程序可用来执行一个或一组特定任务,以响应 HTTP 请求或来自其他 Firebase 和 Google 产品(如 Firebase Cloud Messaging、Cloud Firestore 或 Pub/Sub)的触发性事件。

您可以构建自己的扩展程序供个人使用,也可以通过 Firebase Extensions Hub 将其分享给世界各地的用户。例如,您的扩展程序可以执行一项您的应用经常需要的特定任务,或者可让您的应用更轻松地访问公司的某项 API。构建扩展程序后,您可以将其分享给其他人;以便他们可以在自己的 Firebase 项目中安装、配置并使用您的扩展程序。

扩展程序的结构

您可以将扩展程序视为包含三大组成部分:

  • Cloud Functions 函数代码(采用 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 访问角色),以及您希望让用户可以配置的任何参数。
  • PREINSTALLPOSTINSTALLCHANGELOG 文件是您的扩展程序必须包含的文档。这些文件有助于您的用户了解扩展程序的用途、扩展程序的使用方式,以及您进行过哪些更新。您还应提供一个图标来帮助用户识别您的扩展程序。在用户探索、安装和管理您的扩展程序时,Firebase 控制台、Firebase CLI 和 Extensions Hub 都会显示这些文件的内容。

创建扩展程序后,您可以使用 Firebase CLI 将其安装到项目中,也可以将其发布到 Extensions Hub,在这里,任何人都可以发现该扩展程序并将其安装到自己的项目中。

我的扩展程序可以与哪些产品交互?

由于 Firebase Extensions 扩展程序是使用 Cloud Functions 函数来执行任务,因此您可以从下面两个方面来考虑可能的集成问题:哪些产品可能会触发扩展程序的函数?在这些函数被触发后,它们又可以与哪些产品交互?

支持的函数触发器

手动触发器

首先,您可以手动触发函数。Firebase Extensions 扩展程序和 Cloud Functions 函数支持通过下面两种方式来手动触发函数:

  • HTTP 触发器:将函数部署到 HTTP 端点
  • Callable 函数:使用 Firebase 客户端 SDK 直接通过 iOS、Android 或 Web 客户端代码调用 Cloud Functions 函数。

从您的扩展程序公开 HTTP 端点后,扩展程序就能够与支持 webhook 的 Web 服务进行集成。若是使用 Callable 函数,安装了您的扩展程序的用户则可以使用 Firebase SDK 作为客户端库来访问您的扩展程序实现的 API。

Firebase 服务触发器

大多数 Firebase 产品发出的事件都可以触发扩展程序的 Cloud Functions 函数。

  • Analytics:在 Analytics 记录事件时触发函数
  • App Distribution:在 App Distribution 触发提醒时触发函数
  • Authentication:在用户创建和删除帐号时触发函数
  • Cloud Firestore:在有页面被创建、更新或删除时触发函数
  • Cloud Storage:在存储桶中有对象被上传、归档或删除时触发函数
  • Crashlytics:在 Crashlytics 触发提醒时触发函数
  • Performance Monitoring:在 Performance Monitoring 触发提醒时触发函数
  • Realtime Database:在有数据被创建、更新或删除时触发函数
  • Remote Config:在有参数被更新时触发函数
  • Test Lab:在 Test Lab 触发提醒时触发函数

Google Cloud 服务触发器

扩展程序还可以包含由一些 Google Cloud 服务(非 Firebase 服务)触发的函数:

  • Cloud Pub/Sub:扩展程序可以包含在有事件被发布到可配置的 Pub/Sub 主题时触发的函数。
  • Cloud Scheduler:扩展程序可以包含按设定的时间表运行的函数
  • Cloud Tasks:扩展程序可以包含可使用 Cloud Tasks 加入队列的函数。Firebase Extensions 扩展程序有了这一功能后,您作为扩展程序的创作者,可以编写函数来响应扩展程序的“生命周期”事件:首次在项目中安装时、升级到新版本时、进行重新配置时。
  • Eventarc:扩展程序可以包含在有事件被发布到可配置的 Eventarc 渠道时触发的函数;反之,扩展程序亦可以将自己的事件发布到 Eventarc 渠道,以便用户可以定义自己的函数来响应扩展程序的事件。

受函数支持

扩展程序的 Cloud Functions 函数被触发后,基本就可以进行自由集成。下面介绍了 Cloud Functions 函数的一些主要用法:

  • 与使用受支持的 IAM 角色的任何 FirebaseGoogle Cloud 服务进行读写及其他方式的交互。
  • 与提供了 Web API 的任何第三方服务进行交互。
  • 与您自己的自定义服务进行交互(如果您提供了 Web API)。
  • 运行大多数 JavaScript 库,包括 TensorFlow.jsExpress.js 等。

如何构建扩展程序

使用入门教程将引导您完成构建、测试和发布完整扩展程序的流程,同时也是了解如何构建扩展程序的推荐方法。

使用入门

在通读使用入门指南后,您可以参考各个主题指南,这些具体的指南会介绍构建您自己的扩展程序所涉及的每项任务: