Podczas tworzenia rozszerzenia jego logikę piszesz za pomocą Cloud Functions, w
podobny sposób, w jaki napisałbyś funkcję, która byłaby używana tylko w
Twoim projekcie. Funkcje deklarujesz w pliku extension.yaml. Gdy użytkownicy zainstalują Twoje rozszerzenie, te funkcje zostaną wdrożone w ich projekcie.
Ogólne informacje o korzystaniu z Cloud Functions znajdziesz w dokumentacji Cloud Functions.
1 i 2 generacji Cloud Functions
Firebase obsługuje Cloud Functions 1 i 2 generacjiCloud Functions. Rozszerzenia Firebase mają jednak obecnie pewne ograniczenia dotyczące tego, której generacji funkcji Cloud możesz używać w przypadku niektórych typów aktywatorów. Z tego powodu wiele rozszerzeń zawiera funkcje 1 i 2 generacji.
Obsługa generacji funkcji jest wymieniona poniżej w przypadku każdego typu aktywatora.
Specjalne uwagi
Niektóre definicje funkcji wymagają podania informacji, które są też określone w pliku
extension.yaml. Na przykład Cloud Firestore ma metodędocument(), która określa wzorzec dokumentu do obserwowania, a jej odpowiednia deklaracja wextension.yamlma poleresource, które określa to samo.W takich sytuacjach używana jest konfiguracja określona w pliku
extension.yaml, a konfiguracja określona w definicji funkcji jest ignorowana.Ze względu na dokumentację często określa się skonfigurowaną wartość w definicji funkcji. Przykłady na tej stronie są zgodne z tym wzorcem.
Pakiet SDK Cloud Functions 1 generacji ma metodę
functions.config()i polecenie CLIfunctions:config:set, których możesz używać do pracy z wartościami sparametryzowanymi w funkcjach 1 generacji. Ta technika jest przestarzała w Cloud Functions i w ogóle nie będzie działać w rozszerzeniu. Zamiast tego użyj modułufunctions.params(zalecane) lubprocess.env.
Korzystanie z TypeScript
Większość dokumentacji dotyczącej tworzenia własnego rozszerzenia opisuje przepływy pracy z użyciem JavaScript w Cloud Functions for Firebase. Możesz jednak pisać funkcje w TypeScript.
Wszystkie oficjalne Firebase rozszerzenia są napisane w TypeScript. Możesz je przejrzeć, aby poznać sprawdzone metody używania TypeScript w rozszerzeniu.
Jeśli piszesz funkcje rozszerzenia w TypeScript, przed zainstalowaniem rozszerzenia musisz wykonać te czynności:
Skompiluj kod źródłowy funkcji rozszerzenia do JavaScript.
Polecenie
firebase ext:dev:initcommand umożliwia wybranie TypeScript do pisania funkcji. Polecenie udostępnia kompletne rozszerzenie z możliwością zainstalowania a także skrypt kompilacji, który można uruchomić za pomocąnpm run build.W pliku
package.jsonupewnij się, że polemainwskazuje wygenerowany kod JavaScript.Jeśli instalujesz lub przesyłasz rozszerzenie z lokalnego źródła, najpierw skompiluj pliki TypeScript.
Obsługiwane aktywatory funkcji
Aktywatory HTTP
Funkcja aktywowana przez HTTP jest wdrażana w publicznym punkcie końcowym https i uruchamia się, gdy ten punkt końcowy jest dostępny.
Informacje o pisaniu funkcji aktywowanych przez HTTP znajdziesz w artykule Wywoływanie funkcji za pomocą żądań HTTP w Cloud Functions dokumentacji.
Definicja funkcji (tylko 1 generacja)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Funkcje wywoływane
Funkcje wywoływane są podobne do funkcji aktywowanych przez HTTP, ale implementują protokół, który ułatwia ich wywoływanie z kodu po stronie klienta.
Informacje o korzystaniu z funkcji wywoływanych znajdziesz w artykule Wywoływanie funkcji z aplikacji w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacja)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Aktywatory funkcji zaplanowanych
Funkcja zaplanowana jest uruchamiana wielokrotnie zgodnie z konfigurowalnym harmonogramem.
Informacje o pisaniu funkcji zaplanowanych znajdziesz w artykule Planowanie funkcji w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacja)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
Oto dostępne podpola dla scheduleTrigger:
| Pole | Opis |
|---|---|
schedule(required) |
Częstotliwość, z jaką ma być uruchamiana funkcja. To pole może zawierać ciągi znaków, które używają jednej z tych składni (wymagane jest otoczenie pojedynczymi cudzysłowami):
|
timeZone(optional) |
Strefa czasowa, w której będzie działać harmonogram.
|
Jeśli chcesz, aby użytkownicy mogli skonfigurować harmonogram podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji resource funkcji:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: ${SCHEDULE_FREQUENCY}
- name: anotherFunction
type: ...
params:
- param: SCHEDULE_FREQUENCY
label: Schedule
description: How often do you want to run yourFunctionName()?
type: string
default: 'every 5 minutes' # Specifying a default is optional.
required: true
Aktywatory kolejki zadań
Funkcja kolejki zadań jest aktywowana przez zdarzenia cyklu
życia rozszerzenia lub gdy zostanie ręcznie dodana do kolejki zadań rozszerzenia za pomocą metody TaskQueue.enqueue() pakietu Admin
SDK.
Informacje o pisaniu funkcji obsługujących zdarzenia cyklu życia znajdziesz w artykule Obsługa zdarzeń cyklu życia rozszerzenia.
Informacje o pisaniu funkcji kolejki zadań znajdziesz w artykule Dodawanie funkcji do kolejki za pomocą Cloud Tasks w Cloud Functions dokumentacji.
Definicja funkcji (tylko 1 generacja)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
Ustaw właściwość taskQueueTrigger na {} lub mapę opcji, które
dostosowują limity szybkości i zachowanie kolejki zadań w przypadku ponawiania (patrz Dostosowywanie kolejki zadań).
Jeśli chcesz aktywować funkcję w przypadku zdarzeń cyklu życia rozszerzenia, dodaj
lifecycleEvents rekordy z nazwą funkcji i opcjonalną
wiadomością o przetwarzaniu, która będzie wyświetlana w Firebase konsoli po
rozpoczęciu przetwarzania.
lifecycleEvents:
onInstall:
function: myTaskFunction
processingMessage: Resizing your existing images
onUpdate:
function: myOtherTaskFunction
processingMessage: Setting up your extension
onConfigure:
function: myOtherTaskFunction
processingMessage: Setting up your extension
Analytics
Funkcja aktywowana przez Analytics jest uruchamiana, gdy zostanie zarejestrowane określone zdarzenie Analytics.
Informacje o pisaniu funkcji aktywowanych przez Analytics znajdziesz w artykule Aktywatory Google Analytics w dokumentacji Cloud Functions dla.
Definicja funkcji (tylko 1 generacja)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/ga_event
- name: anotherFunction
type: ...
Jeśli chcesz, aby użytkownicy mogli skonfigurować zdarzenie Analytics, które ma być nasłuchiwane
podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml
i odwołaj się do niego w deklaracji resource funkcji:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/${EVENT_NAME}
- name: anotherFunction
type: ...
params:
- param: EVENT_NAME
label: Analytics event
description: What event do you want to respond to?
type: string
default: ga_event # Specifying a default is optional.
required: true
Authentication
Funkcja aktywowana przez uwierzytelnianie jest uruchamiana, gdy użytkownik zostanie utworzony lub usunięty.
Informacje o pisaniu funkcji aktywowanych przez uwierzytelnianie znajdziesz w artykule Aktywatory uwierzytelniania Firebase w Cloud Functions dokumentacji.
Definicja funkcji (tylko 1 generacja)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/firebase.auth/eventTypes/user.create
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
W tabeli poniżej pokazujemy, jak określić każdy z obsługiwanych typów zdarzeń Authentication:
| Cloud Functions aktywator zdarzeń | eventType |
Opis |
|---|---|---|
onCreate() |
providers/firebase.auth/eventTypes/user.create |
Utworzono nowego użytkownika |
onDelete() |
providers/firebase.auth/eventTypes/user.delete |
Użytkownik został usunięty |
Cloud Firestore
Funkcja aktywowana przez Cloud Firestore jest uruchamiana, gdy dokument zostanie utworzony, zaktualizowany lub usunięty.
Informacje o pisaniu funkcji aktywowanych przez Firestore znajdziesz w artykule Aktywatory Cloud Firestore w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacja)
import { firestore } from "firebase-functions/v1";
export const yourFunctionName = firestore.document("collection/{doc_id}")
.onCreate((snapshot, context) => {
// ...
});
export const yourFunctionName2 = firestore.document("collection/{doc_id}")
.onUpdate((change, context) => {
// ...
});
export const yourFunctionName3 = firestore.document("collection/{doc_id}")
.onDelete((snapshot, context) => {
// ...
});
export const yourFunctionName4 = firestore.document("collection/{doc_id}")
.onWrite((change, context) => {
// onWrite triggers on creation, update, and deletion.
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/collection/{documentID}
- name: anotherFunction
type: ...
W tabeli poniżej pokazujemy, jak określić każdy z obsługiwanych Cloud Firestore typów zdarzeń:
| Cloud Functions aktywator zdarzeń | eventType |
Opis |
|---|---|---|
onCreate() |
providers/cloud.firestore/eventTypes/document.create |
Utworzono nowy dokument |
onDelete() |
providers/cloud.firestore/eventTypes/document.delete |
Dokument został usunięty |
onUpdate() |
providers/cloud.firestore/eventTypes/document.update |
Dokument został zaktualizowany |
onWrite() |
providers/cloud.firestore/eventTypes/document.write |
Dokument został utworzony, usunięty lub zaktualizowany |
Jeśli chcesz, aby użytkownicy mogli skonfigurować ścieżkę dokumentu podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji resource funkcji:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/${YOUR_DOCUMENT_PATH}
- name: anotherFunction
type: ...
params:
- param: YOUR_DOCUMENT_PATH
label: Cloud Firestore path
description: Where do you want to watch for changes?
type: string
default: path/to/{documentID} # Specifying a default is optional.
required: true
Pub/Sub
Funkcja aktywowana przez Pub/Sub jest uruchamiana, gdy wiadomość zostanie opublikowana w określonym temacie.
Informacje o pisaniu funkcji aktywowanych przez Pub/Sub znajdziesz w artykule Aktywatory Pub/Sub w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacja)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/topic-name
- name: anotherFunction
type: ...
Jeśli chcesz, aby użytkownicy mogli skonfigurować temat Pub/Sub podczas
instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml
i odwołaj się do niego w deklaracji resource funkcji:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/${PUBSUB_TOPIC}
- name: anotherFunction
type: ...
params:
- param: PUBSUB_TOPIC
label: Pub/Sub topic
description: Which Pub/Sub topic do you want to watch for messages?
type: string
default: topic-name # Specifying a default is optional.
required: true
Realtime Database
Funkcja aktywowana przez Realtime Database jest uruchamiana, gdy ścieżka pasująca do określonego wzorca zostanie utworzona, zaktualizowana lub usunięta.
Informacje o pisaniu funkcji aktywowanych przez RTDB znajdziesz w artykule Aktywatory Bazy danych czasu rzeczywistego w dokumentacjiCloud Functions.
Definicja funkcji (tylko 1 generacja)
import { database } from "firebase-functions/v1";
export const yourFunctionName = database.ref("path/to/{item}")
.onCreate((snapshot, context) => {
// ...
});
export const yourFunctionName2 = database.ref("path/to/{item}")
.onUpdate((change, context) => {
// ...
});
export const yourFunctionName3 = database.ref("path/to/{item}")
.onDelete((snapshot, context) => {
// ...
});
export const yourFunctionName4 = database.ref("path/to/{item}")
.onWrite((change, context) => {
// onWrite triggers on creation, update, and deletion.
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.database/eventTypes/ref.create
# DATABASE_INSTANCE (project's default instance) is an auto-populated
# parameter value. You can also specify an instance.
resource: projects/_/instances/${DATABASE_INSTANCE}/refs/path/to/{itemId}
- name: anotherFunction
type: ...
W tabeli poniżej pokazujemy, jak określić każdy z obsługiwanych Cloud Firestore typów zdarzeń:
| Cloud Functions aktywator zdarzeń | eventType |
Opis |
|---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
Utworzono dane |
onDelete() |
providers/google.firebase.database/eventTypes/ref.delete |
Usunięto dane |
onUpdate() |
providers/google.firebase.database/eventTypes/ref.update |
Zaktualizowano dane |
onWrite() |
providers/google.firebase.database/eventTypes/ref.write |
Dane zostały utworzone, usunięte lub zaktualizowane |
Jeśli chcesz, aby użytkownicy mogli skonfigurować ścieżkę do obserwowania podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji resource funkcji:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.database/eventTypes/ref.create
# DATABASE_INSTANCE (project's default instance) is an auto-populated
# parameter value. You can also specify an instance.
resource: projects/_/instances/${DATABASE_INSTANCE}/refs/${DB_PATH}
- name: anotherFunction
type: ...
params:
- param: DB_PATH
label: Realtime Database path
description: Where do you want to watch for changes?
type: string
default: path/to/{itemId} # Specifying a default is optional.
required: true
Remote Config
Funkcja aktywowana przez Remote Config jest uruchamiana, gdy szablon parametru projektu zostanie zaktualizowany.
Informacje o pisaniu funkcji aktywowanych przez Zdalną konfigurację znajdziesz w artykule Aktywatory Zdalnej konfiguracji w dokumentacji Cloud Functions.
Definicja funkcji (tylko 1 generacja)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.firebase.remoteconfig.update
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
Cloud Storage
Funkcja aktywowana przez Cloud Storage jest uruchamiana, gdy obiekt zostanie utworzony, zarchiwizowany lub usunięty albo gdy zmienią się jego metadane.
Informacje o pisaniu funkcji aktywowanych przez Cloud Storage znajdziesz w artykule Aktywatory Cloud Storage w dokumentacji Cloud Functions dla.
Definicja funkcji (tylko 1 generacja)
import { storage } from "firebase-functions/v1";
export const yourFunctionName = storage.object().onFinalize((object, context) => {
// ...
});
export const yourFunctionName2 = storage.object().onMetadataUpdate((object, context) => {
// ...
});
export const yourFunctionName3 = storage.object().onArchive((object, context) => {
// ...
});
export const yourFunctionName4 = storage.object().onDelete((object, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
# STORAGE_BUCKET (project's default bucket) is an auto-populated
# parameter. You can also specify a bucket.
resource: projects/_/buckets/${STORAGE_BUCKET}
- name: anotherFunction
type: ...
W tabeli poniżej pokazujemy, jak określić każdy z obsługiwanych Cloud Storage typów zdarzeń:
| Cloud Functions aktywator zdarzeń | eventType |
Opis |
|---|---|---|
onFinalize() |
google.storage.object.finalize |
Utworzenie obiektu |
onMetadataUpdate() |
google.storage.object.metadataUpdate |
Zaktualizowano metadane obiektu |
onArchive() |
google.storage.object.archive |
Obiekt został zarchiwizowany |
onDelete() |
google.storage.object.delete |
Obiekt został usunięty |
Jeśli chcesz, aby użytkownicy mogli skonfigurować zasobnik Cloud Storage podczas instalowania rozszerzenia, dodaj nowy parametr do pliku extension.yaml i odwołaj się do niego w deklaracji resource funkcji:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
resource: projects/_/buckets/${YOUR_BUCKET}
- name: anotherFunction
type: ...
params:
- param: YOUR_BUCKET
label: Cloud Storage bucket
description: Which bucket do you want to watch for changes?
type: selectResource
resourceType: storage.googleapis.com/Bucket
default: ${STORAGE_BUCKET} # Specifying a default is optional.
required: true
Test Lab
Funkcja aktywowana przez Test Lab jest uruchamiana, gdy zestaw testów zakończy testy.
Informacje o pisaniu funkcji aktywowanych przez Test Lab znajdziesz w artykule Aktywatory Laboratorium Firebase w Cloud Functions dokumentacji.
Definicja funkcji (tylko 1 generacja)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.testing.testMatrix.complete
resource: projects/${PROJECT_ID}/testMatrices/{matrixId}
- name: anotherFunction
type: ...
Crashlytics aktywatory alertów
Funkcja aktywowana przez Crashlytics jest uruchamiana, gdy Crashlytics opublikuje alert.
Informacje o pisaniu funkcji aktywowanych przez alerty znajdziesz w artykule Aktywatory alertów Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacja)
import {
onNewFatalIssuePublished,
onNewNonfatalIssuePublished,
onNewAnrIssuePublished,
onRegressionAlertPublished,
onVelocityAlertPublished,
onStabilityDigestPublished,
} from "firebase-functions/v2/alerts/crashlytics";
export const yourFunctionName = onNewFatalIssuePublished((event) => {
// ...
});
export const yourFunctionName2 = onNewNonfatalIssuePublished((event) => {
// ...
});
export const yourFunctionName3 = onNewAnrIssuePublished((event) => {
// ...
});
export const yourFunctionName4 = onRegressionAlertPublished((event) => {
// ...
});
export const yourFunctionName5 = onVelocityAlertPublished((event) => {
// ...
});
export const yourFunctionName6 = onStabilityDigestPublished((event) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: crashlytics.newFatalIssue
- name: anotherFunction
type: ...
W przypadku alerttype możesz użyć tych wartości:
crashlytics.newFatalIssuecrashlytics.newNonfatalIssuecrashlytics.regressioncrashlytics.stabilityDigestcrashlytics.velocitycrashlytics.newAnrIssue
Performance Monitoring aktywatory alertów
Funkcja aktywowana przez Performance Monitoring jest uruchamiana, gdy Performance Monitoring opublikuje alert.
Informacje o pisaniu funkcji aktywowanych przez alerty znajdziesz w artykule Aktywatory alertów Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacja)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: performance.threshold
- name: anotherFunction
type: ...
App Distribution aktywatory alertów
Funkcja aktywowana przez App Distribution jest uruchamiana, gdy App Distribution opublikuje alert.
Informacje o pisaniu funkcji aktywowanych przez alerty znajdziesz w artykule Aktywatory alertów Firebase w dokumentacji Cloud Functions.
Definicja funkcji (tylko 2 generacja)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: appDistribution.inAppFeedback
- name: anotherFunction
type: ...
W przypadku alerttype możesz użyć tych wartości:
appDistribution.newTesterIosDeviceappDistribution.inAppFeedback
Aktywatory zdarzeń niestandardowych (Eventarc)
Funkcja aktywowana przez Eventarc jest uruchamiana, gdy określony typ zdarzenia zostanie opublikowany w określonym kanale.
Informacje o pisaniu funkcji aktywowanych przez Eventarc znajdziesz w artykule Tworzenie i obsługa aktywatorów zdarzeń niestandardowych w Cloud Functions dokumentacji.
Możesz też publikować zdarzenia z rozszerzeń, aby umożliwić użytkownikom wstawianie niestandardowej logiki do rozszerzenia. Więcej informacji znajdziesz w artykule Używanie niestandardowej logiki dostarczonej przez dewelopera w rozszerzeniu.
Definicja funkcji (tylko 2 generacja)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Deklaracja zasobu (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
# LOCATION is a user-configured parameter value specified by the user
# during installation.
location: ${param:LOCATION}
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
timeoutSeconds: 60
eventTrigger:
eventType: firebase.extensions.storage-resize-images.v1.complete
channel: projects/${param:PROJECT_ID}/locations/us-central1/channels/firebase
- name: anotherFunction
type: ...
Podczas instalowania rozszerzenia kanał musi już istnieć. Jeśli na przykład zależy Ci na zdarzeniach niestandardowych z innego rozszerzenia, które tworzy kanał, poproś użytkowników, aby najpierw zainstalowali to rozszerzenie.
Powyższy przykład utworzy aktywator zdarzeń niestandardowych dla domyślnego kanału Firebase w regionie us-central1. Nazwę kanału i region możesz dostosować za pomocą parametrów. Przykład:
params:
- param: EVENTARC_CHANNEL_NAME
label: Eventarc channel name
description: What is the name of the Eventarc channel.
default: firebase
type: string
required: true
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
location: ${param:LOCATION}
eventTrigger:
eventType: firebase.extensions.storage-resize-images.v1.complete
channel: projects/${param:PROJECT_ID}/locations/${param:LOCATION}/channels/${param:EVENTARC_CHANNEL_NAME}