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

Özel olay tetikleyicileri oluşturun ve yönetin

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Cloud Functions v2 ile, özel olaylara yanıt olarak işlevleri tetikleyebilirsiniz. Bunlar, Cloud Functions için Firebase SDK tarafından yerel olarak desteklenen Firebase olaylarının aksine, özel veya ek olay sağlayıcıları tarafından sağlanan olaylardır.

Genel önizleme sırasında, mevcut özel etkinlikler Firebase Uzantıları tarafından sağlanır. Uygulamanıza bir uzantı yükleyebilir ve ardından bu temel akışta özel olaylara yanıt verebilirsiniz:

  1. Bir veya daha fazla özel etkinlik sağlayan bir uzantı yükleyin.
  2. Bir onCustomEventPublished işleyicisi dağıtarak bir olay türünü işleyin. Bu işlevde, CloudEvent nesnesinde döndürülen yükü ayrıştırın ve uygulamanızın gerektirdiği özel mantığı gerçekleştirin.

Örneğin, uygulamaların büyük resimleri işlemesine yardımcı olmak için tasarlanmış bir uzantı, resmin yeniden boyutlandırılması tamamlandığında bir olay yayınlayabilir. Bu uzantının yüklü olduğu uygulamalar, uygulamadaki bağlantıları görüntünün yeniden boyutlandırılmış sürümlerine işaret edecek şekilde güncelleyerek tamamlama olayını işleyebilir.

Tüm özel olaylar, CloudEvents JSON olay biçimine uygundur. Kullanılabilir olayların listesi ve olay yükünün ayrıntıları gibi önemli bilgiler için belirli bir uzantının belgelerine bakın.

Özel bir olayı işleyin

Yüklü bir uzantıdan kullanılabilecek özel bir olay keşfettikten sonra, bu olayı şu komutla işleyebilirsiniz:
onCustomEventPublished işleyicisi. İlk olarak, bu işleyiciyi, özel mantığınız için Node.js için Firebase Admin SDK'sı ve hataları işlemek için logger SDK'sı ile birlikte Eventarc SDK'sından içe aktarın:

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");

İşlev kodunuzda, olay adını onimageresized örnek işlevinde gösterildiği gibi girin:

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
    });

Her belirli uzantı için, olay nesnesinde döndürülen yük, uygulama akışınız için özel mantık gerçekleştirmek üzere kullanabileceğiniz veriler sağlar. Bu durumda işlev, yeniden boyutlandırılmış görüntü hakkındaki meta verileri Cloud Firestore'daki bir koleksiyona kopyalamak, etkinlik tarafından sağlanan subject dosya adını almak ve etkinlik tarafından sağlanan data meta verileri kaydetmek için Yönetici SDK'sını kullanır.

Varsayılan olmayan bir kanalda bir olayı işleyin

Yukarıdaki örnek, görüntü tamamlama olayının varsayılan kanalda, uzantıda belirtildiği gibi us-central1 varsayılan konumunda yayınlandığını varsayar. Varsayılan olmayan bir kanalda özel bir etkinliğin yayınlandığı durumlarda, işlev kodunuzda kanalı belirtmeniz gerekir. Örneğin, us-west1 konumu için varsayılan olmayan bir kanalda yayınlanan olayları işlemek istiyorsanız, kanalı gösterildiği gibi belirtmeniz gerekir:

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) => { ... });