Bir uzantı için Cloud Functions yazma

Bir uzantı oluşturduğunuzda, mantığını Cloud Functions kullanarak yazarsınız. Bu, yalnızca kendi projenizde kullanılacak bir işlevi yazarken kullanacağınız yöntemle aynıdır. İşlevlerinizi extension.yaml dosyasında tanımlarsınız ve kullanıcılar uzantınızı yüklediğinde bu işlevler projelerinde dağıtılır.

Cloud Functions ürününün kullanımıyla ilgili genel bilgiler için Cloud Functions dokümanlarına göz atın.

1. ve 2. nesil Cloud Functions

Firebase hem 1. nesil hem de 2. nesil Cloud Functions'i destekler. Ancak Firebase uzantılarında, belirli tetikleyici türleriyle kullanabileceğiniz bulut işlevi nesli konusunda şu anda bazı kısıtlamalar vardır. Bu nedenle, birçok uzantı 1. ve 2. nesil işlevlerin bir karışımını içerir.

İşlev oluşturma desteği, aşağıdaki her tetikleyici türü için belirtilmiştir.

Dikkat edilmesi gereken noktalar

  • Bazı işlev tanımları, extension.yaml dosyasında da belirtilen bilgileri belirtmenizi gerektirir. Örneğin, Cloud Firestore'da izlenecek belge desenini belirten bir document() yöntemi, extension.yaml öğesinde ise karşılık gelen beyanında aynı yöntemi belirten resource alanı bulunur.

    Bu durumlarda, extension.yaml dosyasında belirtilen yapılandırma kullanılır ve işlev tanımında belirtilen yapılandırma yoksayılır.

    Dokümantasyon amacıyla, yapılandırılmış değerin işlev tanımında belirtilmesi yaygın bir uygulamadır. Bu sayfadaki örnekler bu kalıbı izler.

  • Cloud Functions 1. nesil SDK'da, 1. nesil işlevlerdeki parametreli değerlerle çalışmak için kullanabileceğiniz bir functions.config() yöntemi ve functions:config:set CLI komutu vardır. Bu teknik Cloud Functions sürümünde kullanımdan kaldırıldı ve uzantılarda hiç çalışmaz. Bunun yerine functions.params modülünü (önerilen) veya process.env kullanın.

TypeScript'i kullanma

Kendi uzantılarınızı geliştirmeyle ilgili dokümanların çoğunda, Cloud Functions for Firebase için 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 ile yazılmıştır. Uzantılarınızda TypeScript'i kullanmayla ilgili en iyi uygulamalar için bu uzantıları inceleyebilirsiniz.

Uzantınızın işlevlerini TypeScript'te yazarsanız uzantınızı yüklemeden önce aşağıdakileri yapmanız gerekir:

  1. Uzantınızın işlev kaynak kodunu JavaScript'e derleyin.

    firebase ext:dev:init komutu, işlevlerinizi yazmak için TypeScript'i seçmenize olanak tanır. Bu komut, tam ve yüklenilebilir bir uzantı ile npm run build ile çalıştırabileceğiniz bir derleme komut dosyası sağlar.

  2. package.json dosyanızda, main alanını, oluşturulan JavaScript'e yönlendirdiğinden emin olun.

  3. Uzantılarınızı yerel kaynaktan yüklüyor veya yüklüyorsanız önce TypeScript dosyalarınızı derleyin.

Desteklenen işlev tetikleyicileri

HTTP tetikleyicileri

HTTP ile tetiklenen bir işlev, herkese açık bir https uç noktasına dağıtılır ve uç noktaya erişildiğinde çalışır.

HTTP tetiklemeli işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında HTTP istekleri aracılığıyla işlevleri çağırma bölümüne bakın.

İş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ılanabilir işlevler HTTP tetiklenmiş işlevlere benzer ancak bunları istemci taraflı kodunuzdan çağrılmaya uygun hale getiren bir protokol uygular.

