وقتی یک افزونه ایجاد میکنید، منطق آن را با استفاده Cloud Functions مینویسید، تقریباً به همان روشی که تابعی را مینویسید که فقط در پروژه خود استفاده میشود. شما توابع خود را در فایل extension.yaml
اعلام میکنید و زمانی که کاربران پسوند شما را نصب میکنند، این توابع در پروژه آنها مستقر میشوند.
برای اطلاعات کلی در مورد استفاده Cloud Functions به مستندات Cloud Functions مراجعه کنید.
Cloud Functions نسل 1 و 2
Firebase از Cloud Functions نسل اول و نسل دوم پشتیبانی می کند. با این حال، افزونههای Firebase در حال حاضر محدودیتهایی در مورد اینکه کدام نسل از عملکرد ابری را میتوانید با انواع خاصی از ماشهها استفاده کنید، دارند. به همین دلیل، بسیاری از برنامه های افزودنی شامل ترکیبی از توابع نسل 1 و 2 هستند.
پشتیبانی از تولید تابع برای هر نوع ماشه در زیر ذکر شده است.
ملاحظات خاص
برخی از تعاریف تابع از شما می خواهند که اطلاعاتی را که در فایل
extension.yaml
نیز مشخص شده است، مشخص کنید. به عنوان مثال، Cloud Firestore یک متدdocument()
دارد که الگوی سند برای تماشا را مشخص میکند، و اعلان مربوطه آن درextension.yaml
دارای یک فیلدresource
است که همان را مشخص میکند.در این مواقع از پیکربندی مشخص شده در فایل
extension.yaml
استفاده می شود و پیکربندی مشخص شده در تعریف تابع نادیده گرفته می شود.معمول است که مقدار پیکربندی شده را در تعریف تابع بدون توجه به مستندسازی مشخص کنید. نمونه های موجود در این صفحه از این الگو پیروی می کنند.
Cloud Functions 1st Gen SDK دارای یک متد
functions.config()
وfunctions:config:set
CLI است که می توانید از آن برای کار با مقادیر پارامتر شده در توابع نسل اول استفاده کنید. این تکنیک در 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
یک تابع راه اندازی شده توسط 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()
's Admin SDK به صورت دستی به صف وظایف برنامه افزودنی اضافه می شود.
برای اطلاعات در مورد نوشتن توابع که رویدادهای چرخه حیات را مدیریت میکنند ، به Handle your eventcyclescycles مراجعه کنید.
برای اطلاعات در مورد نوشتن توابع صف وظایف ، به توابع ردیف کردن با وظایف Cloud در مستندات 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، محرکهای 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-triggered زمانی اجرا می شود که پیامی برای یک موضوع خاص منتشر می شود.
برای اطلاعات در مورد نوشتن توابع Pub/Sub-trigger شده، به راهاندازهای 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
یک تابع ایجاد شده توسط پایگاه داده بیدرنگ زمانی اجرا می شود که مسیری مطابق با یک الگوی مشخص ایجاد، به روز یا حذف شود.
برای اطلاعات مربوط به نوشتن توابع راهاندازی شده توسط 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
یک تابع راه اندازی شده توسط 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
یک تابع راهاندازی شده توسط آزمایشگاه آزمایشی زمانی اجرا میشود که یک ماتریس آزمایشی آزمایشات خود را به پایان برساند.
برای اطلاعاتی در مورد نوشتن توابع راهاندازی شده توسط آزمایشگاه آزمایشی، محرکهای 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 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)
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
استفاده کنید
-
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)
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
هنگامی که 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)
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
استفاده کنید
-
appDistribution.newTesterIosDevice
-
appDistribution.inAppFeedback
محرک های رویداد سفارشی (Eventarc)
یک تابع فعال شده توسط Eventarc زمانی اجرا می شود که یک نوع رویداد خاص در یک کانال خاص منتشر شود.
برای اطلاعات در مورد نوشتن توابع فعال شده توسط Eventarc، به ایجاد و رسیدگی به محرکهای رویداد سفارشی در مستندات Cloud Functions مراجعه کنید.
همچنین می توانید رویدادها را از برنامه های افزودنی خود منتشر کنید تا به کاربران راهی برای درج منطق سفارشی در برنامه افزودنی خود ارائه دهید. به استفاده از منطق سفارشی ارائه شده توسط توسعه دهنده در یک برنامه افزودنی مراجعه کنید.
تعریف عملکرد (فقط نسل دوم)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
اعلام منبع (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: ...
وقتی برنامه افزودنی شما نصب شد، کانال باید از قبل وجود داشته باشد. برای مثال، اگر به رویدادهای سفارشی از برنامه افزودنی دیگری که کانال را ایجاد می کند وابسته هستید، به کاربران خود دستور دهید ابتدا آن برنامه افزودنی را نصب کنند.
مثال بالا یک راهانداز رویداد سفارشی برای کانال 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}