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, או שאתה יכול לפרסם אירועים מותאמים אישית משלך ופונקציות הפעלה בתגובה להם.

כל האירועים המותאמים אישית תואמים את פורמט האירועים JSON של CloudEvents ומתפרסמים ב- Eventarc . חלים דמי שימוש ב-Eventarc.

הפעל פונקציות עם אירועים מותאמים אישית

אתה יכול לפרסם אירועים מותאמים אישית (או להשיג אירועים מתוספי Firebase) ולהפעיל פונקציות בתגובה לאותם אירועים על ידי יישום הזרימה הבסיסית הזו:

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

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

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

פרסם אירוע בערוץ

אירועי Eventarc מתפרסמים בערוצים . ערוצים הם דרך לקבץ אירועים קשורים ולנהל הרשאות גישה. כאשר אתה מתקין תוסף או פורס פונקציה שצורכת אירועים מותאמים אישית, Firebase יוצר אוטומטית ערוץ ברירת מחדל בשם firebase באזור us-central1 . Firebase Admin SDK מספק חבילת משנה של eventarc לפרסום בערוצים.

כדי לפרסם אירוע משרת מהימן (או פונקציה אחרת) באמצעות ערוץ ברירת המחדל:

import {getEventarc} from 'firebase-admin/eventarc';

getEventarc().channel().publish({
    type: 'achieved-leaderboard',
    subject: 'Welcome to the top 10',
    data: {
      message: 'You have achieved the nth position in our leaderboard!  To see . . .'
    }
});

בנוסף ליצירה אוטומטית של ערוץ ברירת המחדל, Firebase מגדיר את משתנה הסביבה EVENTARC_CLOUD_EVENT_SOURCE , המציין את מקור האירוע. אם אתה מפרסם אירועים מחוץ ל-Cloud Functions for Firebase, תצטרך להוסיף במפורש את שדה source במטען האירועים שלך.

טפל באירועים עם onCustomEventPublished

אתה יכול לטפל בכל האירועים המותאמים אישית, כולל אירועי הרחבות, עם המטפל 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 שסופקו על-ידי האירוע.

פרסם וטפל באירועים בערוצים שאינם ברירת מחדל

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

במקרים שבהם אירוע מותאם אישית מתפרסם בערוץ שאינו ברירת מחדל, יהיה עליך לציין את הערוץ בקוד הפונקציה שלך. לדוגמה, אם ברצונך לטפל באירועים המתפרסמים בערוץ שאינו ברירת מחדל עבור מיקום 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) => { ... });