Quando crei un'estensione, ne scrivi la logica utilizzando Cloud Functions, in
più o meno come si scrive una funzione che viene utilizzata solo
per il tuo progetto. Dichiari le funzioni nel file extension.yaml
e, quando gli utenti installano l'estensione, queste funzioni vengono implementate nel loro progetto.
Per informazioni generali sull'utilizzo, consulta la documentazione di Cloud Functions. Cloud Functions.
Cloud Functions di 1a e 2a generazione
Firebase supporta sia Cloud Functions di 1ª che di 2ª generazione. Tuttavia, Firebase Le estensioni hanno attualmente alcune restrizioni su quale generazione di cloud che puoi utilizzare con alcuni tipi di trigger. Per questo motivo, le estensioni includono una combinazione di funzioni di 1a e 2a generazione.
Il supporto della generazione delle funzioni è indicato di seguito per ogni tipo di trigger.
Considerazioni speciali
Alcune definizioni di funzione richiedono di specificare informazioni che specificato nel file
extension.yaml
. Ad esempio, Cloud Firestore ha Metododocument()
che specifica il pattern del documento da controllare e i relativi dichiarazione corrispondente inextension.yaml
ha un camporesource
che specifica lo stesso.In queste situazioni, la configurazione specificata in
extension.yaml
e la configurazione specificata nella definizione della funzione è ignorato.È pratica comune specificare il valore configurato nella funzione definizione a prescindere, ai fini della documentazione. Gli esempi su questo segui questo schema.
L'SDK Cloud Functions di 1a generazione ha un metodo
functions.config()
e Comando dell'interfaccia a riga di comandofunctions:config:set
che puoi usare per lavorare con valori con parametri nelle funzioni di 1a generazione. Questa tecnica è deprecata in Cloud Functions e non funzionerà in un'estensione. Utilizza invece il modulofunctions.params
(consigliato) oprocess.env
.
Utilizzo di TypeScript
La maggior parte della documentazione per lo sviluppo di un'estensione descrive i flussi di lavoro utilizzando JavaScript per Cloud Functions for Firebase. Tuttavia, puoi scrivere le tue funzioni con TypeScript.
Infatti, estensioni Firebase ufficiali sono scritte in TypeScript. Puoi esaminare queste estensioni per capire per utilizzare TypeScript per la tua estensione.
Se scrivi le funzioni dell'estensione in TypeScript, devi eseguire le prima di installare l'estensione:
Compila il codice sorgente delle funzioni dell'estensione in JavaScript.
La
firebase ext:dev:init
comando consente di scegliere TypeScript per la scrittura delle funzioni. Il comando un'estensione completa e installabile, oltre a una build che puoi eseguire connpm run build
.Nel file
package.json
, assicurati di indirizzare il campomain
al codice JavaScript generato.Se stai installando o caricando l'estensione da un'origine locale, compila prima i file TypeScript.
Trigger di funzione supportati
Trigger HTTP
Il deployment di una funzione attivata da HTTP viene eseguito su un endpoint https
pubblico ed esegue
quando si accede all'endpoint.
Per informazioni su come scrivere funzioni attivate da HTTP, consulta Chiamare funzioni tramite richieste HTTP nella documentazione di Cloud Functions.
Definizione della funzione (solo 1ª gen.)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Dichiarazione della risorsa (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Funzioni richiamabili
Le funzioni richiamabili sono simili a quelle attivate da HTTP, ma implementano una funzione che li rende più facili da chiamare dal codice lato client.
Vedi Funzioni di chiamata dall'app nella documentazione di Cloud Functions per informazioni sull'uso delle funzioni richiamabili.
Definizione della funzione (solo 1a generazione)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Dichiarazione delle risorse (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Trigger di funzioni pianificate
Una funzione pianificata viene eseguita ripetutamente in base a una pianificazione personalizzabile.
Per informazioni sulla scrittura di funzioni pianificate, consulta Pianificare le funzioni nella documentazione di Cloud Functions.
Definizione della funzione (solo 1a generazione)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Dichiarazione della risorsa (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
Ecco i campi secondari disponibili per scheduleTrigger
:
Campo | Descrizione |
---|---|
schedule (obbligatorio) |
La frequenza con cui vuoi che venga eseguita la funzione. Questo campo può accettare stringhe che utilizzano entrambe le sintassi (è obbligatorio inserire le stringhe tra virgolette singole):
|
timeZone (facoltativo) |
Il fuso orario in cui verrà eseguita la pianificazione.
|
Se vuoi che gli utenti possano configurare la programmazione quando installano il tuo
aggiungi un nuovo parametro al file extension.yaml
e fai riferimento al
nella dichiarazione resource
della funzione:
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
Trigger delle code di attività
Viene attivata una funzione di coda di attività nel ciclo di vita dell'estensione
eventi o aggiunti manualmente alla coda di attività dell'estensione mediante
Il metodo TaskQueue.enqueue()
dell'SDK.
Per informazioni sulla scrittura, consulta Gestire gli eventi del ciclo di vita delle estensioni che gestiscono gli eventi del ciclo di vita.
Consulta Coda funzioni con Cloud Tasks nella Cloud Functions documentazione per informazioni sulla scrittura delle funzioni delle code di attività.
Definizione della funzione (solo 1ª gen.)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Dichiarazione della risorsa (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
Imposta la proprietà taskQueueTrigger
su {}
o su una mappa di opzioni che
regolare i limiti di frequenza e riprovare il comportamento della coda di attività (consulta Ottimizzazione dell'attività
coda).
Se vuoi attivare la funzione per gli eventi del ciclo di vita dell'estensione, aggiungi
lifecycleEvents
record con il nome della funzione e un elemento facoltativo
messaggio di elaborazione, che verrà visualizzato nella console Firebase quando
l'elaborazione inizia.
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
Una funzione attivata da Analytics viene eseguita quando un evento di Analytics specificato viene registrato.
Consulta gli attivatori di Google Analytics nella documentazione Cloud Functions per informazioni sulla scrittura di funzioni attivate da Analytics.
Definizione della funzione (solo 1a generazione)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Dichiarazione delle risorse (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: ...
Se vuoi che gli utenti possano configurare l'evento Analytics da ascoltare
quando installano l'estensione, aggiungi un nuovo parametro a extension.yaml
e fai riferimento al parametro nella dichiarazione resource
della funzione:
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
Una funzione attivata dall'autenticazione viene eseguita quando un utente viene creato o eliminato.
Consulta la sezione Attivatori di Firebase Authentication nella Cloud Functions documentazione per informazioni sulla scrittura di funzioni attivate dall'autenticazione.
Definizione della funzione (solo 1a generazione)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Dichiarazione delle risorse (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: ...
La tabella seguente mostra come specificare ciascuno dei tipi di eventi Authentication supportati:
Cloud Functions attivatore di evento | eventType |
Descrizione |
---|---|---|
onCreate() |
providers/firebase.auth/eventTypes/user.create |
Nuovo utente creato |
onDelete() |
providers/firebase.auth/eventTypes/user.delete |
Utente eliminato |
Cloud Firestore
Una funzione attivata da Cloud Firestore viene eseguita quando un documento viene creato, aggiornato o eliminati.
Vedi Trigger di Cloud Firestore nella documentazione Cloud Functions per informazioni sulla scrittura di funzioni attivate da Firestore.
Definizione della funzione (solo 1ª gen.)
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.
// ...
});
Dichiarazione della risorsa (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: ...
La tabella seguente mostra come specificare ciascuno dei Cloud Firestore supportati tipi di eventi:
Trigger evento Cloud Functions | eventType |
Descrizione |
---|---|---|
onCreate() |
providers/cloud.firestore/eventTypes/document.create |
Nuovo documento creato |
onDelete() |
providers/cloud.firestore/eventTypes/document.delete |
Documento eliminato |
onUpdate() |
providers/cloud.firestore/eventTypes/document.update |
Documento aggiornato |
onWrite() |
providers/cloud.firestore/eventTypes/document.write |
Documento creato, eliminato o aggiornato |
Se vuoi che gli utenti possano configurare il percorso del documento quando installano
l'estensione, aggiungi un nuovo parametro al file extension.yaml
e fai riferimento
il parametro nella dichiarazione resource
della funzione:
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
Una funzione attivata da Pub/Sub viene eseguita quando un messaggio viene pubblicato in un argomento specifico.
Consulta i trigger di Pub/Sub nella documentazione di Cloud Functions per informazioni sulla scrittura di funzioni attivate da Pub/Sub.
Definizione della funzione (solo 1a generazione)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Dichiarazione delle risorse (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: ...
Se vuoi che gli utenti possano configurare l'argomento Pub/Sub quando
Se installi l'estensione, aggiungi un nuovo parametro al file extension.yaml
e fai riferimento al parametro nella dichiarazione resource
della funzione:
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
Una funzione attivata da Realtime Database viene eseguita quando viene creato, aggiornato o eliminato un percorso corrispondente a un pattern specificato.
Consulta Trigger di Realtime Database nella documentazione Cloud Functions per informazioni sulla scrittura di funzioni attivate da RTDB.
Definizione della funzione (solo 1a generazione)
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.
// ...
});
Dichiarazione della risorsa (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: ...
La tabella seguente mostra come specificare ciascuno dei Cloud Firestore supportati tipi di eventi:
Trigger evento Cloud Functions | eventType |
Descrizione |
---|---|---|
onCreate() |
providers/google.firebase.database/eventTypes/ref.create |
Dati creati |
onDelete() |
providers/google.firebase.database/eventTypes/ref.delete |
Dati eliminati |
onUpdate() |
providers/google.firebase.database/eventTypes/ref.update |
Dati aggiornati |
onWrite() |
providers/google.firebase.database/eventTypes/ref.write |
Dati creati, eliminati o aggiornati |
Se vuoi che gli utenti possano configurare il percorso da osservare quando installano
l'estensione, aggiungi un nuovo parametro al file extension.yaml
e fai riferimento
il parametro nella dichiarazione resource
della funzione:
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
Una funzione attivata da Remote Config viene eseguita quando il modello di parametri di un progetto aggiornato.
Consulta Trigger di Remote Config nella documentazione di Cloud Functions per informazioni sulla scrittura di funzioni attivate da Remote Config.
Definizione della funzione (solo 1a generazione)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Dichiarazione delle risorse (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
Una funzione attivata da Cloud Storage viene eseguita quando un oggetto viene creato, archiviato o o quando vengono modificati i metadati.
Consulta Trigger di Cloud Storage nella documentazione Cloud Functions per informazioni sulla scrittura di funzioni attivate da Storage.
Definizione della funzione (solo 1a generazione)
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) => {
// ...
});
Dichiarazione della risorsa (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: ...
La tabella seguente mostra come specificare ciascuno dei Cloud Storage supportati tipi di eventi:
Cloud Functions attivatore di evento | eventType |
Descrizione |
---|---|---|
onFinalize() |
google.storage.object.finalize |
Oggetto creato |
onMetadataUpdate() |
google.storage.object.metadataUpdate |
Metadati degli oggetti aggiornati |
onArchive() |
google.storage.object.archive |
L'oggetto è stato archiviato |
onDelete() |
google.storage.object.delete |
Oggetto eliminato |
Se vuoi che gli utenti possano configurare il bucket di archiviazione quando installano
l'estensione, aggiungi un nuovo parametro al file extension.yaml
e fai riferimento
il parametro nella dichiarazione resource
della funzione:
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
Una funzione attivata da Test Lab viene eseguita al termine dei test di una matrice di test.
Consulta gli attivatori di Firebase Test Lab nella documentazione Cloud Functions per informazioni sulla scrittura di funzioni attivate da Test Lab.
Definizione della funzione (solo 1a generazione)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Dichiarazione della risorsa (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 trigger di avviso
Una funzione attivata da Crashlytics viene eseguita quando Crashlytics pubblica un avviso.
Consulta gli attivatori di Firebase Alert nella documentazione di Cloud Functions per informazioni sulla scrittura di funzioni attivate da avvisi.
Definizione della funzione (solo 2ª gen.)
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) => {
// ...
});
Dichiarazione delle risorse (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
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: ...
Puoi usare i seguenti valori per alerttype
crashlytics.newFatalIssue
crashlytics.newNonfatalIssue
crashlytics.regression
crashlytics.stabilityDigest
crashlytics.velocity
crashlytics.newAnrIssue
Performance Monitoring attivatori di avviso
Una funzione attivata da Performance Monitoring viene eseguita quando Performance Monitoring pubblica un avviso.
Consulta gli attivatori di Firebase Alert nella documentazione di Cloud Functions per informazioni sulla scrittura di funzioni attivate da avvisi.
Definizione della funzione (solo 2a generazione)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Dichiarazione della risorsa (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
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 trigger di avviso
Una funzione attivata da App Distribution viene eseguita quando App Distribution pubblica un avviso.
Consulta gli attivatori di Firebase Alert nella documentazione di Cloud Functions per informazioni sulla scrittura di funzioni attivate da avvisi.
Definizione della funzione (solo 2ª gen.)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Dichiarazione delle risorse (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
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: ...
Puoi usare i seguenti valori per alerttype
appDistribution.newTesterIosDevice
appDistribution.inAppFeedback
Trigger di eventi personalizzati (Eventarc)
Una funzione attivata da Eventarc viene eseguita quando un tipo di evento specifico viene pubblicato in un canale specifico.
Consulta Creare e gestire gli attivatori di eventi personalizzati nella Cloud Functions documentazione per informazioni sulla scrittura di funzioni attivate da Eventarc.
Puoi anche pubblicare eventi dalle estensioni per offrire agli utenti un modo per inserire nella tua estensione. Consulta Utilizzare la logica personalizzata fornita dallo sviluppatore in un'estensione.
Definizione della funzione (solo 2a generazione)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Dichiarazione delle risorse (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
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: ...
Il canale deve esistere già quando l'estensione è installata. Ad esempio, se dipendi dagli eventi personalizzati di un'altra estensione che crea il canale, chiedere agli utenti di installare prima l'estensione.
L'esempio precedente crea un attivatore di evento personalizzato per il valore "default" Firebase
canale nella regione us-central1
. Puoi impostare il nome e la regione del canale
personalizzabili tramite parametri. Ad esempio:
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}