وقتی یک افزونه ایجاد میکنید، منطق آن را با استفاده Cloud Functions مینویسید، تقریباً به همان روشی که یک تابع مینویسید که فقط در پروژه خودتان استفاده میشود. شما توابع خود را در فایل extension.yaml
تعریف میکنید و وقتی کاربران افزونه شما را نصب میکنند، این توابع در پروژه آنها مستقر میشوند.
برای اطلاعات کلی در مورد استفاده Cloud Functions به مستندات Cloud Functions مراجعه کنید.
Cloud Functions نسل اول و دوم
فایربیس از هر دو نسل اول و دوم Cloud Functions پشتیبانی میکند. با این حال، افزونههای فایربیس در حال حاضر محدودیتهایی در مورد اینکه کدام نسل از توابع ابری را میتوانید با انواع خاصی از تریگر استفاده کنید، دارند. به همین دلیل، بسیاری از افزونهها شامل ترکیبی از توابع نسل اول و دوم هستند.
پشتیبانی از تولید تابع برای هر نوع تریگر در زیر ذکر شده است.
ملاحظات ویژه
برخی از تعاریف توابع از شما میخواهند اطلاعاتی را مشخص کنید که در فایل
extension.yaml
نیز مشخص شدهاند. برای مثال، Cloud Firestore یک متدdocument()
دارد که الگوی سند مورد نظر برای مشاهده را مشخص میکند و اعلان مربوطه آن درextension.yaml
دارای یک فیلدresource
است که همین را مشخص میکند.در این شرایط، پیکربندی مشخص شده در فایل
extension.yaml
استفاده میشود و پیکربندی مشخص شده در تعریف تابع نادیده گرفته میشود.معمولاً برای مستندسازی، مقدار پیکربندیشده را صرف نظر از موارد دیگر، در تعریف تابع مشخص میکنند. مثالهای این صفحه از این الگو پیروی میکنند.
SDK نسل اول Cloud Functions 1st gen SDK) دارای یک متد
functions.config()
و دستورfunctions:config:set
CLI است که میتوانید برای کار با مقادیر پارامتری در توابع نسل اول از آن استفاده کنید. این تکنیک در Cloud Functions منسوخ شده است و به هیچ وجه در یک افزونه کار نخواهد کرد . در عوض، از ماژولfunctions.params
(توصیه میشود) یاprocess.env
استفاده کنید.
استفاده از تایپاسکریپت
بیشتر مستندات مربوط به توسعه افزونه شخصی شما، گردشهای کاری را با استفاده از جاوا اسکریپت برای Cloud Functions for Firebase شرح میدهند. با این حال، میتوانید توابع خود را با استفاده از TypeScript بنویسید.
در واقع، تمام افزونههای رسمی Firebase با TypeScript نوشته شدهاند. میتوانید این افزونهها را برای برخی از بهترین شیوهها برای استفاده از TypeScript برای افزونه خود بررسی کنید.
اگر توابع افزونه خود را در TypeScript مینویسید، قبل از نصب افزونه باید موارد زیر را انجام دهید:
کد منبع توابع افزونه خود را به جاوا اسکریپت کامپایل کنید.
دستور
firebase ext:dev:init
به شما امکان میدهد TypeScript را برای نوشتن توابع خود انتخاب کنید. این دستور یک افزونه کامل و قابل نصب و همچنین یک اسکریپت ساخت را در اختیار شما قرار میدهد که میتوانید باnpm run build
آن را اجرا کنید .در فایل
package.json
خود، مطمئن شوید که فیلدmain
را به جاوا اسکریپت تولید شده اشاره میدهید.اگر افزونه خود را از منبع محلی نصب یا آپلود میکنید، ابتدا فایلهای TypeScript خود را کامپایل کنید.
تریگرهای تابع پشتیبانی شده
تریگرهای HTTP
یک تابع فعالشده توسط HTTP در یک نقطه پایانی عمومی https
مستقر میشود و هنگام دسترسی به نقطه پایانی اجرا میشود.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شده توسط HTTP، به بخش «فراخوانی توابع از طریق درخواستهای HTTP» در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
اعلان منبع (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
توابع قابل فراخوانی
توابع قابل فراخوانی مشابه توابع فعالشده توسط HTTP هستند، اما پروتکلی را پیادهسازی میکنند که فراخوانی آنها را از کد سمت کلاینت شما راحت میکند.
برای اطلاعات بیشتر در مورد استفاده از توابع قابل فراخوانی، به بخش توابع فراخوانی از برنامه خود در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
اعلان منبع (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
محرکهای تابع زمانبندیشده
یک تابع زمانبندیشده بر اساس یک برنامهی قابل تنظیم، بهطور مکرر اجرا میشود.
برای اطلاعات بیشتر در مورد نوشتن توابع زمانبندیشده، به توابع زمانبندیشده در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
اعلان منبع (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
زیرفیلدهای موجود برای scheduleTrigger
به شرح زیر است:
میدان | توضیحات |
---|---|
schedule (الزامی) | فرکانسی که میخواهید تابع با آن اجرا شود. این فیلد میتواند رشتههایی را بپذیرد که از هر دو سینتکس استفاده میکنند (قرار دادن رشتهها در داخل تک کوتیشن الزامی است):
|
timeZone (اختیاری) | منطقه زمانی که برنامه در آن اجرا خواهد شد.
|
اگر میخواهید کاربران بتوانند هنگام نصب افزونه شما، زمانبندی را پیکربندی کنند، یک پارامتر جدید به فایل extension.yaml
خود اضافه کنید و در اعلان resource
تابع خود به این پارامتر ارجاع دهید:
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
محرکهای صف وظایف
یک تابع صف وظایف یا در رویدادهای چرخه حیات افزونه شما یا زمانی که به صورت دستی با استفاده از متد TaskQueue.enqueue()
در Admin SDK به صف وظایف افزونه شما اضافه میشود، فعال میشود.
برای اطلاعات بیشتر در مورد نوشتن توابعی که رویدادهای چرخه عمر را مدیریت میکنند ، به بخش مدیریت رویدادهای چرخه عمر افزونه خود مراجعه کنید.
برای اطلاعات بیشتر در مورد نوشتن توابع صف وظایف، به «در صف قرار دادن توابع با وظایف ابری» در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
اعلان منبع (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
ویژگی taskQueueTrigger
را روی {}
یا مجموعهای از گزینهها که محدودیتهای نرخ و رفتار تلاش مجدد صف وظیفه را تنظیم میکنند، تنظیم کنید (به بخش تنظیم صف وظیفه مراجعه کنید).
اگر میخواهید تابع خود را در رویدادهای چرخه عمر افزونهتان فعال کنید، رکوردهای lifecycleEvents
را با نام تابع و یک پیام پردازش اختیاری اضافه کنید که هنگام شروع پردازش در کنسول Firebase نمایش داده میشود.
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 زمانی اجرا میشود که یک رویداد Analytics مشخصشده ثبت شود.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شده توسط Analytics، به محرکهای Google Analytics در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
اعلان منبع (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: ...
اگر میخواهید کاربران بتوانند رویداد Analytics را طوری پیکربندی کنند که هنگام نصب افزونه شما به آن گوش دهد، یک پارامتر جدید به فایل extension.yaml
خود اضافه کنید و در تعریف resource
تابع خود به پارامتر ارجاع دهید:
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
یک تابع فعالشده توسط احراز هویت، زمانی اجرا میشود که یک کاربر ایجاد یا حذف شود.
برای اطلاعات بیشتر در مورد نوشتن توابع فعالشده توسط احراز هویت، به بخش محرکهای احراز هویت فایربیس در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
اعلان منبع (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: ...
جدول زیر نحوه مشخص کردن هر یک از انواع رویدادهای Authentication پشتیبانی شده را نشان میدهد:
ماشه رویداد Cloud Functions | eventType | توضیحات |
---|---|---|
onCreate() | providers/firebase.auth/eventTypes/user.create | کاربر جدید ایجاد شد |
onDelete() | providers/firebase.auth/eventTypes/user.delete | کاربر حذف شد |
Cloud Firestore
یک تابع فعالشده توسط Cloud Firestore هنگام ایجاد، بهروزرسانی یا حذف یک سند اجرا میشود.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شده توسط Firestore، به محرکهای Cloud Firestore در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
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.
// ...
});
اعلان منبع (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: ...
جدول زیر نحوه مشخص کردن هر یک از انواع رویدادهای پشتیبانی شده Cloud Firestore را نشان میدهد:
ماشه رویداد Cloud Functions | eventType | توضیحات |
---|---|---|
onCreate() | providers/cloud.firestore/eventTypes/document.create | سند جدید ایجاد شد |
onDelete() | providers/cloud.firestore/eventTypes/document.delete | سند حذف شد |
onUpdate() | providers/cloud.firestore/eventTypes/document.update | سند بهروزرسانی شد |
onWrite() | providers/cloud.firestore/eventTypes/document.write | سند ایجاد شده، حذف شده یا به روز شده است |
اگر میخواهید کاربران هنگام نصب افزونه شما بتوانند مسیر سند را پیکربندی کنند، یک پارامتر جدید به فایل extension.yaml
خود اضافه کنید و در اعلان resource
تابع خود به پارامتر ارجاع دهید:
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-triggered زمانی اجرا میشود که پیامی در یک موضوع خاص منتشر شود.
برای اطلاعات بیشتر در مورد نوشتن توابع Pub/Sub-triggered به بخش Pub/Sub triggers در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
اعلان منبع (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: ...
اگر میخواهید کاربران هنگام نصب افزونه شما بتوانند موضوع Pub/Sub را پیکربندی کنند، یک پارامتر جدید به فایل extension.yaml
خود اضافه کنید و در اعلان resource
تابع خود به این پارامتر ارجاع دهید:
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-triggered) زمانی اجرا میشود که مسیری که با یک الگوی مشخص مطابقت دارد، ایجاد، بهروزرسانی یا حذف شود.
برای اطلاعات بیشتر در مورد نوشتن توابع تحریکشده توسط RTDB، به بخش محرکهای پایگاه داده بلادرنگ در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
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.
// ...
});
اعلان منبع (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: ...
جدول زیر نحوه مشخص کردن هر یک از انواع رویدادهای پشتیبانی شده Cloud Firestore را نشان میدهد:
ماشه رویداد Cloud Functions | eventType | توضیحات |
---|---|---|
onCreate() | providers/google.firebase.database/eventTypes/ref.create | دادهها ایجاد شدند |
onDelete() | providers/google.firebase.database/eventTypes/ref.delete | دادهها حذف شدند |
onUpdate() | providers/google.firebase.database/eventTypes/ref.update | دادهها بهروزرسانی شدند |
onWrite() | providers/google.firebase.database/eventTypes/ref.write | دادههای ایجاد شده، حذف شده یا بهروزرسانی شده |
اگر میخواهید کاربران بتوانند هنگام نصب افزونه شما، مسیر مورد نظر برای مشاهده را پیکربندی کنند، یک پارامتر جدید به فایل extension.yaml
خود اضافه کنید و در اعلان resource
تابع خود به این پارامتر ارجاع دهید:
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 زمانی اجرا میشود که الگوی پارامتر یک پروژه بهروزرسانی شود.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شده توسط Remote Config، به بخش محرکهای Remote Config در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
اعلان منبع (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
یک تابع فعالشده توسط فضای ذخیرهسازی ابری، زمانی اجرا میشود که یک شیء ایجاد، بایگانی یا حذف شود، یا زمانی که فرادادههای آن تغییر کند.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شده توسط Storage، به بخش محرکهای Cloud Storage در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
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) => {
// ...
});
اعلان منبع (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: ...
جدول زیر نحوه مشخص کردن هر یک از انواع رویدادهای پشتیبانی شده Cloud Storage را نشان میدهد:
ماشه رویداد Cloud Functions | eventType | توضیحات |
---|---|---|
onFinalize() | google.storage.object.finalize | شیء ایجاد شده |
onMetadataUpdate() | google.storage.object.metadataUpdate | ابرداده شیء بهروزرسانی شد |
onArchive() | google.storage.object.archive | شیء بایگانی شد |
onDelete() | google.storage.object.delete | شیء حذف شده |
اگر میخواهید کاربران هنگام نصب افزونه شما بتوانند مخزن ذخیرهسازی را پیکربندی کنند، یک پارامتر جدید به فایل extension.yaml
خود اضافه کنید و در اعلان resource
تابع خود به این پارامتر ارجاع دهید:
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
یک تابع فعالشده توسط آزمایشگاه تست، زمانی اجرا میشود که یک ماتریس تست، تستهای خود را به پایان برساند.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شده توسط آزمایشگاه تست، به محرکهای آزمایشگاه تست فایربیس در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل اول)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
اعلان منبع (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 فعال میشوند
یک تابع Crashlytics -triggered زمانی اجرا میشود که Crashlytics یک هشدار منتشر کند.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شونده با هشدار، به محرکهای Firebase Alerts در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل دوم)
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) => {
// ...
});
اعلان منبع (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: ...
میتوانید از مقادیر زیر برای alerttype
استفاده کنید:
-
crashlytics.newFatalIssue
-
crashlytics.newNonfatalIssue
-
crashlytics.regression
-
crashlytics.stabilityDigest
-
crashlytics.velocity
-
crashlytics.newAnrIssue
هشدار Performance Monitoring فعال میشود
یک تابع فعالشدهی Performance Monitoring زمانی اجرا میشود که Performance Monitoring یک هشدار منتشر کند.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شونده با هشدار، به محرکهای Firebase Alerts در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل دوم)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
اعلان منبع (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 فعال میشود
یک تابع فعالشده توسط App Distribution زمانی اجرا میشود که App Distribution یک هشدار منتشر کند.
برای اطلاعات بیشتر در مورد نوشتن توابع فعال شونده با هشدار، به محرکهای Firebase Alerts در مستندات Cloud Functions مراجعه کنید.
تعریف تابع (فقط نسل دوم)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
اعلان منبع (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: ...
میتوانید از مقادیر زیر برای alerttype
استفاده کنید:
-
appDistribution.newTesterIosDevice
-
appDistribution.inAppFeedback
محرکهای رویداد سفارشی (Eventarc)
یک تابع فعالشده توسط Eventarc زمانی اجرا میشود که یک نوع رویداد خاص در یک کانال خاص منتشر شود.
برای اطلاعات بیشتر در مورد نوشتن توابع تحریکشده توسط Eventarc، به بخش «ایجاد و مدیریت محرکهای رویداد سفارشی» در مستندات Cloud Functions مراجعه کنید.
همچنین میتوانید رویدادهایی را از افزونههای خود منتشر کنید تا به کاربران راهی برای وارد کردن منطق سفارشی در افزونه شما ارائه شود. به بخش «استفاده از منطق سفارشی ارائه شده توسط توسعهدهنده در یک افزونه» مراجعه کنید.
تعریف تابع (فقط نسل دوم)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
اعلان منبع (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: ...
این کانال باید هنگام نصب افزونه شما وجود داشته باشد. برای مثال، اگر به رویدادهای سفارشی از افزونه دیگری که کانال را ایجاد میکند وابسته هستید، به کاربران خود دستور دهید که ابتدا آن افزونه را نصب کنند.
مثال بالا یک تریگر رویداد سفارشی برای کانال "پیشفرض" Firebase در ناحیه us-central1
ایجاد میکند. میتوانید نام کانال و ناحیه را با استفاده از پارامترها قابل تنظیم کنید. به عنوان مثال:
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}