원격 구성 트리거

새로운 구성 버전 게시 또는 이전 버전으로 롤백을 포함한 Firebase 원격 구성 이벤트에 대한 응답으로 함수를 트리거할 수 있습니다. 이 가이드에서는 템플릿 버전 2개의 차이를 비교하는 원격 구성 백그라운드 함수를 만드는 방법을 설명합니다.

원격 구성 함수 트리거

원격 구성 함수를 트리거하려면 firebase-functions/v2/remoteConfig 하위 패키지를 사용하세요. 이 가이드에 나온 방식으로 템플릿 업데이트에 응답하려면 onConfigUpdated 함수를 사용하여 Firebase Admin SDK와 같은 기타 필수 구성요소와 함께 가져옵니다.

// The Cloud Functions for Firebase SDK to set up triggers and logging.
const {onConfigUpdated} = require("firebase-functions/v2/remoteConfig");
const logger = require("firebase-functions/logger");
// The Firebase Admin SDK to obtain access tokens.
const admin = require("firebase-admin");
admin.initializeApp();
const fetch = require("node-fetch");
const jsonDiff = require("json-diff");

onConfigUpdated에서 반환하는 TemplateVersion 객체에는 버전 번호와 업데이트 시간 같은 템플릿 업데이트의 핵심 메타데이터 필드가 포함되어 있습니다. 또한 업데이트한 사용자의 이메일을 이름 및 이미지(사용 가능한 경우)와 함께 검색할 수 있습니다.

다음은 업데이트된 각 버전과 대체된 버전의 차이를 반환하는 원격 구성 함수의 예시입니다. 이 함수는 템플릿 객체의 versionNumber 필드를 검사하여 새로 업데이트된 현재 버전과 함께 버전 번호가 하나 낮은 이전 버전을 검색합니다.

exports.showconfigdiff = onConfigUpdated((event) => {
  // Obtain the access token from the admin SDK
  return admin.credential.applicationDefault().getAccessToken()
      .then((accessTokenObj) => {
        return accessTokenObj.access_token;
      })
      .then((accessToken) => {
      // Get the version number from the event object
        const currentVersion = event.data.versionNumber;
        const templatePromises = [];
        templatePromises.push(getTemplate(currentVersion, accessToken));
        templatePromises.push(getTemplate(currentVersion - 1, accessToken));
        // Get the templates
        return Promise.all(templatePromises);
      })
      .then((results) => {
        const currentTemplate = results[0];
        const previousTemplate = results[1];
        // Figure out the differences of the templates
        const diff = jsonDiff.diffString(previousTemplate, currentTemplate);
        // Log the difference
        logger.log(diff);

        return null;
      }).catch((error) => {
        logger.error(error);
        return null;
      });
});

이 샘플은 json-diffrequest-promise 모듈을 사용하여 차이를 만들고 템플릿 객체를 가져오기 위한 요청을 빌드합니다. Firebase 클라우드 메시징과 함께 원격 구성 클라이언트 논리를 통합하는 1세대 함수 샘플은 원격 구성 업데이트의 실시간 전파를 참조하세요.