وقتی افزونهای ایجاد میکنید، منطق آن را بااستفاده از Cloud Functions مینویسید،
تقریباً به همان روشی که تابعی را مینویسید که فقط در
پروژه خودتان استفاده میشود. توابع خود را در فایل extension.yaml اعلام میکنید و
وقتی کاربران افزونه شما را نصب میکنند، این توابع در پروژه آنها
مستقر میشوند.
برای اطلاعات کلی درباره استفاده از Cloud Functions، به اسناد Cloud Functions مراجعه کنید.
نسل اول و دوم Cloud Functions
Firebase از هر دو نسل اول و نسل دوم Cloud Functions پشتیبانی میکند. بااینحال، «افزونههای Firebase» درحالحاضر محدودیتهایی درباره اینکه از کدام نسل تابع ابری میتوانید با انواع خاصی از راهانداز استفاده کنید دارد. بههمین دلیل، بسیاری از افزونهها شامل ترکیبی از توابع نسل اول و دوم هستند.
پشتیبانی از تولید تابع برای هر نوع راهانداز در زیر ذکر شده است.
ملاحظات ویژه
برخیاز تعریفهای تابع از شما میخواهند اطلاعاتی را مشخص کنید که در فایل
extension.yamlنیز مشخص شده است. برای مثال، Cloud Firestore دارای یک روشdocument()است که الگوی سند را برای تماشا مشخص میکند، و اعلامیه مربوطه آن درextension.yamlدارای یک فیلدresourceاست که همان را مشخص میکند.در این شرایط، از پیکربندی مشخصشده در فایل
extension.yamlاستفاده میشود و پیکربندی مشخصشده در تعریف تابع نادیده گرفته میشود.صرفنظر از این موضوع، مشخص کردن مقدار پیکربندیشده در تعریف تابع برای مستندسازی، روشی رایج است. مثالهای این صفحه از این الگو پیروی میکنند.
کیت توسعه نرمافزار نسل اول Cloud Functions دارای روش
functions.config()و فرمان میانای خط فرمانfunctions:config:setاست که میتوانید از آن برای کار با مقادیر پارامتریشده در توابع نسل اول استفاده کنید. این تکنیک در Cloud Functions منسوخ شده است و در افزونه اصلاً کار نخواهد کرد. درعوض، از واحدfunctions.params(توصیهشده) یاprocess.envاستفاده کنید.
استفاده از TypeScript
بیشتر اسناد مربوط به توسعه افزونه خودتان گردش کارهای استفاده از جاوا اسکریپت برای Cloud Functions for Firebase را شرح میدهد. اما درعوض میتوانید توابعتان را بااستفاده از TypeScript بنویسید.
درواقع، همه افزونههای Firebaseرسمی به زبان TypeScript نوشته شدهاند. میتوانید آن افزونهها را برای برخیاز روالهای مطلوب استفاده از TypeScript برای افزونهتان مرور کنید.
اگر توابع افزونهتان را در TypeScript مینویسید، باید قبلاز نصب افزونهتان کارهای زیر را انجام دهید:
کد منبع توابع افزونهتان را به جاوا اسکریپت کامپایل کنید.
فرمان
firebase ext:dev:initبه شما امکان میدهد TypeScript را برای نوشتن توابع خود انتخاب کنید. فرمان افزونه کامل و قابلنصبی را دراختیارتان قرار میدهد و همچنین اسکریپت ساختی که میتوانید باnpm run buildاجرا کنید.در فایل
package.json، مطمئن شوید فیلدmainرا به جاوا اسکریپت تولیدشده ارجاع دهید.اگر افزونهتان را از منبع محلی نصب یا بارگذاری میکنید، ابتدا فایلهای TypeScript را کامپایل کنید.
راهاندازهای تابع پشتیبانیشده
راهاندازهای HTTP
تابع فراخوانیشونده با اچتیتیپی در نقطه پایان عمومی https مستقر میشود و
هنگام دسترسی به نقطه پایان اجرا میشود.
برای کسب اطلاعات درباره نوشتن توابع راهاندازیشده با اچتیتیپی، به فراخوانی توابع ازطریق درخواستهای اچتیتیپی در مستندات 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 به صف تکلیف افزونه شما اضافه میشود.
برای اطلاعات درباره نوشتن توابعی که رویدادهای چرخه حیات را مدیریت میکنند، مدیریت رویدادهای چرخه حیات افزونه را ببینید.
برای اطلاعات درباره نوشتن توابع صف کار، توابع Enqueue با Cloud Tasks را در اسناد 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
تابع راهاندازیشده با اصالتسنجی زمانی اجرا میشود که کاربری ایجاد یا حذف شود.
برای کسب اطلاعات درباره نوشتن توابع راهاندازیشده با اصالتسنجی، به راهاندازهای اصالتسنجی Firebase در سند 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 زمانی اجرا میشود که پیامی در موضوع خاصی منتشر شود.
برای کسب اطلاعات درباره نوشتن توابع راهاندازیشده توسط Pub/Sub، به راهاندازهای Pub/Sub در اسناد 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 زمانی اجرا میشود که مسیری مطابق با الگوی مشخصشده ایجاد، بهروزرسانی، یا حذف شود.
برای کسب اطلاعات درباره نوشتن توابع راهاندازیشده با RTDB، راهاندازهای Realtime Database را در اسناد 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
وقتی الگوی پارامتر پروژه بهروز میشود، تابع راهاندازیشده با «پیکربندی از راه دور» اجرا میشود.
برای کسب اطلاعات درباره نوشتن توابع راهاندازیشده با «پیکربندی از راه دور»، راهاندازهای پیکربندی از راه دور را در اسناد 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
تابع راهاندازیشده با 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
تابع راهاندازیشده Test Lab زمانی اجرا میشود که ماتریس آزمایشی آزمایشهایش را بهپایان برساند.
برای کسب اطلاعات درباره نوشتن توابع راهاندازیشده توسط Test Lab، به راهاندازهای Firebase 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 زمانی اجرا میشود که Crashlytics هشداری را منتشر کند.
برای کسب اطلاعات درباره نوشتن توابع راهاندازیشده با هشدار، راهاندازهای هشدارهای Firebase را در اسناد 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.newFatalIssuecrashlytics.newNonfatalIssuecrashlytics.regressioncrashlytics.stabilityDigestcrashlytics.velocitycrashlytics.newAnrIssue
Performance Monitoring راهانداز هشدار
وقتی Performance Monitoring هشداری را منتشر میکند، عملکرد راهاندازیشده توسط Performance Monitoring اجرا میشود.
برای کسب اطلاعات درباره نوشتن توابع راهاندازیشده با هشدار، راهاندازهای هشدارهای Firebase را در اسناد 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 را در اسناد 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.newTesterIosDeviceappDistribution.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}