Firebase 擴展執行一項特定任務或一組任務,以響應 HTTP 請求或觸發來自其他 Firebase 和 Google 產品(例如 Firebase Cloud Messaging、Cloud Firestore 或 Pub/Sub)的事件。
您可以構建自己的擴展供個人使用或在 Firebase Extensions Hub 中與全世界共享。例如,您的擴展程序可以執行您的應用程序經常需要的特定任務,或者可以更輕鬆地訪問您公司的 API 之一。構建擴展後,您可以與其他人共享。這些用戶可以安裝和配置該擴展以在自己的 Firebase 項目中使用。
擴展的結構
您可以將擴展視為具有三個主要組件:
- JavaScript 或 TypeScript 格式的 Cloud Functions 代碼
- 描述您的擴展的元數據
- 幫助您的用戶配置和使用您的擴展的文檔
要開發擴展,您可以將這些組件組裝成以下結構:
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
目錄包含 JavaScript 或 TypeScript 格式的 Cloud Functions 代碼。這是執行擴展程序任務以響應 Firebase 和 Google 服務觸發的事件的代碼。 -
extension.yaml
文件包含有關您的擴展的元數據,例如其觸發器和 IAM 訪問角色,以及您希望用戶可配置的任何參數。 -
PREINSTALL
、POSTINSTALL
和CHANGELOG
文件是您的擴展必須具有的最少文檔。這些文件可幫助您的用戶了解您的擴展程序的用途、如何使用它以及您進行了哪些更新。您還應該提供一個圖標來幫助用戶識別您的擴展程序。當用戶瀏覽、安裝和管理您的擴展程序時,Firebase 控制台、Firebase CLI 和擴展中心會顯示這些文件的內容。
創建擴展後,您可以使用 Firebase CLI 將其安裝到項目中或將其發佈到擴展中心,任何人都可以在其中發現它並將其安裝到其項目中。
我的擴展程序可以與哪些產品交互?
由於 Firebase 擴展程序使用 Cloud Functions 進行工作,因此您可以通過兩種方式思考可能的集成問題:哪些產品可以觸發我的擴展程序的功能?一旦觸發,我的擴展程序的功能可以與哪些產品交互?
支持的功能觸發器
手動觸發器
首先,您可以手動觸發一個函數。 Firebase Extensions 和 Cloud Functions 支持兩種手動觸發函數的方式:
- HTTP 觸發器:將函數部署到 HTTP 端點
- 可調用函數:使用 Firebase 客戶端 SDK 直接從 iOS、Android 或 Web 客戶端代碼調用您的 Cloud Functions。
通過從擴展程序公開 HTTP 端點,您的擴展程序可以與任何支持 Webhook 的 Web 服務集成。借助可調用函數,安裝您的擴展程序的用戶可以使用 Firebase SDK 作為客戶端庫來訪問您的擴展程序實現的 API。
Firebase 服務觸發器
大多數 Firebase 產品都會發出可以觸發擴展程序的 Cloud Functions 的事件。
- Analytics:當 Analytics 記錄事件時觸發函數
- 應用程序分發:當應用程序分發觸發警報時觸發功能
- 認證:用戶創建、刪除賬戶時觸發功能
- Cloud Firestore:創建、更新或刪除頁面時觸發函數
- 雲存儲:當對像上傳、歸檔或從存儲桶中刪除時觸發函數
- Crashlytics:當 Crashlytics 觸發警報時觸發函數
- 性能監控:當性能監控觸發警報時觸發功能
- 實時數據庫:創建、更新或刪除數據時觸發函數
- 遠程配置:參數更新時觸發功能
- 測試實驗室:當測試實驗室觸發警報時觸發功能
Google Cloud 服務觸發器
擴展程序還可以包含觸發多個非 Firebase Google Cloud 服務的函數:
- Cloud Pub/Sub :擴展可以包含在事件發佈到可配置的 Pub/Sub 主題時觸發的函數。
- Cloud Scheduler :擴展可以包含按設定時間表運行的功能
- 雲任務:擴展可以包含可以使用雲任務排隊的函數。 Firebase Extensions 使用此功能,讓您作為擴展作者編寫響應擴展“生命週期”事件的函數:首次安裝在項目中、升級到新版本以及重新配置。
- Eventarc :擴展可以包含在事件發佈到可配置的 Eventarc 通道時觸發的函數;相反,擴展可以將其自己的事件發佈到 Eventarc 通道,以便用戶能夠定義自己的從擴展的事件觸發的函數。
從功能上支持
一旦擴展的雲功能被觸發,可能的集成範圍通常是開放的。以下是您可以通過雲函數執行的一些操作:
- 讀取、寫入或以其他方式與使用受支持的 IAM 角色的任何Firebase或Google Cloud服務進行交互。
- 使用任何提供 Web API 的第三方服務。
- 如果您提供 Web API,請使用您的自定義服務。
- 運行大多數 JavaScript 庫,包括TensorFlow.js 、 Express.js等。
如何構建擴展
入門教程將引導您完成構建、測試和發布完整擴展的過程,並且是學習如何構建擴展的推薦方法。
完成一次入門指南後,您可以參考各個主題指南,其中解釋了構建您自己的擴展所涉及的每項任務: