Bir uzantı oluşturduğunuzda, yalnızca kendi projenizde kullanılacak bir işlevi yazdığınız gibi, bunun mantığını Bulut İşlevlerini kullanarak yazarsınız. İşlevlerinizi extension.yaml
dosyasında bildirirsiniz ve kullanıcılar uzantınızı yüklediğinde bu işlevler projelerine dağıtılır.
Cloud Functions'ın kullanımına ilişkin genel bilgiler için Cloud Functions belgelerine bakın.
1. ve 2. nesil Bulut İşlevleri
Firebase hem 1. nesil hem de 2. nesil Bulut İşlevlerini destekler. Ancak Firebase Uzantıları'nda şu anda belirli tetikleyici türleriyle hangi nesil bulut işlevini kullanabileceğiniz konusunda bazı kısıtlamalar bulunmaktadır. Bu nedenle birçok uzantı, 1. ve 2. nesil işlevlerin bir karışımını içerir.
Aşağıda her tetikleyici türü için işlev oluşturma desteği belirtilmiştir.
Özel hususlar
Bazı işlev tanımları,
extension.yaml
dosyasında da belirtilen bilgileri belirtmenizi gerektirir. Örneğin, Cloud Firestore, izlenecek belge modelini belirten birdocument()
yöntemine sahiptir veextension.yaml
dosyasındaki karşılık gelen bildirimi, aynısını belirten birresource
alanına sahiptir.Bu durumlarda
extension.yaml
dosyasında belirtilen yapılandırma kullanılır ve işlev tanımında belirtilen yapılandırma göz ardı edilir.Belgeleme amacıyla, yapılandırılmış değerin işlev tanımında ne olursa olsun belirtilmesi yaygın bir uygulamadır. Bu sayfadaki örnekler bu modeli takip etmektedir.
Cloud Functions 1. nesil SDK'sında, 1. nesil işlevlerde parametreli değerlerle çalışmak için kullanabileceğiniz bir
functions.config()
yöntemi vefunctions:config:set
CLI komutu bulunur. Bu teknik Cloud Functions'ta kullanımdan kaldırılmıştır ve bir uzantıda hiç çalışmayacaktır . Bunun yerine,functions.params
modülünü (önerilen) veyaprocess.env
kullanın.
TypeScript'i kullanma
Kendi uzantınızı geliştirmeye yönelik belgelerin çoğunda, Firebase için Cloud Functions'a yönelik JavaScript kullanan iş akışları açıklanmaktadır. Ancak bunun yerine işlevlerinizi TypeScript kullanarak yazabilirsiniz.
Aslında tüm resmi Firebase uzantıları TypeScript'te yazılmıştır. Uzantınız için TypeScript kullanmaya yönelik en iyi uygulamalardan bazıları için bu uzantıları inceleyebilirsiniz.
Uzantınızın işlevlerini TypeScript'te yazıyorsanız, uzantınızı yüklemeden önce aşağıdakileri yapmanız gerekir:
Uzantınızın işlevlerinin kaynak kodunu JavaScript'e derleyin.
firebase ext:dev:init
komutu, işlevlerinizi yazmak için TypeScript'i seçmenizi sağlar. Komut size eksiksiz, kurulabilir bir uzantının yanı sıranpm run build
ile çalıştırabileceğiniz bir derleme komut dosyası sağlar.package.json
dosyanızdamain
alanı oluşturulan JavaScript'e yönlendirdiğinizden emin olun.Uzantınızı yerel kaynaktan kuruyor veya yüklüyorsanız önce TypeScript dosyalarınızı derleyin.
Desteklenen işlev tetikleyicileri
HTTP tetikleyicileri
HTTP ile tetiklenen bir işlev, genel bir https
uç noktasına dağıtılır ve uç noktaya erişildiğinde çalışır.
İşlev tanımı (yalnızca 1. nesil)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Çağrılabilir işlevler
Çağrılabilir işlevler, HTTP ile tetiklenen işlevlere benzer, ancak istemci tarafı kodunuzdan çağrılmalarını kolaylaştıran bir protokol uygularlar.
Çağrılabilir işlevlerin kullanımına ilişkin bilgi için Bulut İşlevleri belgelerindeki uygulamanızdan çağrı işlevleri bölümüne bakın.
İşlev tanımı (yalnızca 1. nesil)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
Zamanlanmış işlev tetikleyicileri
Zamanlanmış bir işlev, özelleştirilebilir bir zamanlamaya göre tekrar tekrar çalışır.
Zamanlanmış işlevlerin yazılmasına ilişkin bilgi için Bulut İşlevleri belgelerindeki Zamanlama işlevleri konusuna bakın.
İşlev tanımı (yalnızca 1. nesil)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
scheduleTrigger
için mevcut alt alanlar şunlardır:
Alan | Tanım |
---|---|
schedule (gerekli) | İşlevin çalışmasını istediğiniz sıklık. Bu alan, sözdizimlerinden herhangi birini kullanan dizeleri kabul edebilir ( tek tırnak içine almak gerekir):
|
timeZone (isteğe bağlı) | Zamanlamanın çalışacağı saat dilimi.
|
Kullanıcıların uzantınızı yüklediklerinde zamanlamayı yapılandırabilmelerini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
bildiriminde bu parametreye başvurun:
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
Görev kuyruğu tetikleyicileri
Bir görev kuyruğu işlevi, uzantınızın yaşam döngüsü olaylarında veya Admin SDK'nın TaskQueue.enqueue()
yöntemi kullanılarak uzantınızın görev kuyruğuna manuel olarak eklendiğinde tetiklenir.
İşlev tanımı (yalnızca 1. nesil)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
taskQueueTrigger
özelliğini {}
olarak veya görev kuyruğunun hız sınırlarını ayarlayan ve yeniden deneme davranışını ayarlayan bir seçenekler haritası olarak ayarlayın (bkz. Görev kuyruğunu ayarlama ).
İşlevinizi uzantınızın yaşam döngüsü olaylarında tetiklemek istiyorsanız, işlevin adını ve işleme başladığında Firebase konsolunda görüntülenecek isteğe bağlı bir işleme mesajını içeren lifecycleEvents
kayıtlarını ekleyin.
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
Analitik
Belirtilen bir Analytics olayı günlüğe kaydedildiğinde Analytics tarafından tetiklenen bir işlev çalışır.
Analytics tarafından tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Bulut İşlevleri belgelerindeki Google Analytics tetikleyicilerine bakın.
İşlev tanımı (yalnızca 1. nesil)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
Kaynak bildirimi (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: ...
Kullanıcıların, uzantınızı yüklediklerinde Analytics etkinliğini dinleyecek şekilde yapılandırabilmelerini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
bildiriminde bu parametreye başvurun:
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
Kimlik doğrulama
Kimlik doğrulamayla tetiklenen bir işlev, bir kullanıcı oluşturulduğunda veya silindiğinde çalışır.
Kimlik doğrulamayla tetiklenen işlevlerin yazılması hakkında bilgi için Bulut İşlevleri belgelerindeki Firebase Kimlik Doğrulama tetikleyicilerine bakın.
İşlev tanımı (yalnızca 1. nesil)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
Kaynak bildirimi (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: ...
Aşağıdaki tablo, desteklenen Kimlik Doğrulama olayı türlerinin her birinin nasıl belirtileceğini gösterir:
Cloud Functions olay tetikleyicisi | eventType | Tanım |
---|---|---|
onCreate() | providers/firebase.auth/eventTypes/user.create | Yeni kullanıcı oluşturuldu |
onDelete() | providers/firebase.auth/eventTypes/user.delete | Kullanıcı silindi |
Bulut Firestore
Bir belge oluşturulduğunda, güncellendiğinde veya silindiğinde Cloud Firestore tarafından tetiklenen bir işlev çalışır.
İşlev tanımı (yalnızca 1. nesil)
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.
// ...
});
Kaynak bildirimi (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: ...
Aşağıdaki tablo, desteklenen Cloud Firestore olay türlerinin her birinin nasıl belirtileceğini gösterir:
Cloud Functions olay tetikleyicisi | eventType | Tanım |
---|---|---|
onCreate() | providers/cloud.firestore/eventTypes/document.create | Yeni belge oluşturuldu |
onDelete() | providers/cloud.firestore/eventTypes/document.delete | Doküman silindi |
onUpdate() | providers/cloud.firestore/eventTypes/document.update | Doküman güncellendi |
onWrite() | providers/cloud.firestore/eventTypes/document.write | Doküman oluşturuldu, silindi veya güncellendi |
Kullanıcıların, uzantınızı yüklediklerinde belge yolunu yapılandırabilmelerini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
bildiriminde bu parametreye başvurun:
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
Belirli bir konuya bir mesaj yayınlandığında Pub/Sub tarafından tetiklenen işlev çalışır.
İşlev tanımı (yalnızca 1. nesil)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
Kaynak bildirimi (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: ...
Kullanıcıların, uzantınızı yüklediklerinde Pub/Sub konusunu yapılandırabilmelerini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
bildiriminde bu parametreye başvurun:
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
Gerçek Zamanlı Veritabanı
Gerçek Zamanlı Veritabanıyla tetiklenen bir işlev, belirtilen bir kalıpla eşleşen bir yol oluşturulduğunda, güncellendiğinde veya silindiğinde çalışır.
RTDB ile tetiklenen işlevlerin yazılmasına ilişkin bilgi için Bulut İşlevleri belgelerindeki Gerçek Zamanlı Veritabanı tetikleyicilerine bakın.
İşlev tanımı (yalnızca 1. nesil)
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.
// ...
});
Kaynak bildirimi (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: ...
Aşağıdaki tablo, desteklenen Cloud Firestore olay türlerinin her birinin nasıl belirtileceğini gösterir:
Cloud Functions olay tetikleyicisi | eventType | Tanım |
---|---|---|
onCreate() | providers/google.firebase.database/eventTypes/ref.create | Oluşturulan veriler |
onDelete() | providers/google.firebase.database/eventTypes/ref.delete | Veriler silindi |
onUpdate() | providers/google.firebase.database/eventTypes/ref.update | Veriler güncellendi |
onWrite() | providers/google.firebase.database/eventTypes/ref.write | Veriler oluşturuldu, silindi veya güncellendi |
Kullanıcıların, uzantınızı yüklediklerinde izlenecek yolu yapılandırabilmelerini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
bildiriminde bu parametreye başvurun:
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
Uzaktan Yapılandırma
Bir projenin parametre şablonu güncellendiğinde Remote Config ile tetiklenen bir işlev çalışır.
İşlev tanımı (yalnızca 1. nesil)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
Kaynak bildirimi (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.firebase.remoteconfig.update
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
Bulut depolama
Cloud Storage tarafından tetiklenen bir işlev, bir nesne oluşturulduğunda, arşivlendiğinde veya silindiğinde ya da meta verileri değiştiğinde çalışır.
İşlev tanımı (yalnızca 1. nesil)
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) => {
// ...
});
Kaynak bildirimi (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: ...
Aşağıdaki tabloda, desteklenen Cloud Storage olay türlerinin her birinin nasıl belirtileceği gösterilmektedir:
Cloud Functions olay tetikleyicisi | eventType | Tanım |
---|---|---|
onFinalize() | google.storage.object.finalize | Nesne oluşturuldu |
onMetadataUpdate() | google.storage.object.metadataUpdate | Nesne meta verileri güncellendi |
onArchive() | google.storage.object.archive | Nesne arşivlendi |
onDelete() | google.storage.object.delete | Nesne silindi |
Kullanıcıların, uzantınızı yüklediklerinde depolama paketini yapılandırabilmelerini istiyorsanız extension.yaml
dosyanıza yeni bir parametre ekleyin ve işlevinizin resource
bildiriminde bu parametreye başvurun:
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 Laboratuvarı
Bir test matrisi testlerini tamamladığında Test Laboratuvarı tarafından tetiklenen bir işlev çalışır.
İşlev tanımı (yalnızca 1. nesil)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
Kaynak bildirimi (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 uyarı tetikleyicileri
Crashlytics bir uyarı yayınladığında Crashlytics tarafından tetiklenen bir işlev çalışır.
Uyarıyla tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Cloud Functions belgelerindeki Firebase Alerts tetikleyicilerine bakın.
İşlev tanımı (yalnızca 2. nesil)
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) => {
// ...
});
Kaynak bildirimi (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: ...
alerttype
için aşağıdaki değerleri kullanabilirsiniz
-
crashlytics.newFatalIssue
-
crashlytics.newNonfatalIssue
-
crashlytics.regression
-
crashlytics.stabilityDigest
-
crashlytics.velocity
-
crashlytics.newAnrIssue
Performans İzleme uyarı tetikleyicileri
Performans İzleme bir uyarı yayınladığında Performans İzleme tarafından tetiklenen bir işlev çalışır.
Uyarıyla tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Cloud Functions belgelerindeki Firebase Alerts tetikleyicilerine bakın.
İşlev tanımı (yalnızca 2. nesil)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
Kaynak bildirimi (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: ...
Uygulama Dağıtımı uyarı tetikleyicileri
App Distribution bir uyarı yayınladığında, App Distribution tarafından tetiklenen bir işlev çalışır.
Uyarıyla tetiklenen işlevlerin yazılmasıyla ilgili bilgi için Cloud Functions belgelerindeki Firebase Alerts tetikleyicilerine bakın.
İşlev tanımı (yalnızca 2. nesil)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Kaynak bildirimi (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: ...
alerttype
için aşağıdaki değerleri kullanabilirsiniz
-
appDistribution.newTesterIosDevice
-
appDistribution.inAppFeedback
Özel olay tetikleyicileri (Eventarc)
Eventarc tarafından tetiklenen bir işlev, belirli bir olay türü belirli bir kanala yayınlandığında çalışır.
Eventarc tarafından tetiklenen işlevlerin yazılması hakkında bilgi için Bulut İşlevleri belgelerindeki Özel olay tetikleyicileri oluşturma ve işleme konusuna bakın.
Ayrıca, kullanıcılara uzantınıza özel mantık ekleme olanağı sağlamak için uzantılarınızdaki etkinlikleri de yayınlayabilirsiniz . Bkz. Uzantıda geliştirici tarafından sağlanan özel mantığı kullanma .
İşlev tanımı (yalnızca 2. nesil)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
Kaynak bildirimi (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: ...
Uzantınız yüklendiğinde kanalın zaten mevcut olması gerekir. Örneğin, kanalı oluşturan başka bir uzantının özel etkinliklerine bağlıysanız kullanıcılarınıza önce bu uzantıyı yüklemeleri talimatını verin.
Yukarıdaki örnek us-central1
bölgesindeki "varsayılan" Firebase kanalı için özel bir etkinlik tetikleyicisi oluşturacaktır. Parametreleri kullanarak kanal adını ve bölgesini özelleştirilebilir hale getirebilirsiniz. Örneğin:
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}