Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

צור וטפל בטריגרים של אירועים מותאמים אישית

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

עם פונקציות ענן (דור שני), אתה יכול להפעיל פונקציות בתגובה לאירועים מותאמים אישית . אלו הם אירועים המסופקים על ידי ספקי אירועים מיוחדים או נוספים, בניגוד לאירועי Firebase הנתמכים באופן מקורי על ידי Firebase SDK for Cloud Functions.

במהלך התצוגה המקדימה הציבורית, אירועים מותאמים אישית זמינים מסופקים על ידי תוספי Firebase. אתה יכול להתקין תוסף באפליקציה שלך ואז להגיב לאירועים מותאמים אישית בזרימה הבסיסית הזו:

  1. התקן תוסף המספק אירוע מותאם אישית אחד או יותר.
  2. טפל בסוג אירוע על ידי פריסת מטפל onCustomEventPublished . בפונקציה זו, נתח את המטען המוחזר באובייקט CloudEvent , ובצע כל לוגיקה מותאמת אישית שהאפליקציה שלך דורשת.

לדוגמה, הרחבה שנועדה לעזור לאפליקציות לעבד תמונות גדולות עשויה לשדר אירוע עם השלמת שינוי גודל התמונה. אפליקציות שמותקנת בהן תוסף זה יוכלו להתמודד עם אירוע ההשלמה על ידי עדכון קישורים באפליקציה כדי להצביע על גרסאות ששנו את גודל התמונה.

כל האירועים המותאמים אישית תואמים את פורמט האירועים של CloudEvents JSON . למידע מרכזי כגון רשימת האירועים הזמינים ופרטי מטען האירועים, עיין בתיעוד של תוסף מסוים.

לטפל באירוע מותאם אישית

לאחר שגילית אירוע מותאם אישית זמין מתוך תוסף מותקן, תוכל לטפל באירוע זה באמצעות
מטפל onCustomEventPublished . ראשית, ייבא את המטפל הזה מה-SDK של Eventarc יחד עם Firebase Admin SDK עבור Node.js עבור הלוגיקה המותאמת אישית שלך ו- logger SDK לטיפול בשגיאות:

const {onCustomEventPublished} = require("firebase-functions/v2/eventarc");
const logger = require("firebase-functions/logger");
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");

בקוד הפונקציה שלך, העבר את שם האירוע כפי שמוצג עבור הפונקציה לדוגמה onimageresized :

exports.onimageresized = onCustomEventPublished(
    "firebase.extensions.storage-resize-images.v1.complete",
    (event) => {
      logger.info("Received image resize completed event", event);
      // For example, write resized image details into Firestore.
      return getFirestore()
          .collection("images")
          .doc(event.subject.replace("/", "_")) // original file path
          .set(event.data); // resized images paths and sizes
    });

עבור כל הרחבה מסוימת, המטען המוחזר באובייקט האירוע מספק נתונים שבהם תוכל להשתמש כדי לבצע לוגיקה מותאמת אישית עבור זרימת היישום שלך. במקרה זה, הפונקציה משתמשת ב-SDK של Admin כדי להעתיק מטא-נתונים על התמונה שגודלה שונה לאוסף ב-Cloud Firestore, קבלת שם הקובץ subject שסופק על-ידי האירוע, ושמירת מטא- data שסופקו על-ידי האירוע.

טפל באירוע בערוץ שאינו ברירת מחדל

הדוגמה למעלה מניחה שאירוע השלמת התמונה מתפרסם בערוץ ברירת המחדל, במיקום ברירת המחדל us-central1 כפי שצוין בהרחבה. במקרים שבהם אירוע מותאם אישית מתפרסם בערוץ שאינו ברירת מחדל, יהיה עליך לציין את הערוץ בקוד הפונקציה שלך. לדוגמה, אם ברצונך לטפל באירועים המתפרסמים בערוץ שאינו ברירת מחדל עבור מיקום us-west1 , עליך לציין את הערוץ כפי שמוצג:

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const func = onCustomEventPublished(
    {
      eventType: "firebase.extensions.storage-resize-images.v1.complete",
      channel: "locations/us-west1/channels/firebase",
      region: "us-west1",
    },
    (event) => { ... });