Çağırılabilir işlevleri kullanma hakkında bilgi edinmek için Cloud Functions dokümanlarında Uygulamanızdan işlev çağırma 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 beyanı (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Planlanmış işlev tetikleyicileri

Planlanmış işlevler, özelleştirilebilir bir programa göre tekrar tekrar çalışır.

Planlanmış işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında İşlevleri planlama bölümüne 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 kullanılabilen alt alanlar aşağıda verilmiştir:

Alan Açıklama
schedule
(zorunlu)

İşlevin çalışmasını istediğiniz sıklık.

Bu alan, aşağıdaki söz dizimlerini kullanan dizeleri kabul edebilir (tek tırnak içine alınması gerekir):

timeZone
(isteğe bağlı)

Programın çalışacağı saat dilimi.

Kullanıcıların uzantınızı yüklerken programı yapılandırabilmesini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve parametreye işlevinizin resource tanımından referans verin:

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 sırası tetikleyicileri

Görev kuyruğu işlevi, uzantınızın yaşam döngüsü etkinliklerinde veya Yönetici SDK'sının TaskQueue.enqueue() yöntemi kullanılarak uzantınızın görev kuyruğuna manuel olarak eklendiğinde tetiklenir.

Yaşam döngüsü etkinliklerini işleyen işlevler yazma hakkında bilgi edinmek için Uzantılarınızın yaşam döngüsü etkinliklerini işleme başlıklı makaleyi inceleyin.

Görev kuyruğu işlevleri yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Cloud Tasks ile işlevleri sıraya ekleme bölümüne bakın.

İş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 mülkünü {} olarak veya görev kuyruğunun hız sınırlarını ve yeniden deneme davranışını ayarlayan seçeneklerin haritası olarak ayarlayın (Görev kuyruğunu ayarlama bölümüne bakın).

Uzantınızın yaşam döngüsü etkinliklerinde işlevinizi tetiklemek istiyorsanız işlevin adını ve isteğe bağlı bir işleme mesajını içeren lifecycleEvents kayıtları ekleyin. Bunlar işleme başladığında Firebase konsolunda gösterilir.

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

Analytics tarafından tetiklenen bir işlev, belirtilen bir Analytics etkinliği günlüğe kaydedildiğinde çalışır.

Analytics tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions dokümanlarında Google Analytics tetikleyicileri bölümüne 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 dinlenecek Analytics etkinliğini yapılandırabilmesini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource tanımında parametreye referans verin:

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

Kimlik doğrulamasıyla tetiklenen işlev, bir kullanıcı oluşturulduğunda veya silindiğinde çalışır.

Kimlik doğrulamasıyla tetiklenen işlevler yazma hakkında bilgi için Cloud Functions belgelerindeki Firebase Authentication tetikleyicileri bölümüne 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 beyanı (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 tabloda, desteklenen Authentication etkinlik türlerinin her birinin nasıl belirtileceği gösterilmektedir:

Cloud Functions etkinlik tetikleyici eventType Açıklama
onCreate() providers/firebase.auth/eventTypes/user.create Yeni kullanıcı oluşturuldu
onDelete() providers/firebase.auth/eventTypes/user.delete Kullanıcı silindi

Cloud Firestore

Cloud Firestore tarafından tetiklenen bir işlev, bir doküman oluşturulduğunda, güncellendiğinde veya silindiğinde çalışır.

Firestore tarafından tetiklenen işlevleri yazma hakkında bilgi için Cloud Functions belgelerindeki Cloud Firestore tetikleyicileri bölümüne bakın.

İş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 beyanı (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 tabloda, desteklenen Cloud Firestore etkinlik türlerinin her birinin nasıl belirtileceği gösterilmektedir:

Cloud Functions etkinlik tetikleyici eventType Açıklama
onCreate() providers/cloud.firestore/eventTypes/document.create Yeni doküman oluşturuldu
onDelete() providers/cloud.firestore/eventTypes/document.delete Doküman silindi
onUpdate() providers/cloud.firestore/eventTypes/document.update Belge 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 doküman yolunu yapılandırabilmelerini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource bildirimindeki parametreye referans verin:

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

Pub/Sub tarafından tetiklenen işlev, belirli bir konuya mesaj yayınlandığında çalışır.

Pub/Sub tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Pub/Sub tetikleyicileri bölümüne bakın.

İşlev tanımı (yalnızca 1. nesil)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});

Kaynak beyanı (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üklerken Pub/Sub konusunu yapılandırabilmesini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve parametreye işlevinizin resource tanımından referans verin:

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

Realtime Database tarafından 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 tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Realtime Database tetikleyicileri bölümüne 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 beyanı (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 tabloda, desteklenen Cloud Firestore etkinlik türlerinin her birinin nasıl belirtileceği gösterilmektedir:

Cloud Functions etkinlik tetikleyici eventType Açıklama
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 Oluşturulan, silinen veya güncellenen veriler

Kullanıcıların uzantınızı yüklerken izlenecek yolu yapılandırabilmesini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource beyanında parametreye referans verin:

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

Remote Config tarafından tetiklenen bir işlev, bir projenin parametre şablonu güncellendiğinde çalışır.

Remote Config tarafından tetiklenen işlevleri yazma hakkında bilgi edinmek için Cloud Functions dokümanlarındaki Remote Config tetikleyicileri bölümüne bakın.

İşlev tanımı (yalnızca 1. nesil)

import { remoteConfig } from "firebase-functions/v1";

export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});

Kaynak beyanı (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

Cloud Storage tarafından tetiklenen işlevler, bir nesne oluşturulduğunda, arşivlendiğinde veya silindiğinde ya da meta verileri değiştiğinde çalışır.

Storage tarafından tetiklenen işlevleri yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Cloud Storage tetikleyicileri bölümüne bakın.

İş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 beyanı (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 etkinlik türlerinin her birinin nasıl belirtileceği gösterilmektedir:

Cloud Functions etkinlik tetikleyici eventType Açıklama
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üklerken depolama paketini yapılandırabilmesini istiyorsanız extension.yaml dosyanıza yeni bir parametre ekleyin ve işlevinizin resource tanımında bu parametreye referans verin:

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

Test Lab tarafından tetiklenen bir işlev, bir test matrisi testlerini tamamladığında çalışır.

Test Lab tarafından tetiklenen işlevleri yazma hakkında bilgi için Cloud Functions dokümanlarındaki Firebase Test Lab tetikleyicileri bölümüne bakın.

İşlev tanımı (yalnızca 1. nesil)

import { testLab } from "firebase-functions/v1";

export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});

Kaynak beyanı (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 tarafından tetiklenen bir işlev, Crashlytics uyarı yayınladığında çalışır.

Uyarı tetikleyici işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Firebase Uyarı tetikleyicileri bölümüne 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 beyanı (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

Performance Monitoring uyarı tetikleyicileri

Performance Monitoring tarafından tetiklenen bir işlev, Performance Monitoring bir uyarı yayınladığında çalışır.

Uyarı tetikleyici işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Firebase Uyarı tetikleyicileri bölümüne bakın.

İşlev tanımı (yalnızca 2. nesil)

import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";

export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});

Kaynak beyanı (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 uyarı tetikleyicileri

App Distribution tarafından tetiklenen bir işlev, App Distribution bir uyarı yayınladığında çalışır.

Uyarı tetikleyici işlevler yazma hakkında bilgi edinmek için Cloud Functions belgelerindeki Firebase Uyarı tetikleyicileri bölümüne 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 beyanı (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 etkinlik tetikleyicileri (Eventarc)

Eventarc tarafından tetiklenen bir işlev, belirli bir etkinlik türü belirli bir kanalda yayınlandığında çalışır.

Eventarc tarafından tetiklenen işlevler yazma hakkında bilgi edinmek için Cloud Functionsdokümanlarında Özel etkinlik tetikleyicileri oluşturma ve işleme bölümüne bakın.

Ayrıca, kullanıcılara uzantınıza özel mantık ekleme olanağı sunmak için uzantılarınızdaki etkinlikleri yayınlayabilirsiniz. Geliştirici tarafından sağlanan özel mantığı uzantılarda kullanma başlıklı makaleyi inceleyin.

İş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 zaten mevcut olmalıdır. Örneğin, kanalı oluşturan başka bir uzantının özel etkinliklerini kullanıyorsanız kullanıcılarınıza önce bu uzantıyı yüklemelerini söyleyin.

Yukarıdaki örnek, us-central1 bölgesinde "varsayılan" Firebase kanalı için bir özel etkinlik tetikleyicisi oluşturur. Parametreleri kullanarak kanal adını ve bölgeyi ö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}